一个servlet里实现增删改查

一个servlet里实现增删改查,第1张

第一步: 连接数据库

第二部: 查询出数据(可以加入条件) 并通过( jstl \ el )展现到页面

第三部 : 在你展现数据的最后添加一列( *** 作列:有删除、修改)

第四部:进行相关 *** 作

你的sql 语句有问题,然后抛出异常了。所有最终执行的的是 catch中的代码

把sql改成:

select  from [user] where uname=''

user 是系统关键字,所以需要加上 [ ]来表示表名称。

<beans>

<bean id="dataSource"

class="orgapachecommonsdbcpBasicDataSource" destroy-method="close">

<property name="driverClassName">

<value>netsourceforgejtdsjdbcDriver</value>

</property>

<property name="url">

<value>jdbc:jtds:sqlserver://127001:1433/Sample</value>

</property>

<property name="username">

<value>test</value>

</property>

<property name="password">

<value>baidu</value>

</property>

</bean>

<bean id="transactionManager"

class="orgspringframeworkjdbcdatasourceDataSourceTransactionManager">

<property name="dataSource">

<ref local="dataSource" />

</property>

</bean>

<bean id="userDAO" class="netxiaxindaoUserDAO">

<property name="dataSource">

<ref local="dataSource" />

</property>

<property name="transactionManager">

<ref local="transactionManager" />

</property>

</bean>

</beans>

配置中包含了三个节点:

Ø dataSource

这里我们采用了apache dhcp组件提供的DataSource实现,并为其配置了JDBC驱动、数据库URL、用户名和密码等参数。

Ø transactionManager

针对JDBC DataSource类型的数据源,我们选用了DataSourceTransactionManager

作为事务管理组件。

如果需要使用基于容器的数据源(JNDI),我们可以采用如下配置:

<bean id="dataSource"

class="orgspringframeworkjndiJndiObjectFactoryBean">

<property name="jndiName">

<value>jdbc/sample</value>

</property>

</bean>

<bean id="transactionManager"

class="orgspringframeworktransactionjtaJtaTransactionManager"/>

Ø userDAO

申明了一个UserDAO Bean,并为其指定了dataSource和

transactionManger资源。

UserDAO对应的代码如下:

public class UserDAO {

private DataSource dataSource;

private PlatformTransactionManager transactionManager;

public PlatformTransactionManager getTransactionManager() {

return transactionManager;

}

public void setTransactionManager(PlatformTransactionManager

transactionManager) {

thistransactionManager = transactionManager;

}

public DataSource executeTestSource() {

return dataSource;

}

public void setDataSource(DataSource dataSource) {

thisdataSource = dataSource;

}

public void insertUser() {

TransactionTemplate tt =new TransactionTemplate(getTransactionManager());

ttexecute(new TransactionCallback() {

public Object doInTransaction(TransactionStatus status) {

JdbcTemplate jt = new JdbcTemplate(executeTestSource());

jtupdate(

"insert into users (username) values ('xiaxin');");

jtupdate(

"insert into users (id,username) values(2,

'erica');");

return null;

}

});

}

}

可以看到,在insertUser方法中,我们引入了一个新的模板类:orgspringframeworktransactionsupportTransactionTemplate。 TransactionTemplate封装了事务管理的功能,包括异常时的事务回滚,以及 *** 作成功后的事务提交。和JdbcTemplate一样,它使得我们无需在琐碎的try/catch/finally代码中徘徊。

在doInTransaction中进行的 *** 作,如果抛出未捕获异常将被自动回滚,如果成功执行,则将被自动提交。

第一步是:你要创建一个web前端

为了方便我的书写,我的代码密码为password,请你原谅

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ">

import javautilList;

import comicssxxxdomainUser;

public interface UserDAO {

public int login(User user);

public User queryUser(String userId) throws Exception;

public int updateUser(User user);

public int addUser(User user);

public int deleteUser(String userId) throws Exception;

public List getAllUsers();

public User getUser(String userName) throws Exception;

}

---------------------------------------

下面是实现类

import javasqlConnection;

import javasqlPreparedStatement;

import javasqlResultSet;

import javasqlSQLException;

import javasqlStatement;

import javautilArrayList;

import javautilList;

import comxxxxxxcommonConnectionFactory;

import comxxxxxxcommonDatabaseUtils;

import comxxxxxxdaoUserDAO;

import comxxxxxxdomainUser;

