(一)基本思路
1.添加数据:配置对应的Action类使用属性驱动自动设值数据,通过执行sql语句
向数据库插入数据。
2.查询所有数据:将查询出的所有数据赋值Action中的List<User> list对象,在前端页面
使用EL表达式获取list集合中的user对象数据。
3.删除一条记录:通过获取url请求参数,获取id属性实现删除。
4.修改数据:先通过id查询出数据显示在表单,再把修改的数据插入数据库。
(二)实例演示
1.创建User类
package com.wang;
public class User {
private int id;
private String username;
private String pwd;
public User() {
}
public User(int id, String username, String string) {
super();
this.id = id;
this.username = username;
this.pwd = string;
}
....setter和getter方法.........
}
2.创建UserDao类
package com.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.wang.User;
public class UserDao {
private String url ="jdbc:mysql://localhost:3306/test";
private String driver="com.mysql.jdbc.Driver";
private String user = "root";
private String password="root";
private Connection conn=null;
private PreparedStatement ps=null;
private ResultSet rs=null;
private List<User> users=new ArrayList<User>();
public Connection connectionDB(){
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//1.添加数据
public int insertData(User user) throws SQLException {
String sql="insert into student(username,password)values(?,?)";
ps = connectionDB().prepareStatement(sql);
ps.setString(1,user.getUsername());
ps.setString(2,user.getPwd());
int count=ps.executeUpdate();
if(count>0) {
System.out.println("数据成功插入!");
}else {
System.out.println("数据添加失败!");
}
return count;
}
//2.修改数据
public int UpdateData(User user) throws SQLException {
String sql="update student set username=?, password=? where id=?";
ps = connectionDB().prepareStatement(sql);
ps.setString(1,user.getUsername());
ps.setString(2,user.getPwd());
ps.setInt(3,user.getId());
int count=ps.executeUpdate();
if(count>0) {
System.out.println("数据修改成功!");
}else {
System.out.println("数据修改失败!");
}
return count;
}
//3.删除数据
public void DeleteData(User user) throws SQLException {
String sql="delete from student where id=?";
ps = connectionDB().prepareStatement(sql);
ps.setInt(1,user.getId());
int count=ps.executeUpdate();
if(count>0) {
System.out.println("数据删除成功!");
}else {
System.out.println("数据删除失败!");
}
}
//4.查询数据
public List<User> getAllUser() throws SQLException{
String sql="select*from student";
ps = connectionDB().prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()) {
users.add(new User(rs.getInt("id"),rs.getString("username"),rs.getString("password")));
}
return users;
}
public User getUser(int id) throws SQLException {
User user = null;
String sql="select*from student where id=?";
ps = connectionDB().prepareStatement(sql);
ps.setInt(1, id);
rs=ps.executeQuery();
while(rs.next()) {
user=new User(rs.getInt("id"),rs.getString("username"),rs.getString("password"));
}
return user;
}
}
3.创建UserService类
package com.UserService;
import java.sql.SQLException;
import java.util.List;
import com.dao.UserDao;
import com.wang.User;
public class UserService {
UserDao u = new UserDao();
// 1.添加数据
public int insertData(User user) throws SQLException {
int count=u.insertData(user);
return count;
}
public int UpdateData(User user) throws SQLException {
int count=u.UpdateData(user);
return count;
}
public void DeleteData(User user) throws SQLException {
u.DeleteData(user);
}
public List<User> getAllUser() throws SQLException {
return u.getAllUser();
}
public User getUser(int id) throws SQLException {
return u.getUser(id);
}
}
4.创建UserAction类
package com.wang;
import java.sql.SQLException;
import java.util.List;
import com.UserService.UserService;
import com.opensymphony.xwork2.Action;
public class UserAction {
private User user;
private List<User> users;
UserService us=new UserService();
public String query() throws SQLException {
users=us.getAllUser();
return Action.SUCCESS;
}
public String toupdata() throws SQLException {
user=us.getUser(user.getId());
System.out.println(user.getId());
return Action.SUCCESS;
}
public String update() throws SQLException {
us.UpdateData(user);
System.out.println(user.getId());
return Action.SUCCESS;
}
public String insert() throws SQLException {
System.out.println(user.getUsername());
us.insertData(user);
System.out.println(user.getUsername());
return Action.SUCCESS;
}
public String delete() throws SQLException {
us.DeleteData(user);
return Action.SUCCESS;
}
....setter和getter方法.........
}
5.配置Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<package name="helloworld" extends="struts-default">
<action name="query" class="com.wang.UserAction" method="query">
<result name="success">/list.jsp</result>
</action>
<action name="toupdate" class="com.wang.UserAction"
method="toupdata">
<result name="success">/update.jsp</result>
</action>
<action name="update" class="com.wang.UserAction"
method="update">
<result name="success" type="redirectAction">query.action
</result>
</action>
<action name="add" class="com.wang.UserAction" method="insert">
<result type="redirectAction">query.action</result>
</action>
<action name="delete" class="com.wang.UserAction"
method="delete">
<result type="redirectAction">query.action</result>
</action>
</package>
</struts>
6.创建SetCharacterEncodingFilter类(解决乱码)
package com.wang.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SetCharacterEncodingFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
//1.传递控制到下一个过滤器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
}
}
7.配置SetCharacterEncodingFilter过滤器
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>com.wang.filter.SetCharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
8.add.jsp页面
<form action="add">
账号:<input type="text" name="user.username" /><br/><br/>
密码:<input type="password" name="user.pwd" /> <br/><br/>
<input type="submit" value="添加" />
</form>
9.update.jsp页面
<form action="update">
<input type="hidden"name="user.id" value="${user.id} " />
账号:<input type="text" name="user.username" value="${user.username} "/><br/><br/>
密码:<input type="text" name="user.pwd" value="${user.pwd}"/> <br/><br/>
<input type="submit" value="修改" />
</form>
10.list.jsp页面
<table border="1"width="100%">
<tr>
<td>编号</td>
<td>姓名</td>
<td>密码</td>
<td colspan="3">操作</td>
</tr>
<c:forEach items="${users}" var="u">
<tr>
<td>${u.id }</td>
<td>${u.username }</td>
<td>${u.pwd }</td>
<!-- 链接的正确写法 -->
<td><a href="add.jsp">添加</a></td>
<td><a href="delete?user.id=${u.id}">删除</a></td>
<td><a href="toupdate?user.id=${u.id}">修改</a></td>
</c:forEach>
</table>
11.index.jsp页面
<a href="query">显示数据</a>
结果演示: