Maven实战指南 06
来源:互联网 发布:adams导入数据 编辑:程序博客网 时间:2024/06/05 14:54
5.3 整一个用户CRUD功能
前面介绍了怎么样实现一个简单的Web应用,体现了创建Web应用、编写代码、在pom.xml中配置相关的构件、最后发布测试。接下来咱们再介绍一个经典的实现了CRUD的用户Web管理应用。
5.3.1 创建Web工程和初始化数据库
首先,麻烦您按前面章节的方式,创建一个Web工程。因为创建Web工程的套路依旧,我这就不再重复了,直接贴出我这Demo工程的目录结构。如下图:
创建好了工程,当然还要初始化好数据库啦
我这用的是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');
5.3.2 在pom.xml中添加依赖
在整个Demo应用中,我们需要在创建web工程后,额外需要四个依赖,它们分别是jstl依赖、MySql数据库驱动依赖、jUnit4.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>
5.3.3 添加注册代码
Demo带文件主要有如下几个:
MvnUser.java 用户实体类
DBConnection.java 连接数据库的公共类
MvnUserDAO.java 用户的DAO持久层类
UserService.java 用户服务类
AddUserServlet.java 添加用户Servlet
DeleteUserServlet.java 删除用户Servlet
EditUserServlet.java 修改用户Servlet
SearchUserServlet.java 根据用户Id或用户名查找用户Servlet
SearchUsersServlet.java 查询所有用户Servlet
userList.jsp 显示用户列表jsp
Index.jsp 进入首页(框架jsp)
db.properties 数据库信息配置文件
它们的内容分别如下:
MvnUser.java
package cn.com.mvnbook.demo.tp04.entity;
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
package cn.com.mvnbook.demo.tp04.db;
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,实现如下封装:<br/>
* 1 读取db.properties文件<br/>
* 2 获取Connection连接的方法<br/>
* 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
package cn.com.mvnbook.demo.tp04.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import cn.com.mvnbook.demo.tp04.db.DBConnection;
import cn.com.mvnbook.demo.tp04.entity.MvnUser;
/**
* 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
package cn.com.mvnbook.demo.tp04.service;
import java.util.List;
import cn.com.mvnbook.demo.tp04.dao.MvnUserDAO;
import cn.com.mvnbook.demo.tp04.entity.MvnUser;
/**
* 对用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
package cn.com.mvnbook.demo.tp04.servlet;
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 cn.com.mvnbook.demo.tp04.entity.MvnUser;
import cn.com.mvnbook.demo.tp04.service.UserService;
/**
* 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
package cn.com.mvnbook.demo.tp04.servlet;
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 cn.com.mvnbook.demo.tp04.service.UserService;
/**
* 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
package cn.com.mvnbook.demo.tp04.servlet;
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 cn.com.mvnbook.demo.tp04.service.UserService;
/**
* 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
package cn.com.mvnbook.demo.tp04.servlet;
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 cn.com.mvnbook.demo.tp04.entity.MvnUser;
import cn.com.mvnbook.demo.tp04.service.UserService;
import net.sf.json.JSONObject;
/**
* 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
package cn.com.mvnbook.demo.tp04.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.mvnbook.demo.tp04.entity.MvnUser;
import cn.com.mvnbook.demo.tp04.service.UserService;
/**
* 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
<%@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">
<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
<%@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;
background-color: #99FFFF;
display: none;
}
#LayerEdit {
position: absolute;
left: 113px;
top: 183px;
width: 434px;
height: 193px;
z-index: 1;
background-color: #99FFFF;
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
5.3.4 构建项目
代码写好了,构建好像没什么特别的呢,基于Eclipse,就是点击Maven builder|test|install等等几个命令菜单而已。关于Web应用特别点的,就是在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>
5.3.5 测试
在工程上右键 Run As->Maven build...,在Goals后面输入jetty:run目标,运行jetty服务器。在浏览器中输入http://localhost:8080/MvnBookTP04/index.jsp,运行出来的界面如下:
后面的操作界面就不截屏了,相信大家都可以点出来,没啥子业务逻辑啦 ^_^
5.4 小结
通过对本章案例的研究,其实是用Maven+Eclipse开发Web应用也蛮简单的,无非刚开始的时候生疏点,有点点新注意安装或配置的地方,以后都很轻松了。
主要是:
1、在Eclipse中装好自己习惯的archetype构件,帮我们创建好web工程架构
2、根据应用需要,在pom.xml中配置好需要的依赖
3、配置好web服务器相关的插件
4、注意web应用的约定目录结构,和每个目录中放什么样的文件
版权所有,转载请注明 参考视频http://cyedu.ke.qq.com
- Maven实战指南 06
- Maven实战指南 01
- Maven实战指南 02
- Maven实战指南 03
- Maven实战指南 04
- Maven实战指南 05
- Maven实战指南 07
- Maven实战指南 08
- Maven实战指南 09
- Maven实战指南 10
- 【Maven权威指南】Maven实战篇:定制一个Maven项目
- Maven 实战 06 插件
- 【Maven实战】06 仓库
- maven 实战指南:添加本地jar文件到本地仓库
- 【Maven权威指南】Maven实战篇:一个简单的Maven项目
- 【Maven权威指南】Maven实战篇:一个简单的web应用
- maven指南
- Maven指南
- spark充分利用所有CPU核Utilizing all CPU cores
- matlab 中的textscan
- 5-18 银行业务队列简单模拟 (25分)
- c++ 模板详解(1)
- Android N 多窗口分析之freeform流程分析一(界面功能介绍)
- Maven实战指南 06
- 齐肯多夫定理
- iOS-传值大全
- List双括号初始化
- python中的项目和应用的关系
- webcollector 初探(三)
- feof()和EOF的用法—— C中文件结尾的判断
- c++模板详解(2)
- [hihocoder1038]01背包问题