使用Maven开发用户模块的CRUD(增删改查)
使用Maven开发用户模块的CRUD(增删改查)
C语言中文网推出辅导班啦,包括「C语言辅导班、C++辅导班、算法/数据结构辅导班」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习。QQ在线,随时响应!
创建 Web 工程和初始化数据库
首先,按照教程前面的指导创建一个 Web 工程,创建好工程后,下一步就是初始化数据库了。
这里用的是 MySQL 数据库。建议先安装好数据库,然后创建一个数据库,用如下脚本初始化表。
- CREATE TABLE mvn_user(
- ur_id int(11) NOT NULL AUTO_INCREMENT,
- ur_user_name varchar(255) DEFAULT NULL,
- ur_password varchar(255) DEFAULT NULL,
- ur_age int(11) DEFAULT NULL,
- ur_status varchar(255) DEFAULT NULL,
- PRIMARY KEY (ur_id)
- ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
- INSERT INTO mvn_user(ur_user_name,ur_password,ur_age,ur_status) VALUES ('zhangsan', '123', 11, 'Active');
- INSERT INTO mvn_user(ur_user_name,ur_password,ur_age,ur_status) VALUES ('lisi', '123', 13, 'Inactive');
- INSERT INTO mvn_user(ur_user_name,ur_password,ur_age,ur_status) VALUES ('wangwu', '123', 13, 'Active');
添加相关依赖
在整个 Demo 应用中,需要在创建 Web 工程后,额外添加 4 个依赖,分别是 jstl 依赖、MySQL 数据库驱动依赖、JUnit 4.7 依赖和 json-lib 依赖。它们的依赖配置文件如下:
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.34</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.7</version>
- <scope>test</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
- <dependency>
- <groupId>net.sf.json-lib</groupId>
- <artifactId>json-lib</artifactId>
- <version>2.4</version>
- <classifier>jdk15</classifier>
- </dependency>
添加注册代码
MvnUser.java(用户实体类)代码如下所示:
- public class MvnUser {
- private int urId;
- private String urUserName;
- private String urPassword;
- private int urAge;
- private String urStatus;
- public int getUrId() {
- return urId;
- }
- public void setUrId(int urId) {
- this.urId = urId;
- }
- public String getUrUserName() {
- return urUserName;
- }
- public void setUrUserName(String urUserName) {
- this.urUserName = urUserName;
- }
- public String getUrPassword() {
- return urPassword;
- }
- public void setUrPassword(String urPassword) {
- this.urPassword = urPassword;
- }
- public int getUrAge() {
- return urAge;
- }
- public void setUrAge(int urAge) {
- this.urAge = urAge;
- }
- public String getUrStatus() {
- return urStatus;
- }
- public void setUrStatus(String urStatus) {
- this.urStatus = urStatus;
- }
- }
DBConnection.java(连接数据库的公共类)代码如下所示:
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.Properties;
- /**
- * 获取连接的一个工具类,继承Properties,实现如下封装:
- * 1 读取db.properties文件
- * 2 获取Connection连接的方法
- * 3 关闭资源的方法
- *
- * @author Noble
- * @version 1.0
- */
- public class DBConnection extends Properties {
- private static DBConnection DB_CONN = null;
- /**
- * 构造器方法,被私有化,封装读取db.properties逻辑
- *
- */
- private DBConnection() throws Exception {
- InputStream in = DBConnection.class.getClassLoader().getResourceAsStream("db.properties");
- this.load(in);
- // 加载驱动类
- Class.forName(this.getProperty("driverName"));
- }
- /**
- * 单例模式实现,获取DBConnection实例的静态方法
- *
- * @return DBConnection DBConnection实例
- * @throws Exception 初始化db.properties出现问题时,会抛异常
- */
- public static DBConnection getInstance() throws Exception {
- if (DB_CONN == null) {
- DB_CONN = new DBConnection();
- }
- return DB_CONN;
- }
- /**
- * 基于驱动和db.properties中配置的连接数据库的信息,创建一个新连接返回
- *
- * @return Connection 创建的新连接对象
- *
- */
- public Connection getConnection() {
- Connection conn = null;
- String url = this.getProperty("url");
- String userName = this.getProperty("userName");
- String password = this.getProperty("password");
- //
- try {
- conn = DriverManager.getConnection(url, userName, password);
- } catch (Exception e) {
- throw new RuntimeException("数据库连接错误,请与管理员联系");
- }
- return conn;
- }
- /**
- * 关闭操作数据库后的资源
- *
- * @param conn Connection对象
- * @param stmt Statement或Statement的子类对象
- * @param rs ResultSet对象
- */
- public void close(Connection conn, Statement stmt, ResultSet rs) {
- try {
- if (rs != null)
- rs.close();
- if (stmt != null)
- stmt.close();
- if (conn != null)
- conn.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
MvnUserDAO.java(用户的 DAO 持久层类)代码如下所示:
- /**import**/
- /**
- * MvnUser实体对象的持久层代码,封装了对MvnUser实体对象的CRUD方法
- *
- * @author Noble
- * @version 1.0
- */
- public class MvnUserDAO {
- /**
- * 在数据库中,添加一个新的MvnUser对象
- *
- * @param user 需要添加的用户实体对象,该对象需要有用户名、密码、年龄和状态属性
- *
- * @return void
- * @throws RuntimeException 添加失败或出现其它意外
- */
- public void addUser(MvnUser user) {
- DBConnection dbConn = null;
- Connection conn = null;
- PreparedStatement pstmt = null;
- try {
- // 获取DBConnection实例
- dbConn = DBConnection.getInstance();
- String sql = "insert into mvn_user (ur_user_name,ur_password,ur_age,ur_status) values(?,?,?,?)";
- // 获取连接对象
- conn = dbConn.getConnection();
- // 基于连接和sql,获取一个预处理Statement对象
- pstmt = conn.prepareStatement(sql);
- // 设置sql中占位符的值
- pstmt.setString(1, user.getUrUserName());
- pstmt.setString(2, user.getUrPassword());
- pstmt.setInt(3, user.getUrAge());
- pstmt.setString(4, user.getUrStatus());
- // 执行预处理
- pstmt.executeUpdate();
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- // 关闭资源
- if (dbConn != null)
- dbConn.close(conn, pstmt, null);
- }
- }
- /**
- * 更新MvnUser对象。该对象中需要设置年龄、状态和id属性,属性和状态是要更新的新值,id为条件
- *
- * @param user 需要更新的MvnUser对象
- *
- * @return void
- * @throws RuntimeException 更新失败或出现其它意外
- */
- public void update(MvnUser user) {
- DBConnection dbConn = null;
- Connection conn = null;
- PreparedStatement pstmt = null;
- try {
- dbConn = DBConnection.getInstance();
- String sql = "update mvn_user set ur_age=?,ur_status=? where ur_id=?";
- conn = dbConn.getConnection();
- pstmt = conn.prepareStatement(sql);
- pstmt.setInt(1, user.getUrAge());
- pstmt.setString(2, user.getUrStatus());
- pstmt.setInt(3, user.getUrId());
- pstmt.executeUpdate();
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- if (dbConn != null)
- dbConn.close(conn, pstmt, null);
- }
- }
- /**
- * 删除MvnUser对象,该对象中需要有要删除对象的id属性,id属性为删除条件
- *
- * @param user 要删除的MvnUser对象
- *
- * @return void
- * @throws RuntimeException 删除失败或出现其它意外
- */
- public void deleteUser(MvnUser user) {
- DBConnection dbConn = null;
- Connection conn = null;
- PreparedStatement pstmt = null;
- try {
- dbConn = DBConnection.getInstance();
- String sql = "delete from mvn_user where ur_id=?";
- conn = dbConn.getConnection();
- pstmt = conn.prepareStatement(sql);
- pstmt.setInt(1, user.getUrId());
- pstmt.executeUpdate();
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- if (dbConn != null)
- dbConn.close(conn, pstmt, null);
- }
- }
- /**
- * 根据id查询对应的MvnUser对象
- *
- * @param id 要查询的MvnUser对象的id
- * @return MvnUser id对应的MvnUser对象,如果没有对象,返回null
- * @throws RuntimeException 出现意外情况
- */
- public MvnUser findUserById(int id) {
- MvnUser user = null;
- DBConnection dbConn = null;
- Connection conn = null;
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try {
- dbConn = DBConnection.getInstance();
- String sql = "select * from mvn_user where ur_id=?";
- conn = dbConn.getConnection();
- pstmt = conn.prepareStatement(sql);
- pstmt.setInt(1, id);
- rs = pstmt.executeQuery();
- if (rs.next()) {
- user = new MvnUser();
- user.setUrAge(rs.getInt("ur_age"));
- user.setUrId(rs.getInt("ur_id"));
- user.setUrPassword(rs.getString("ur_password"));
- user.setUrStatus(rs.getString("ur_status"));
- user.setUrUserName(rs.getString("ur_user_name"));
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- if (dbConn != null)
- dbConn.close(conn, pstmt, rs);
- }
- return user;
- }
- /**
- * 根据用户名查询对应的MvnUser对象
- *
- * @param userName 要查询的MvnUser对象的用户名
- * @return MvnUser 用户对应的MvnUser对象,如果没有对象,返回null
- * @throws RuntimeException 出现意外情况
- */
- public MvnUser findUserByUserName(String userName) {
- MvnUser user = null;
- DBConnection dbConn = null;
- Connection conn = null;
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try {
- dbConn = DBConnection.getInstance();
- String sql = "select * from mvn_user where ur_user_name=?";
- conn = dbConn.getConnection();
- pstmt = conn.prepareStatement(sql);
- pstmt.setString(1, userName);
- rs = pstmt.executeQuery();
- if (rs.next()) {
- user = new MvnUser();
- user.setUrAge(rs.getInt("ur_age"));
- user.setUrId(rs.getInt("ur_id"));
- user.setUrPassword(rs.getString("ur_password"));
- user.setUrStatus(rs.getString("ur_status"));
- user.setUrUserName(rs.getString("ur_user_name"));
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- if (dbConn != null)
- dbConn.close(conn, pstmt, rs);
- }
- return user;
- }
- /**
- * 查找数据库中所有的用户对象,以List集合的形式返回
- *
- * @return List<MvnUser> 所有用户对象的集合
- * @throws RuntimeException 出现意外情况
- */
- public List<MvnUser> findUsers() {
- List<MvnUser> userList = null;
- DBConnection dbConn = null;
- Connection conn = null;
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try {
- dbConn = DBConnection.getInstance();
- String sql = "select * from mvn_user order by ur_id";
- conn = dbConn.getConnection();
- pstmt = conn.prepareStatement(sql);
- rs = pstmt.executeQuery();
- if (rs != null) {
- userList = new ArrayList<MvnUser>();
- MvnUser user = null;
- while (rs.next()) {
- user = new MvnUser();
- user.setUrAge(rs.getInt("ur_age"));
- user.setUrId(rs.getInt("ur_id"));
- user.setUrPassword(rs.getString("ur_password"));
- user.setUrStatus(rs.getString("ur_status"));
- user.setUrUserName(rs.getString("ur_user_name"));
- userList.add(user);
- }
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- if (dbConn != null)
- dbConn.close(conn, pstmt, rs);
- }
- return userList;
- }
- }
UserService.java(用户服务类)代码如下所示:
- /**
- * 对用CRUD操作的服务层,封装了CRUD在持久化前的必要业务逻辑
- *
- * @author Noble
- * @version 1.0
- */
- public class UserService {
- private MvnUserDAO userDAO = new MvnUserDAO();
- /**
- * 创建新的用户
- *
- * @param user 要创建的用户对象
- * @return void
- * @throws RuntimeException 当用户信息不全或用户名已经存在的时候,都会抛出异常
- */
- public void createUser(MvnUser user) {
- // 验证基本的用户信息
- if (user == null || user.getUrUserName() == null || user.getUrPassword() == null) {
- throw new RuntimeException("用户信息不合法");
- }
- // 根据用户名查询用户对象
- MvnUser u = userDAO.findUserByUserName(user.getUrUserName());
- // 如果能查询到用户对象,说明用户已经存在,抛异常
- if (u != null) {
- throw new RuntimeException(user.getUrUserName() + " 用户已存在");
- }
- // 调用dao代码,添加一个新用户
- userDAO.addUser(user);
- }
- /**
- * 更新id对应用户的年龄和状态信息
- *
- * @param age 要更新用户的新年龄
- * @param status 要更新用户的新状态
- * @param id 要更新用户的id,这是更新的条件
- *
- * @return void
- */
- public void editUser(int age, String status, int id) {
- MvnUser user = this.userDAO.findUserById(id);
- user.setUrAge(age);
- user.setUrStatus(status);
- this.userDAO.update(user);
- }
- public void deleteUser(int id) {
- MvnUser user = this.userDAO.findUserById(id);
- this.userDAO.deleteUser(user);
- }
- public MvnUser searchUser(int id) {
- MvnUser user = this.userDAO.findUserById(id);
- return user;
- }
- public MvnUser searchUser(String userName) {
- MvnUser user = this.userDAO.findUserByUserName(userName);
- return user;
- }
- public List<MvnUser> searchUsers() {
- List<MvnUser> userList = this.userDAO.findUsers();
- return userList;
- }
- }
AddUserServlet.java(添加用户Servlet)代码如下所示:
- /** import **/
- /**
- * Servlet implementation class AddUserServlet
- */
- public class AddUserServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- /**
- * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
- * response)
- */
- protected void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // 获取要添加用户的信息
- String userName = request.getParameter("userName");
- String password = request.getParameter("password");
- String ageStr = request.getParameter("age");
- String status = request.getParameter("status");
- int age = 0;
- try {
- // 将年龄字符串,转变成数字(数据库中需要数字类型)
- age = Integer.parseInt(ageStr);
- } catch (Exception e) {
- }
- // 封装成MvnUser对象
- MvnUser user = new MvnUser();
- user.setUrAge(age);
- user.setUrPassword(password);
- user.setUrStatus(status);
- user.setUrUserName(userName);
- UserService userService = new UserService();
- String msg = "添加成功";
- try {
- // 调用service,创建用户
- userService.createUser(user);
- } catch (Exception e) {
- e.printStackTrace();
- msg = "添加失败:" + e.getMessage();
- }
- // 返回添加后的结果提示信息
- response.setContentType("text/html;charset=UTF-8");
- PrintWriter out = response.getWriter();
- out.print(msg);
- }
- }
DeleteUserServlet.java(删除用户Servlet)代码如下所示:
- /**import**/
- /**
- * Servlet implementation class DeleteUserServlet
- */
- public class DeleteUserServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- /**
- * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
- * response)
- */
- protected void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- String idStr = request.getParameter("id");
- int id = 0;
- try {
- id = Integer.parseInt(idStr);
- } catch (Exception e) {
- }
- UserService userService = new UserService();
- String msg = "删除成功";
- try {
- userService.deleteUser(id);
- } catch (Exception e) {
- e.printStackTrace();
- msg = "删除失败:" + e.getMessage();
- }
- response.setContentType("text/html;charset=UTF-8");
- PrintWriter out = response.getWriter();
- out.print(msg);
- out.flush();
- out.close();
- }
- }
EditUserServlet.java(修改用户Servlet)代码如下所示:
- /** import **/
- /**
- * Servlet implementation class EditUserServlet
- */
- public class EditUserServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- String idStr = request.getParameter("id");
- String status = request.getParameter("status");
- String ageStr = request.getParameter("age");
- int id = 0, age = 0;
- try {
- id = Integer.parseInt(idStr);
- } catch (Exception e) {
- }
- try {
- age = Integer.parseInt(ageStr);
- } catch (Exception e) {
- }
- UserService userService = new UserService();
- String msg = "修改成功";
- try {
- userService.editUser(age, status, id);
- } catch (Exception e) {
- e.printStackTrace();
- msg = "修改失败:" + e.getMessage();
- }
- response.setContentType("text/html;charset=UTF-8");
- PrintWriter out = response.getWriter();
- out.print(msg);
- out.flush();
- out.close();
- }
- }
SearchUserServlet.java(根据用户 Id 或用户名查找用户 Servlet)代码如下所示:
- /** import **/
- /**
- * Servlet implementation class SearchUserServlet
- */
- public class SearchUserServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- protected void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- // 获取查询的方式(根据id查询还是根据用户名查询)
- String type = request.getParameter("type");
- UserService userService = new UserService();
- MvnUser user = null;
- // 根据id查询
- if ("byId".equals(type)) {
- // 获取id
- String idStr = request.getParameter("id");
- int id = 0;
- try {
- id = Integer.parseInt(idStr);
- } catch (Exception e) {
- }
- user = userService.searchUser(id);
- } else {
- // 根据用户名查询
- String userName = request.getParameter("userName");
- user = userService.searchUser(userName);
- }
- // 设置返回的响应为json响应
- response.setContentType("text/json;charset=UTF-8");
- PrintWriter out = response.getWriter();
- // 将查询的用户对象,转变成json格式的字符串,写入响应返回
- out.print(JSONObject.fromObject(user));
- out.flush();
- out.close();
- }
- }
SearchUsersServlet.java(查询所有用户Servlet)代码如下所示:
- /** import **/
- /**
- * Servlet implementation class SearchUsersServlet
- */
- public class SearchUsersServlet extends HttpServlet {
- private static final long serialVersionUID = 1L;
- /**
- * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
- * response)
- */
- protected void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- UserService userService = new UserService();
- List<MvnUser> userList = userService.searchUsers();
- // 将查询出的用户集合,写于request属性中
- request.setAttribute("userList", userList);
- // 转向 userList.jsp页面
- request.getRequestDispatcher("/userList.jsp").forward(request, response);
- }
- }
userList.jsp(显示用户列表 jsp)代码如下所示:
- <%@page contentType="text/html" pageEncoding="UTF-8"%>
- <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <table width="100%" border="1">
- <tr>
- <td width="51" bgcolor="#CCCCCC">
- <div align="center">
- <strong><span class="STYLE2">选择</span></strong>
- </div>
- </td>
- <td width="111" bgcolor="#CCCCCC">
- <div align="center">
- <strong>序号</strong>
- </div>
- </td>
- <td width="137" bgcolor="#CCCCCC">
- <div align="center">
- <strong>用户名</strong>
- </div>
- </td>
- <td width="105" bgcolor="#CCCCCC">
- <div align="center">
- <strong>年龄</strong>
- </div>
- </td>
- <td width="101" bgcolor="#CCCCCC">
- <div align="center">
- <strong>状态</strong>
- </div>
- </td>
- </tr>
- <c:forEach items="${userList }" var="_user" varStatus="status">
- <tr>
- <c:choose>
- <c:when test="${status.index%2==0 }">
- <tr bgcolor="#FFFFFF">
- </c:when>
- <c:otherwise>
- <tr bgcolor="#99FFFF">
- </c:otherwise>
- </c:choose>
- <td><input type="checkbox" name="checkbox" value="${_user.urId }"></td>
- <td>${status.index+1 }</td>
- <td>${_user.urUserName }</td>
- <td>${_user.urAge }</td>
- <td>${_user.urStatus }</td>
- </tr>
- </c:forEach>
- </table>
index.jsp,进入首页(框架 jsp),代码如下所示:
- <%@page contentType="text/html" pageEncoding="UTF-8"%>
- <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>测试用户CRUD操作</title>
- <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
- <script type="text/javascript">
- $(document).ready(function() {
- // 页面加载完后,自动发searchUsersServlet请求,加载到userListDiv中显示
- $("#userListDiv").load("searchUsersServlet");
- });
- // 新增 按钮事件触发函数
- function toAdd() {
- // 获取addForm中的请求信息
- var _data = $("#addForm").serialize();
- //alert(_data);
- // 发添加新用户的Ajax请求
- $.ajax({
- type : 'post',
- url : 'addUserServlet',
- data : _data,
- success : function(msg) {
- alert(msg);
- // 更新最新的用户列表信息
- $("#userListDiv").load("searchUsersServlet");
- }
- });
- }
- function toEdit() {
- var _data = $("#editForm").serialize();
- alert(_data);
- $.ajax({
- type : 'post',
- url : 'editUserServlet',
- data : _data,
- success : function(msg) {
- alert(msg);
- $("#userListDiv").load("searchUsersServlet");
- }
- });
- }
- function toDelete() {
- var chks = $("input[name='checkbox']:checked");
- if (chks.length == 0) {
- alert("请选择要删除的用户");
- } else if (chks.length > 1) {
- alert("一次只能删除一个用户");
- } else {
- var to = confirm("您确定要删除选中的用户?");
- if (to) {
- var _data = "id=" + chks.val();
- $.ajax({
- type : 'post',
- data : _data,
- url : 'deleteUserServlet',
- success : function(msg) {
- alert(msg);
- $("#userListDiv").load("searchUsersServlet");
- }
- });
- }
- }
- }
- function toShowAdd() {
- $("#LayerAdd").show(1000);
- }
- function toShowEdit() {
- //alert($("input[name='checkbox']:checked").length);
- var chks = $("input[name='checkbox']:checked");
- if (chks.length == 0) {
- alert("请选择要编辑的用户");
- } else if (chks.length > 1) {
- alert("一次只能修改一个用户");
- } else {
- var _data = "id=" + chks.val();
- $.ajax({
- type : 'post',
- data : _data,
- url : 'searchUserServlet?type=byId',
- dataType : 'json',
- success : function(msg) {
- $("#editForm #id").val(msg.urId);
- $("#editForm #userName").val(msg.urUserName);
- $("#editForm #age").val(msg.urAge);
- $("#editForm #status").val(msg.urStatus);
- //alert($("#editForm #age").val());
- $("#LayerEdit").show(1000);
- }
- });
- }
- }
- function toCloseAdd() {
- $("#LayerAdd").hide(1000);
- }
- function toCloseEdit() {
- $("#LayerEdit").hide(1000);
- }
- </script>
- <style type="text/css">
- <!--
- .STYLE2 {
- color: #000000
- }
- #LayerAdd {
- position: absolute;
- left: 113px;
- top: 183px;
- width: 434px;
- height: 193px;
- z-index: 1;
- display: none;
- }
- #LayerEdit {
- position: absolute;
- left: 113px;
- top: 183px;
- width: 434px;
- height: 193px;
- z-index: 1;
- display: none;
- }
- -->
- </style>
- </head>
- <body>
- <div id="LayerAdd">
- <form name="addForm" name="addForm" id="addForm" method="post"
- action="">
- <table width="98%" border="0" align="center" cellpadding="0"
- cellspacing="0">
- <tr>
- <td colspan="2" align="center"><strong><BR>添加新用户<br></strong></td>
- </tr>
- <tr>
- <td width="47%" align="right">用户名:</td>
- <td width="53%"><input name="userName" type="text"
- id="userName"></td>
- </tr>
- <tr>
- <td align="right">密码:</td>
- <td><input name="password" type="password" id="password"></td>
- </tr>
- <tr>
- <td align="right">年龄:</td>
- <td><input name="age" type="text" id="age"></td>
- </tr>
- <tr>
- <td colspan="2"> </td>
- </tr>
- <tr>
- <td colspan="2" align="center">
- <input type="button" name="Submit4" value="添加" onclick="toAdd()">
- <input type="button" name="Submit5" value="关闭" onclick="toCloseAdd()">
- </td>
- </tr>
- </table>
- </form>
- </div>
- <div id="LayerEdit">
- <form name="editForm" id="editForm" method="post" action="">
- <input type="hidden" name="id" id="id" />
- <table width="98%" border="0" align="center" cellpadding="0"
- cellspacing="0">
- <tr>
- <td colspan="2" align="center">
- <strong><br>修改用户信息<br> </strong>
- </td>
- </tr>
- <tr>
- <td width="47%" align="right">用户名:</td>
- <td width="53%">
- <input name="userName" type="text" id="userName" readonly="readonly">
- </td>
- </tr>
- <tr>
- <td align="right">年龄:</td>
- <td><input name="age" type="text" id="age"></td>
- </tr>
- <tr>
- <td align="right">状态:</td>
- <td>
- <select name="status" id="status">
- <option value="Active">Active</option>
- <option value="Inactive">Inactive</option>
- <option value="Locked">Locked</option>
- <option value="Deleted">Deleted</option>
- </select>
- </td>
- </tr>
- <tr>
- <td colspan="2"> </td>
- </tr>
- <tr>
- <td colspan="2" align="center">
- <input type="button" name="Submit4" value="修改" onclick="toEdit()">
- <input type="button" name="Submit5" value="关闭" onclick="toCloseEdit()">
- </td>
- </tr>
- </table>
- </form>
- </div>
- <p> </p>
- <p>测试用户CRUD页面</p>
- <table width="539" border="1">
- <tr>
- <td colspan="5" align="right">
- <input type="button" name="Submit" value="新增" onclick="toShowAdd()">
- <input type="submit" name="Submit2" value="修改" onclick="toShowEdit()">
- <input type="button" name="Submit3" value="删除" onclick="toDelete()">
- </td>
- </tr>
- <tr>
- <td>
- <div id="userListDiv"></div>
- </td>
- </tr>
- </table>
- <p> </p>
- </body>
- </html>
db.properties,数据库信息配置文件,代码如下所示:
userName=root
password=root
url=jdbc:mysql://localhost:3306/mvn_db
driverName=com.mysql.jdbc.Driver
构建项目
代码写好了,接下来是在 pom.xml 中添加发布 Web 应用和同 Web 服务器相关的插件,这些在前面的简易 Web 案例中已提到,这里就直接贴出当前 Web 应用到的插件配置,代码如下:
- <build>
- <plugins>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>6.1.26</version>
- <configuration>
- <webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.0.2</version>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
测试
右击“工程”,选择 Run As→Maven build… 命令,在 Goals 后面输入“jetty:run”目标,运行 jetty 服务器。在浏览器中输入“http://localhost:8080/MvnDemo03/index.jsp”进行运行测试。
转载于:https://www.cnblogs.com/buffercache/p/11544337.html
使用Maven开发用户模块的CRUD(增删改查)相关推荐
- java增删改查实例源码_Spring Data JPA 实现简单的CRUD增删改查源码案例
Spring专题 Spring Data JPA 实现简单的CRUD增删改查源码案例 Spring Data JPA旨在简化JPA基础知识库构建和减少需要与数据库进行通信的代码量.第一部分是如何配置H ...
- 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口
无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...
- 关于Qt的CRUD增删改查数据库那些事,带GUI图像界面
关于Qt的CRUD增删改查数据库那些事,带GUI图像界面 首先感谢CSDN平台提供这样强大的分享平台. Qt Creator 的几个常用快捷键必须要会,开发事半功倍, Ctrl 简称 C C + i ...
- python pymysql实例_Python使用pymysql模块操作mysql增删改查实例分析
Python使用pymysql模块操作mysql增删改查实例分析 发布时间:2020-09-30 16:42:12 来源:脚本之家 阅读:92 本文实例讲述了Python使用pymysql模块操作My ...
- 三、CRUD(增删改查)
三.CRUD(增删改查) 3.1.namespace namespace中的包名需要和mapper接口的包名一致! 1. id:就是对应的namespace中的方法名:2. resultType: ...
- MyBatisPlus之CRUD增删改查以及分页
MyBatisPlus之CRUD增删改查以及分页 1.CRUD详解之插入操作 环境测试,在之前的itcast-mp-springboot项目工程里面使用springboot来进行 编写用户测试类 /* ...
- 无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口
无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接 ...
- Mybatis_第二节:CRUD(增删改查)
_ ***配套文档:***↓↓↓ mybatis – MyBatis 3 | 简介 二.CRUD(增删改查) 实现功能需要改变的文件(接第一节结尾处) UserMapeer.java接口 UserMa ...
- mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...
MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...
最新文章
- CF1146H Satanic Panic
- Jetty 类载入问题处理
- MongoDB基本操作(增删改查)
- 【BZOJ】2289: 【POJ Challenge】圆,圆,圆
- 计算机视觉书籍学习记录——1最近点匹配
- django 中多字段主键(复合、联合主键)
- 沙迦美国大学科研副校长赵伟:揭秘工业 4.0 核心技术 CPS 的前世今生 | 人物志...
- 学习《Python核心编程》做一下知识点提要,方便复习(二)
- Windows 10 全新界面来了:焕然一新!
- comps电磁场模拟软件_电力系统仿真软件综述说课.ppt
- 济南月薪一万是什么水平?
- 专业心率监测器克服了心电噪声和电源的挑战---凯利讯半导体
- chrome误删书签恢复
- 程序设计 :题解+总结
- NLPcc2013-2014微博文本情感分类数据集
- 大数据和云计算哪个更简单,易学,前景比较好?
- base64图裁剪 php_php图片上传类(支持缩放、裁剪、图片缩略功能)
- 【电赛】2021年全国电赛设计报告要求
- 充满春天气息的公众号文章
- MIT 3.054胞状材料、多孔材料课程笔记-Lecture4:蜂窝材料面内机械性能
热门文章
- Python 3.8.0 发布!
- MaskFusion:惊艳的结合实例感知、语义分割、动态追踪的SLAM系统
- 系统架构设计师面试java架构师 面试经验分享
- Java中注解学习系列教程-1
- 0基础学Python,要报班吗?
- Re-attention机制Transformer,实现强大性能
- 移动端实时3D目标检测,谷歌开源出品,安卓下载就能用
- C++ Primer 第五版 第6章 6.7——函数指针习题答案
- 速收藏,《机器学习实战》Python3环境算法实现代码
- android 电视遥控 编程,Android编程调用红外线遥控功能示例