public class UserDAOImpl implements UserDAO {

public List getAllUsers() {

Connection conn=ConnectionFactorygetConnection();

List users=new ArrayList();

Statement stmt=null;

ResultSet rs=null;

try {

stmt=conncreateStatement();

rs=stmtexecuteQuery("select from training");

User user=null;

while(rsnext()){

user=new User();

usersetUserId(rsgetString("userid"));

usersetUserName(rsgetString("username"));

usersetUserPass(rsgetString("userpass"));

usersadd(user);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}finally{

DatabaseUtilsrelease(rs, stmt, conn);

}

return users;

}

public int login(User user) {

int flag=0;

Connection conn=ConnectionFactorygetConnection();

PreparedStatement pstm=null;

ResultSet rs=null;

try {

pstm=connprepareStatement("select from train_user where user_name= and user_pass=");

pstmsetString(1, usergetUserName());

pstmsetString(2, usergetUserPass());

rs=pstmexecuteQuery();

if(rsnext()){

if(rsgetString("admin")equals("1")){

flag=1;

}else if(rsgetString("admin")equals("0")){

flag=2;

}else{

flag=0;

};

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}finally{

DatabaseUtilsrelease(rs, pstm, conn);

}

return flag;

}

public User queryUser(String userId) {

Connection conn = ConnectionFactorygetConnection();

PreparedStatement pstm = null;

ResultSet rs = null;

User user = null;

try {

pstm = connprepareStatement("select from test where userid=");

pstmsetString(1, userId);

rs = pstmexecuteQuery();

if(rsnext()){

user = new User();

usersetUserId(rsgetString("userid"));

usersetUserName(rsgetString("username"));

usersetUserPass(rsgetString("userPass"));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}finally{

DatabaseUtilsrelease(rs, pstm, conn);

}

return user;

}

public int updateUser(User user) {

Connection conn = ConnectionFactorygetConnection();

PreparedStatement pstm = null;

ResultSet rs = null;

int flag = 0;

try {

pstm = connprepareStatement("update test set username=, userpass= where userid=");

pstmsetString(1, usergetUserName());

pstmsetString(2, usergetUserPass());

pstmsetString(3, usergetUserId());

flag = pstmexecuteUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}finally{

DatabaseUtilsrelease(rs, pstm, conn);

}

return flag;

}

public int addUser(User user) {

Connection conn=ConnectionFactorygetConnection();

PreparedStatement pstm=null;

int flag=0;

try {

pstm=connprepareStatement("insert into train_user(user_id,user_name,user_pass,train_id,train_nature,admin) values(,,,,,0)");

pstmsetString(1,usergetUserId());

pstmsetString(2,usergetUserName());

pstmsetString(3,usergetUserPass());

pstmsetString(4,usergetTrain_id());

pstmsetString(5,usergetTrain_nature());

pstmexecuteUpdate();

flag=1;

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}finally{

DatabaseUtilsrelease(null, pstm, conn);

}

return flag;

}

public int deleteUser(String userId) throws Exception {

Connection conn = ConnectionFactorygetConnection();

PreparedStatement pstm = null;

int flag = 0;

try {

pstm = connprepareStatement("delete from test where userid=");

pstmsetString(1, userId);

flag = pstmexecuteUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}finally{

DatabaseUtilsrelease(null, pstm, conn);

}

return flag;

}

public User getUser(String userName) throws Exception {

// TODO Auto-generated method stub

return null;

}

}

方法/步骤

1、Eclipse实现与数据库的连接,需要添加相应的jar包。打开Eclipse,在要与数据库连接的项目中选择New-->Folder,如图所示:

2、输入承载jar包的文件夹名称lib,如图所示:

3、将MySQL数据库连接的jar包复制到lib 文件夹中,然后选择该jar包,右击 ,选择Build Path-->Add to build path,如图所示:

4、接下来就是代码连接数据库,输入以下代码,如图所示:

具体如下:

1、简介

编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,是计算体系按照该计算方式运行,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

2、汇编程序

汇编程序。使用汇编语言编写计算机程序,程序员仍然需要十分熟悉计算机系统的硬件结构,所以从程序设计本身上来看仍然是低效率的、繁琐的。但正是由于汇编语言与计算机硬件系统关系密切,在某些特定的场合,如对时空效率要求很高的系统核心程序以及实时控制程序等,迄今为止汇编语言仍然是十分有效的程序设计工具。

3、执行原理

计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。这种将高级编程硬件程序设计语言编写的源程序转换到机器目标程序的方式有两种:解释方式和编译方式。

以上就是关于一个servlet里实现增删改查全部的内容,包括:一个servlet里实现增删改查、验证用户名和密码匹配问题,为什么每次返回的都是false数据库中确实有这条数据。、JAVA jdbcTemplate更改数据库,如何创建新的连接,把值赋给jdbcTemplate。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9476215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存