Struts2实现增删查改(十九)

(一)基本思路

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>

结果演示:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_36279318/article/details/79801407