第一个纯servlet MVC开发用户管理系统总结

本文详细介绍了使用Servlet进行MVC模式开发用户管理系统的经验,涵盖了数据库连接、CRUD操作、分页功能的实现,以及关键代码解析,帮助读者理解如何在没有框架的情况下构建一个简单的Web应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


MVC 原意就是 数据模型(modle)、视图(view)、控制器(controller)



    • 每张表都有一个数据类(modle类  内含对属性的操作方法(get和set))、一个service方法和一个控制器与之相对应,在写项目的时候尽量把对一类事务(增删改)的操作放在一个控制器内。下面的项目我把增删改查  全部放在了一个控制器内。


      在该项目中,涉及一个表的操作,所以我就写了一个控制器(UserClServlet),对表的增删改查都在该控制器内。各个view页面通过传递一个参数type给控制器来辨别是属于哪种操作,再近一步做对数据的处理。对数据库的所有操作都UsersService里面,控制器通过调用UsersService里面的方法来完成对数据库的增删改查操作。

      首先创建了一个User类  并生成设置和改变属性的方法    代码如下:
              package com.mxf.domain;
      public class Users {
          String name;
          String password;
          int id;
          public int getId() {
              return id;
          }
          public void setId(int id) {
              this.id = id;
          }
          public String getName() {
              return name;
          }
          public void setName(String name) {
              this.name = name;
          }
          public String getPassword() {
              return password;
          }
          public void setPassword(String password) {
              this.password = password;
          }
          
      }

      然后为该类提供了service方法,包括 增删改查 和分页的部分方法
      代码如下:
              package com.mxf.service;
      import java.sql.ResultSet;
      import java.sql.SQLException;
      import java.util.ArrayList;
      import com.mxf.domain.Users;
      import com.mxf.util.SQLUtil;
      public class UsersService {
          
          //增加
          public boolean AddUser(Users user)
          {
              boolean flag = true;
              
              String sql = "insert into user values (?,?,?)";
              String []parameters ={user.getId()+"",user.getName(),user.getPassword()};
              try {
                  SQLUtil.executeUpdate(sql, parameters);
              } catch (Exception e) {
                  // TODO: handle exception
                  flag = false;
              }
              return flag;
          }
          
          
          public Users getUserById (String id)
          {
              Users users = new Users();
              String sql = "select * from user where id=?";
              String []parameters = {id};
              ResultSet rs = SQLUtil.executeQuery(sql, parameters);
              try {
                  if(rs.next())
                  {
                      users.setId(rs.getInt(1));
                      users.setName(rs.getString(2));
                      users.setPassword(rs.getString(3));
                  }
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }finally{
                  SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);
              }
              
              return users;
          }
          
          //修改
          public boolean UpdateUsers(Users users)
          {
              boolean flag = true;
              
              String sql = "UPDATE USER SET userName=?,userpwd=? WHERE id=?";
              String []parameters = {users.getName(),users.getPassword(),users.getId()+""};
              
              try {
                  SQLUtil.executeUpdate(sql, parameters);
              } catch (Exception e) {
                  // TODO: handle exception
                  flag=false;
              }
              
              return flag;
          }
          
          //删除
          public boolean delectUsers(String id)
          {
              boolean flag = true;
              
              String sql = "delete from user where id=?";
              String []parameters = {id};
              
              try {
                  SQLUtil.executeUpdate(sql, parameters);
              } catch (Exception e) {
                  // TODO: handle exception
                  flag = false;
              }
              return flag;
          }
          //验证
          public boolean checkUsers(Users users)
          {
              boolean flag = false;
              String sql = "select * from user where userName=? and userpwd=?";
              String [] parameters = {users.getName(),users.getPassword()};
              ResultSet rs = SQLUtil.executeQuery(sql, parameters);
              try {
                  if(rs.next())
                  {
                      flag = true;
                  }
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }finally{
                  SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);
              }
              return flag;
          }
          
          //分页实现
          public ArrayList getUsersByPage(int pageNow,int pageSize)
          {
              ArrayList<Users> arrayList = new ArrayList<Users>();
              String sql = " SELECT * FROM  USER ORDER BY id LIMIT "+(pageNow-1)*pageSize+","+pageSize+"";
              ResultSet rs=SQLUtil.executeQuery(sql, null);
              try {
                  while(rs.next())
                  {
                      Users u = new Users();
                      u.setId(rs.getInt(1));
                      u.setName(rs.getString(2));
                      u.setPassword(rs.getString(3));
                      arrayList.add(u);
                  }
                  
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }finally{
                  SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);
              }
              
              return arrayList;
          }
          
          //分页 得到PageCount
          public int getPageCount(int pageSize)
          {
              int rowCount = 0;
              
              String sql = "select count(*) from user";
              ResultSet rs = SQLUtil.executeQuery(sql, null);
              try {
                  rs.next();
                  rowCount= rs.getInt(1);
              } catch (SQLException e) {
                  e.printStackTrace();
              }finally{
                  SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);
              }
              
              return (rowCount-1)/pageSize + 1;
          }
          
          //查找
          public Users selectUserById(String id)
          {
              Users user = new Users();
              
              String sql = "select * from user where id=?";
              String [] parameters ={id};
              ResultSet rs = SQLUtil.executeQuery(sql, parameters);
              try {
                  while(rs.next())
                  {
                      user.setId(rs.getInt(1));
                      user.setName(rs.getString(2));
                      user.setPassword(rs.getString(3));
                  }
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }finally{
                  SQLUtil.close(SQLUtil.getConn(), SQLUtil.getPs(), rs);
              }
              
              return user;
          }
      }

      接下来是控制器   主要负责 验证、增删改查的任务
      代码如下:
              package com.mxf.controller;
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import com.mxf.domain.Users;
      import com.mxf.service.UsersService;
      public class UserClServlet extends HttpServlet {
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
              request.setCharacterEncoding("utf-8");
              PrintWriter out = response.getWriter();
              String type = request.getParameter("type");
              UsersService usersService=new UsersService();
              if(type.equals("del"))
              {
                  String id = request.getParameter("id");
                  if(usersService.delectUsers(id))
                  {
                      request.setAttribute("info""删除");
                      request.getRequestDispatcher("/Ok").forward(request, response);
                  }else
                  {
                      request.setAttribute("info""删除");
                      request.getRequestDispatcher("/Err").forward(request, response);
                  }
              }else if(type.equals("gotoUpdate"))
              {
                  String id = request.getParameter("id");
                  Users users = usersService.getUserById(id);
                  request.setAttribute("userinfo", users);
                  request.getRequestDispatcher("/Update").forward(request, response);
              }else if(type.equals("update"))
              {
                  String username = request.getParameter("username");
                  String password = request.getParameter("password");
                  String id = request.getParameter("id");
                  Users users = new Users();
                  users.setId(Integer.parseInt(id));
                  users.setName(username);
                  users.setPassword(password);
                  if(usersService.UpdateUsers(users))
                  {
                      request.setAttribute("info""修改");
                      request.getRequestDispatcher("/Ok").forward(request, response);
                  }else
                  {
                      request.setAttribute("info""修改");
                      request.getRequestDispatcher("/Err").forward(request, response);
                  }
              }else if(type.equals("gotoAdd"))
              {
                  request.getRequestDispatcher("/AddServletView").forward(request, response);
              }else if(type.equals("Add"))
              {
                  String id = request.getParameter("id");
                  String username = request.getParameter("username");
                  String password = request.getParameter("password");
                  
                  Users user = new Users();
                  user.setId(Integer.parseInt(id));
                  user.setName(username);
                  user.setPassword(password);
                  if(usersService.AddUser(user))
                  {
                      request.setAttribute("info""添加");
                      request.getRequestDispatcher("/Ok").forward(request, response);
                  }else
                  {
                      request.setAttribute("info""添加");
                      request.getRequestDispatcher("/Err").forward(request, response);
                  }
              }else if(type.equals("selectUser"))
              {
                  String id = request.getParameter("id");
                  Users user = usersService.selectUserById(id);
                  request.setAttribute("userInfo", user);
                  request.getRequestDispatcher("/ResultServlet").forward(request, response);
              }else if(type.equals("LoginCheck"))
              {
                  String username = request.getParameter("username");
                  String password = request.getParameter("password");
                  
                  Users user = new Users();
                  user.setName(username);
                  user.setPassword(password);
                  
                  if(usersService.checkUsers(user))
                  {
                      request.getRequestDispatcher("/MainFrame").forward(request, response);
                  }else
                  {
                      request.setAttribute("error""您的用户名或密码错误!");
                      request.getRequestDispatcher("/LoginServlet").forward(request, response);
                  }
              }
              
          }
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              this.doGet(request, response);
          }
      }

      下面是工具类(数据库的操作)
      代码如下:
              /**
       * sql工具类
       */
      package com.mxf.util;
      import java.sql.*;
      public class SQLUtil {
          private static Connection connnull;
          private static PreparedStatement ps = null;
          private static ResultSet rs = null;
          
          private static String driver = "com.mysql.jdbc.Driver";
          private static String url = "jdbc:mysql://localhost:3306/test";
          private static String pwd = "root";
          private static String user = "root";
          
          static
          {
              try {
                  Class.forName(driver);
              } catch (ClassNotFoundException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
          }
          
          public static Connection getConnection()
          {
              try {
                  conn = DriverManager.getConnection(url,user,pwd);
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              
              return conn;
          }
          
          //统一的查询select
          public static ResultSet executeQuery(String sql,String [] parameters)
          {
              try {
                  conn = getConnection();
                  ps = conn.prepareStatement(sql);
                  if(null!=parameters&&!parameters.equals(""))
                  {
                      for(int i=0;i<parameters.length;i++)
                      {
                          ps.setObject(i+1,parameters[i]);
                      }
                  }
                  rs = ps.executeQuery();
                  
              } catch (SQLException e) {
                  e.printStackTrace();
              }finally{
                  //关闭资源 在调用的最后关闭  现在关闭了   调用者取不到资源
                  //close(connpsrs);
              }
              
              return rs;
          }
          
          //执行一次的增、删、改
          public static void executeUpdate(String sql,String []parameters)
          {
              conn = getConnection();
              try {
                  ps = conn.prepareStatement(sql);
                  if(null != parameters && !parameters.equals(""))
                  {
                      for(int i=0;i<parameters.length;i++)
                      {
                          ps.setObject(i+1, parameters[i]);
                      }
                  }
                   ps.executeUpdate();
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                  throw new RuntimeException(e.getMessage());
              }finally{
                  close(connpsrs);
              }
          }
          
          public static void close(Connection conn,PreparedStatement ps,ResultSet rs)
          {
              if(null != rs)
              {
                  try {
                      rs.close();
                  } catch (SQLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  rs = null;
              }
              
              if(null != ps)
              {
                  try {
                      ps.close();
                  } catch (SQLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  ps = null;
              }
              
              if(null != conn)
              {
                  try {
                      conn.close();
                  } catch (SQLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  conn = null;
              }
          }
          
          public static Connection getConn()
          {
              return conn;
          }
          
          public static PreparedStatement getPs()
          {
              return ps;
          }
          
          public static ResultSet getRs()
          {
              return rs;
          }
      }

      下面是各种页面 即view层  MVC 中的V

      登录界面:
              package com.mxf.view;
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      public class LoginServlet extends HttpServlet {
          
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
              PrintWriter out = response.getWriter();
              request.setCharacterEncoding("utf-8");
              
              out.println("<img src='images/4.jpg'/><hr>");
              out.println("<h1>用户登录<h1><br>");
              out.println("<form action='/UserManager3/UserClServlet?type=LoginCheck' method='post' >");
              out.println("用户名<input type='text' name='username'><br>");
              out.println("密码<input type='password' name='password'><br>");
              out.println("<input type='submit' value='提交'>");
              out.println(" </form>");
              String errorInfo = (String) request.getAttribute("error");
              
              if(null!=errorInfo)
              {
                  out.println(errorInfo);
              }
              out.println("<hr>");
              out.println("<img src='images/5.jpg'/>");
              
              
              
              
          }
          
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              this.doGet(request, response);
          }
      }

      主界面:
              package com.mxf.view;
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      public class MainFrame extends HttpServlet {
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
              PrintWriter out = response.getWriter();
              request.setCharacterEncoding("utf-8");
              String username = request.getParameter("username");
              out.println("<img src='images/4.jpg'/>  欢迎 " + username + " 登录   " +
                      "<a href='/UserManager3/LoginServlet'>重新登录</a>");
              
              out.println("<hr>");
              out.println("<h3>请选择您的操作</h3><br>");
              out.println("<a href='/UserManager3/ManageUsers?username="+username+"'>管理用户</a><br>");
              out.println("<a href='/UserManager3/UserClServlet?type=gotoAdd'>添加用户</a><br>");
              out.println("<a href='/UserManager3/SelectServlet'>查询用户</a><br>");
              out.println("<a href='/UserManager3/LoginServlet'>安全退出</a>");
              
              out.println("<hr>");
              out.println("<img src='images/5.jpg'/>");
          }
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              this.doGet(request, response);
          }
      }

      用户管理界面 (显示多有用户并分页)
              package com.mxf.view;
      import java.io.IOException;
      import java.io.PrintWriter;
      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.PreparedStatement;
      import java.sql.ResultSet;
      import java.util.ArrayList;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import com.mxf.domain.Users;
      import com.mxf.service.UsersService;
      public class ManageUsers extends HttpServlet {
          
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
              request.setCharacterEncoding("utf-8");
              PrintWriter out = response.getWriter();
              String username=request.getParameter("username");
              out.println("<img src='images/4.jpg'/> " +
                      "<a href='/UserManager3/MainFrame?username="+username+"'>返回主界面</a>" +"  "+
                      "<a href='/UserManager3/LoginServlet'>  安全退出</a><hr> ");
              out.println("<h3>管理用户</h3>");
              
              //分页
              int pageNow = 1;    //表示第几页
              int pageSize = 5;   //表示每页显示几行
              int pageCount = 0;   //表示共有多少页
              //接收超链接pageNow数据
              String spageNow = request.getParameter("pageNow");
              
              if(null!=spageNow)
              {
                  pageNow = Integer.parseInt(spageNow);
              }
          
                  UsersService usersService = new UsersService();
                  pageCount = usersService.getPageCount(pageSize);
                  ArrayList<Users> arrayList = usersService.getUsersByPage(pageNow, pageSize);
                  out.println("<table border=1 width=500>");
                  out.println("<tr><th>id</th><th>用户名</th><th>密码</th><th>删除用户</th><th>修改用户</th></tr>");
                  for(Users users:arrayList)
                  {
                      out.println("<tr><td>"+users.getId()+"</td><td>"+
                              users.getName()+"</td><td>"+users.getPassword()+"" +
                                      "</td><td><a href='/UserManager3/UserClServlet?type=del&id="+users.getId()+"'>删除用户</a></td><td>" +
                                      "<a href='/UserManager3/UserClServlet?type=gotoUpdate&id="+users.getId()+"'>修改用户</a></td></tr>");
                  }
                  out.println("</table>");
                  
                  out.print("<a href='/UserManager3/ManageUsers?pageNow="+(pageNow==1?pageNow:(pageNow-1))+"'>上一页</a>");
                  
                  for(int i=1;i<=pageCount;i++)
                  {
                      out.print("<a href='/UserManager3/ManageUsers?pageNow="+i+"'><"+i+"></a>");
                  }
                  
                  out.print("<a href='/UserManager3/ManageUsers?pageNow="+(pageNow==pageCount?pageNow:(pageNow+1))+"'>下一页</a>");
                  
                  out.println("   "+"当前页"+pageNow+"/"+"总页数"+pageCount);
                  
              
              out.println("<hr><img src='images/5.jpg'/>");
              
          }
          
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              this.doGet(request, response);
          }
      }

      修改用户信息页面:
              package com.mxf.view;
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import com.mxf.domain.Users;
      public class Update extends HttpServlet {
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
              request.setCharacterEncoding("utf-8");
              PrintWriter out = response.getWriter();
              Users users = (Users) request.getAttribute("userinfo");
              out.println("<form action='/UserManager3/UserClServlet?type=update' method='post' >");
              out.println("<table border=1 width=500>");
              out.println("<tr><td>id</td><td><input type='text' readonly name='id' value='"+users.getId()+"'></td></tr>");
              out.println("<tr><td>用户名</td><td><input type='text' name='username' value='"+users.getName()+"'></td></tr>");
              out.println("<tr><td>密码</td><td><input type='text' name='password' value='"+users.getPassword()+"'></td></tr>");
              out.println("</table>");
              out.println("<input type='submit' value='修改' >");
              out.println("</form>");
          }
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              this.doGet(request, response);
          }
      }

      添加用户页面:
              package com.mxf.view;

      import java.io.IOException;
      import java.io.PrintWriter;

      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;

      public class AddServletView extends HttpServlet {

      public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      request.setCharacterEncoding("utf-8");
      out.println("<form action='/UserManager3/UserClServlet?type=Add' method='post' >");
      out.println("<table border=1 width=500>");
      out.println("<tr><td>id</td><td><input type='text'  name='id' ></td></tr>");
      out.println("<tr><td>用户名</td><td><input type='text' name='username' ></td></tr>");
      out.println("<tr><td>密码</td><td><input type='text' name='password' ></td></tr>");
      out.println("</table>");
      out.println("<input type='submit' value='添加' >");
      out.println("</form>");
      out.println("<a href='/UserManager3/MainFrame'>返回主界面 </a>" );
      }

      public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      this.doGet(request, response);
      }

      }

      查询用户页面:
              package com.mxf.view;
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      public class SelectServlet extends HttpServlet {
          
          public void doGet(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
              PrintWriter out = response.getWriter();
              request.setCharacterEncoding("utf-8");
              out.println("<form action='/UserManager3/UserClServlet?type=selectUser' method='post' >");
              out.println("<tr><td>id</td><td><input type='text'  name='id' '></td></tr>");
              out.println("<input type='submit' value='查询' ><a href='/UserManager3/MainFrame'>返回主界面</a>" );
              out.println("</form>");
          }
          
          public void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              this.doGet(request, response);
          }
      }

      查询后返回结果页面:
              package com.mxf.view;

      import java.io.IOException;
      import java.io.PrintWriter;

      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;

      import com.mxf.domain.Users;

      public class ResultServlet extends HttpServlet {

      public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      request.setCharacterEncoding("utf-8");
      Users users = (Users) request.getAttribute("userInfo");
      out.println("<table border=1 width=500>");
      out.println("<tr><td>id</td><td>"+users.getId()+"</td></tr>");
      out.println("<tr><td>用户名</td><td>"+users.getName()+"</td></tr>");
      out.println("<tr><td>密码</td><td>"+users.getPassword()+"</td></tr>");
      out.println("</table>");
      out.println("<a href='/UserManager3/MainFrame'>返回主界面 </a>");
      }

      public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      this.doGet(request, response);
      }

      }

    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值