struts1+jdbc增删改查

来源:互联网 发布:七牛云加速域名 编辑:程序博客网 时间:2024/06/05 12:46

struts1的小demo!

数据库建表

工程目录如下:


1.创建web工程,添加jar包.

2.配置web.xml。。(struts1的请求处理是基于servlet完成的)

 <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
           <param-name>config</param-name>
           <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

3.添加struts1的配置文件struts-config.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>

内容

</struts-config>
4.配置jsp页面

home.jsp

<body>
    <a href="http://localhost:8080/myStruts1/login.jsp">登录</a><br/>
    <a href="http://localhost:8080/myStruts1/register.jsp">注册</a>
</body>



login.jsp

<title>登录</title>
</head>
<body>
    <form action="login.do" method="post">
            用户名:<input type="text" name="username">
             密码:<input type="password" name="password">
            <input type="submit" value="登录">
    </form>
    
    <%
    String msg = (String)request.getAttribute("message");
    if(msg != null){
        out.print("<script  language = 'javascript'>alert("+ msg +")</script>");
    }
    %>
</body>

输入用户名、密码,点击登录


public class LoginForm extends ActionForm{
    /**
     *
     */
    private static final long serialVersionUID = 753565084538894694L;
    private int id;
    
    private String username;
    
    private String password;
    
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

这个demo采用的jdbc连接数据库,所以

public class DB {
    public static Connection getConnection() throws SQLException{
        String driverName = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost/struts1Demo";
        String userName = "root";
        String passWord = "root";
        Connection conn = null;
        try {
            Class.forName(driverName);
            conn = DriverManager.getConnection(url, userName, passWord);
            conn.setAutoCommit(false);//支持事物
            System.out.println("connection success");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
    
    public static void closeConnection(Connection conn){
        try {
            if(conn != null){
                conn.close();
            }
            conn = null;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void closeStatement(Statement stmt){
        try {
            if(stmt != null){
                stmt.close();
            }
            stmt = null;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    public static void closeResultSet(ResultSet rs){
        try {
            if(rs != null){
                rs.close();
            }
            rs = null;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
}

登录时,根据用户名、密码查找该用户在数据库中是否存在

public class SearchDao {
    public User findByUsername(String username , String password){
        Connection conn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User user = null;
        try {
            conn = DB.getConnection();
            String sql = "select * from userInfo where username = ? and password = ?";
            pstm = conn.prepareStatement(sql);
            pstm.setString(1, username);
            pstm.setString(2, password);
            rs = pstm.executeQuery();
            if(rs.next()){
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return user;
    }
}

在LoginAction中

public class LoginAction extends Action{
    @Override  
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
       String str = "";
       /** 1. 获取ActonForm封装的请求对象 */
      // User login = (User) form;
      // System.out.println(login.getUsername());
       SearchDao ser = new SearchDao();
       String username = request.getParameter("username");
       String password = request.getParameter("password");
       User user = ser.findByUsername(username,password);
       if(user == null){
           request.setAttribute("message", "用户名或密码不能为空");
           str = "login";
           
       }else{
           FindAllUserDao findAllUserDao = new FindAllUserDao();
           List<User> users = findAllUserDao.find();
           request.setAttribute("users", users);
           str = "success";
       }
      return mapping.findForward(str);
    }
    
}

在struts-config.xml中配置

<!--  该元素主要用来配置表单验证的类 -->
    <form-beans>
        <form-bean name="loginForm" type = "com.pojo.LoginForm"/>
    </form-beans>

若登录成功,进入主页面


点击添加,进入注册页面

register.jsp

<body>
    <form action="addUser.do" method="post">
                用户名<input type="text" name="username"><br/><br/><br/>
                密码<input type="password" name="password"><br/><br/><br/>
                <input type="submit" value="提交">
                <input type="reset" value="取消">
    </form>
</body>

点击提交,在登录,显示已经拥有的账号信息,显示所有信息页面userList.jsp

<body>
<form action=" " method="post">
    <table border="1">
        <thead >
            <tr>
                <th>编号</th>
                <th>用户名</th>
                <th>密码</th>
                <th colspan="2">操作</th>
            </tr>
        </thead>
        
        <%
           List<User> list= (List) request.getAttribute("users");
           if(list != null){
               Iterator iter = list.iterator();
               while(iter.hasNext()){
                   User user = (User)iter.next();
                   
               %>
        <tbody>
            <tr>
                <td><input type="text" name="id" value="<%=user.getId() %>"></td>
                <td><input type="text" name="username" value="<%=user.getUsername() %>"></td>
                <td><input type="text" name="password" value="<%=user.getPassword() %>"></td>
                <td>
                    <a href="updateUser.do?id=<%=user.getId() %>">修改</a>
                </td>
                 <td>
                    <a href="deleteUser.do?id=<%=user.getId() %>">删除</a>
                </td>
            </tr>
            <%
             }
               
           }
           %>
           <a href="http://localhost:8080/myStruts1/register.jsp">添加</a>
        </tbody>
        
    </table>
   </form>
</body>
</html>


success.jsp页面中主要是显示注册成功

<body>
    
    <script language = "javascript">  
      alert("成功!");  
      window.location.href="http://localhost:8080/myStruts1/login.jsp";
      </script>
    
</body>

public class AddUserDao {
    public void add(User user){
        Connection conn = null;
        PreparedStatement pstm = null;
        
        try {
            conn = DB.getConnection();
            String sql = "insert into userInfo(username , password) values(?,?)";
            pstm = conn.prepareStatement(sql);
            //pstm.setInt(1, user.getId());
            pstm.setString(1, user.getUsername());
            pstm.setString(2, user.getPassword());
            pstm.executeUpdate();
            System.out.println("*****");
            conn.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

public class AddAction extends Action{
    
    public ActionForward execute(ActionMapping mapping, ActionForm form,  
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {  
       
        AddUserDao addUserDao = new AddUserDao();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        
        addUserDao.add(user);
        System.out.println("#########");
        return mapping.findForward("add");
    }
}

点击修改,根据struts-config.xml中的跳转配置,<a href="updateUser.do?id=<%=user.getId() %>">修改</a>所以调用updataUser.action, 即 <action path="/updateUser"  scope="request" type="com.action.FindUserByIdAction" validate="false">

struts-config.xml中的跳转配置

 <action-mappings>
          <!-- action标签中的path就是截取到的url,type就是对应的action全路径,name是这个action对应的form。 -->  
         <action path = "/login" name = "User" scope = "request"  type = "com.action.LoginAction" validate = "false">  
                <forward name = "success" path = "/userList.jsp"/>  
                <forward name = "login" path = "/login.jsp"/>  
          </action>
          
          <action path="/addUser" name="AddUserForm" scope="request" type="com.action.AddAction" validate="false">
                <forward name="add" path="/success.jsp"></forward>
          </action>
          
          <action path="/updateUser"  scope="request" type="com.action.FindUserByIdAction" validate="false">
                <forward name="success" path="/oneUserUpdate.jsp"></forward>
          </action>
          
          <action path="/update"  scope="request" type="com.action.UpdateAction" validate="false">
                <forward name="success" path="/userList.jsp"></forward>
          </action>
          
          <action path="/findAllUser"  scope="request" type="com.action.FindAllAction" validate="false">
                <forward name="findAllUser" path="/userList.jsp"></forward>
          </action>
          
           <action path="/deleteUser"  scope="request" type="com.action.DeleteUserAction" validate="false">
                <forward name="success" path="/userList.jsp"></forward>
          </action>

    </action-mappings>
    <message-resources parameter="MessageResources" />


public class FindUserByIdAction extends Action{

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse httpservletresponse)
            throws Exception {
        UserByIdDao userByIdDao = new UserByIdDao();
        String id = request.getParameter("id");
        int id1 = Integer.parseInt(id);
        User u = userByIdDao.getUserById(id1);
        System.out.println(u.getUsername());
        request.setAttribute("user", u);
        return mapping.findForward("success");
    }
    
}


public class UserByIdDao {
    public User getUserById(int id){
        Connection conn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User user = null;
        try {
            conn = DB.getConnection();
            String sql = "select * from userInfo where id = ?";
            pstm = conn.prepareStatement(sql);
            pstm.setInt(1, id);
            rs = pstm.executeQuery();
            if(rs.next()){
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            DB.closeResultSet(rs);
            DB.closeStatement(pstm);
            DB.closeConnection(conn);
        }
        return user;
    }
}

public class UpdateUser {
    public void update(User user){
        Connection conn = null;
        PreparedStatement pstm = null;
        try {
            conn = DB.getConnection();
            String sql = "update userInfo set username= ? , password = ? where id = ?";
            pstm = conn.prepareStatement(sql);
            pstm.setString(1, user.getUsername());
            pstm.setString(2, user.getPassword());
            pstm.setInt(3, user.getId());
            pstm.executeUpdate();
            
            conn.commit();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
    
    public User getUserById(int id){
        Connection  conn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User user = null;
         try {
            conn = DB.getConnection();
            String sql = "select * from userInfo where id = ?";
            pstm = conn.prepareStatement(sql);
            pstm.setInt(1,id);
            rs = pstm.executeQuery();
            if(rs.next()){
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
            }
        } catch (Exception e) {
            e.printStackTrace();
    }
         return user;
    }
}


public class FindAllAction extends Action{
    public ActionForward excute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
                    throws Exception{
        FindAllUserDao findAllUserDao = new FindAllUserDao();
       List<User> users= findAllUserDao.find();
       request.setAttribute("users", users);
        return mapping.findForward("findAllUser");
    }
}

public class FindUserByIdAction extends Action{

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse httpservletresponse)
            throws Exception {
        UserByIdDao userByIdDao = new UserByIdDao();
        String id = request.getParameter("id");
        int id1 = Integer.parseInt(id);
        User u = userByIdDao.getUserById(id1);
        System.out.println(u.getUsername());
        request.setAttribute("user", u);
        return mapping.findForward("success");
    }
    
}

public class UserByIdDao {
    public User getUserById(int id){
        Connection conn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User user = null;
        try {
            conn = DB.getConnection();
            String sql = "select * from userInfo where id = ?";
            pstm = conn.prepareStatement(sql);
            pstm.setInt(1, id);
            rs = pstm.executeQuery();
            if(rs.next()){
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            DB.closeResultSet(rs);
            DB.closeStatement(pstm);
            DB.closeConnection(conn);
        }
        return user;
    }
}


public class DeleteUserAction extends Action{
    DeleteUserDao deleteUserDao = new DeleteUserDao();
    FindAllUserDao findAllUserDao = new FindAllUserDao();
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        String id  = request.getParameter("id");
        int id1 = Integer.parseInt(id);
        deleteUserDao.delete(id1);
        List<User> users = findAllUserDao.find();
        request.setAttribute("users", users);
        return mapping.findForward("success");
    }
    
}

public class DeleteUserDao {
    public boolean delete(int id){
        Connection conn = null;
        PreparedStatement pstm = null;
        int count = 0;
        try {
            conn = DB.getConnection();
            String sql = "delete from userInfo where id = ?";
            pstm = conn.prepareStatement(sql);
            pstm.setInt(1, id);
            count = pstm.executeUpdate();
           conn.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
                try {
                    if(pstm!= null){
                        pstm.close();}
                    if(conn!=null){
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
       if(count == 0){
           return false;
       }else{
           return true;
       }
    }
}

public class FindAllUserDao {
    public List<User> find(){
        Connection conn = null;
        ResultSet rs = null;
        User user = null;
        List<User> listUser = new ArrayList<User>();
        try {
            conn = DB.getConnection();
            String sql = "select * from userInfo ";
            rs = conn.prepareStatement(sql).executeQuery();
            while(rs.next()){
                user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                listUser.add(user);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listUser;
    }
}
修改页面oneUserUpdate.jsp
<body>
    <form action="update.do" method="post">
        <table border="1">
            <tr>
                <td>编号</td>
                <td>用户名</td>
                <td>密码</td>
            </tr>
            <tr>
            <%
                User u =(User)request.getAttribute("user");
                
            %>
                   <td><input type="text" name="id" value="<%=u.getId() %>"></td>
                   <td><input type="text" name="username" value="<%=u.getUsername() %>"></td>
                   <td><input type="text" name="password" value="<%=u.getPassword() %>"></td>
                </tr>
        </table>
        <input type="submit" value="确定">
    </form>
</body>

0 0
原创粉丝点击