整体结构
model / entity
public class Player {
private Integer id;
private String name;
private String sex;
private Integer age;
private String address;
private String hobby;
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
dao
public class DBUtil {
public static Connection getConnection() {
Connection con = null;
try {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8";
String user = "root";
String password = "";
Class.forName(driver);
if(null == con) {
con = DriverManager.getConnection(url, user, password);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return con;
}
}
service
public class PlayerService {
public int insertPlayer(Player player){
int ret = 0;
try {
Connection con = DBUtil.getConnection();
String sql = "insert into player values(null,?,?,?,?,?)";
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1,player.getName());
stm.setString(2,player.getSex());
stm.setInt(3,player.getAge());
stm.setString(4,player.getAddress());
stm.setString(5,player.getHobby());
ret = stm.executeUpdate();
stm.close();
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return ret;
}
public int deletePlayer(int id){
int ret = 0;
try {
Connection con = DBUtil.getConnection();
String sql = "delete from player where PlayerID = ?";
PreparedStatement stm = con.prepareStatement(sql);
stm.setInt(1,id);
ret = stm.executeUpdate();
stm.close();
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return ret;
}
public int updatePlayer(Player player){
int ret = 0;
try {
Connection con = DBUtil.getConnection();
String sql = "update player set Name=?,Sex=?,Age=?,Address=?,Hobby=? where PlayerID=?";
PreparedStatement stm = con.prepareStatement(sql);
stm.setString(1,player.getName());
stm.setString(2, player.getSex());
stm.setInt(3,player.getAge());
stm.setString(4, player.getAddress());
stm.setString(5,player.getHobby());
stm.setInt(6,player.getId());
ret = stm.executeUpdate();
stm.close();
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return ret;
}
public List<Player> getAllPlayer() {
List<Player> players = new ArrayList<Player>();
try {
Connection con = DBUtil.getConnection();
String sql = "select * from player";
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(sql);
while (rs.next()) {
Player player = new Player();
player.setId(rs.getInt("PlayerID"));
player.setName(rs.getString("Name"));
player.setSex(rs.getString("Sex"));
player.setAge(rs.getInt("Age"));
player.setAddress(rs.getString("Address"));
player.setHobby(rs.getString("Hobby"));
players.add(player);
}
rs.close();
stm.close();
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return players;
}
}
controller / servlet
@WebServlet(name = "AddServlet",urlPatterns = "/add")
public class AddServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Player player = new Player();
player.setName(req.getParameter("name"));
player.setSex(req.getParameter("sex"));
player.setAge(Integer.parseInt(req.getParameter("age")));
player.setAddress(req.getParameter("address"));
String hobby = "";
for (String s:req.getParameterValues("hobby")) {
if(hobby.equals("")==false) hobby+=",";
hobby+=s;
}
player.setHobby(hobby);
PlayerService playerService = new PlayerService();
int ret = playerService.insertPlayer(player);
if(ret>0) resp.sendRedirect("list");
}
}
@WebServlet(name = "DeleteServlet",urlPatterns = "/del")
public class DeleteServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int id = Integer.parseInt(req.getParameter("id"));
PlayerService playerService = new PlayerService();
int ret = playerService.deletePlayer(id);
if(ret>0) resp.sendRedirect("list");
}
}
@WebServlet(name = "EditServlet",urlPatterns = "/edit")
public class EditServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Player player = new Player();
player.setId(Integer.parseInt(req.getParameter("id")));
player.setName(req.getParameter("name"));
player.setSex(req.getParameter("sex"));
player.setAge(Integer.parseInt(req.getParameter("age")));
player.setAddress(req.getParameter("address"));
String hobby = "";
for (String s:req.getParameterValues("hobby")) {
if(hobby.equals("")==false) hobby+=",";
hobby+=s;
}
player.setHobby(hobby);
PlayerService playerService = new PlayerService();
int ret = playerService.updatePlayer(player);
if(ret>0) resp.sendRedirect("list");
}
}
@WebServlet(name = "ListServlet",urlPatterns = "/list")
public class ListServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PlayerService playerService = new PlayerService();
List<Player> players = playerService.getAllPlayer();
req.setAttribute("players",players);
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
}
filter
@WebFilter(filterName = "CharacterFilter", urlPatterns = "/*")
public class CharacterFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
CharacterRequest characterRequest = new CharacterRequest(request);
filterChain.doFilter(characterRequest, response);
}
@Override
public void destroy() {
}
}
class CharacterRequest extends HttpServletRequestWrapper {
private HttpServletRequest request;
public CharacterRequest(HttpServletRequest request) {
super(request);
this.request = request;
}
public String getParameter(String name) {
String value = super.getParameter(name);
if(value == null) return null;
String method = super.getMethod();
if("get".equalsIgnoreCase(method)) {
try {
value = new String(value.getBytes("iso-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return value;
}
}
jsp
index.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>成员信息</title>
<style>
table{
width: 400px;
border: 1px solid #000;
border-collapse:collapse;
margin: auto;
}
td,th{
border: 1px solid #000;
text-align: center;
}
</style>
</head>
<body>
<a href="add.jsp">添加</a>
<table>
<tr>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>住址</th>
<th>兴趣</th>
<th>修改</th>
<th>删除</th>
</tr>
<c:forEach items="${players}" var="p">
<tr>
<td>${p.name}</td>
<td>${p.sex}</td>
<td>${p.age}</td>
<td>${p.address}</td>
<td>${p.hobby}</td>
<td><a href="edit.jsp?id=${p.id}&name=${p.name}&sex=${p.sex}&age=${p.age}&address=${p.address}&hobby=${p.hobby}">修改</a></td>
<td><a href="del?id=${p.id}" onclick="return confirm('确认要删除?')">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加成员</title>
</head>
<body>
<form action="/add" method="post" id="form">
输入姓名:<input type="text" name="name" id="name"><br>
输入性别:
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女
<br>
输入年龄:<input type="text" name="age" id="age"><br>
输入住址:
<select name="address" id="address">
<option value="成都">成都</option>
<option value="绵阳">绵阳</option>
<option value="德阳">德阳</option>
</select>
<br>
输入兴趣:
<input type="checkbox" name="hobby" value="篮球">篮球
<input type="checkbox" name="hobby" value="足球">足球
<input type="checkbox" name="hobby" value="羽毛球">羽毛球
<br>
<input type="submit" value="添加">
</form>
<%--js检验字段长度和年龄范围--%>
<script type="text/javascript">
window.onload = function () {
document.getElementById("form").onsubmit = function () {
return checkName()&&checkAge();
}
}
function checkName() {
var name = document.getElementById("name").value;
if(name.length>20) {
alert("姓名长度不能超过20!");
return false;
}
return true;
}
function checkAge() {
var age = document.getElementById("age").value;
if(age<1||age>100) {
alert("年龄不在1-100范围内!");
return false;
}
return true;
}
</script>
</body>
</html>
edit.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改成员</title>
</head>
<body>
<%--<%--%>
<%-- Student stu=(Student) request.getAttribute("stu");--%>
<%--%>--%>
<form action="/edit" method="post" id="form">
输入姓名:<input type="text" name="name" id="name" value="${param.name}"><br>
输入性别:
<input type="radio" name="sex" value="男" ${param.sex=="男"?"checked":""}>男
<input type="radio" name="sex" value="女" ${param.sex=="女"?"checked":""}>女
<br>
输入年龄:<input type="text" name="age" id="age" value="${param.age}"><br>
输入住址:
<select name="address" id="address">
<option value="成都" ${param.address=="成都"?"selected":""}>成都</option>
<option value="绵阳" ${param.address=="绵阳"?"selected":""}>绵阳</option>
<option value="德阳" ${param.address=="德阳"?"selected":""}>德阳</option>
</select>
<br>
输入兴趣:
<input type="checkbox" name="hobby" value="篮球" ${param.hobby.contains("篮球")?"checked":""}>篮球
<input type="checkbox" name="hobby" value="足球" ${param.hobby.contains("足球")?"checked":""}>足球
<input type="checkbox" name="hobby" value="羽毛球" ${param.hobby.contains("羽毛球")?"checked":""}>羽毛球
<br>
<input type="hidden" name="id" value="${param.id}">
<input type="submit" value="修改">
<%-- ${requestScope.name}--%>
<%-- ${sessionScope._name}--%>
</form>
<%--js检验字段长度和年龄范围--%>
<script type="text/javascript">
window.onload = function () {
document.getElementById("form").onsubmit = function () {
return checkName()&&checkAge();
}
}
function checkName() {
var name = document.getElementById("name").value;
if(name.length>20) {
alert("姓名长度不能超过20!");
return false;
}
return true;
}
function checkAge() {
var age = document.getElementById("age").value;
if(age<1||age>100) {
alert("年龄不在1-100范围内!");
return false;
}
return true;
}
</script>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>list</welcome-file>
</welcome-file-list>
</web-app>