综合案例 实现表单的 增删改查
案例 实现表单的 增删改查
1. user.java 建立一个uesr类
package com.hou.web03;
import javax.servlet.annotation.WebServlet;
/**
* @author haoqi
* @Date 2020/10/7 - 9:36
*/
public class User {
private Integer id;
private String name;
private Double score;
public User(Integer id, String name, Double score) {
this.id = id;
this.name = name;
this.score = score;
}
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 Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", score=" + score +
'}';
}
}
2.userServlet.java创建user的对象并操作
package com.hou.web03;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* @author haoqi
* @Date 2020/10/8 - 9:24
*/
@WebServlet("/users")
public class UserServlet extends HttpServlet {
public static Map<Integer,User> map = new HashMap<>();
@Override
public void init(ServletConfig config) throws ServletException {
//表中的默认内容,在初始化方法里只调用一次
map.put(1,new User(1,"haoqi",19.0));
map.put(2,new User(2,"dapeng",9.0));
map.put(3,new User(3,"safei",99.0));
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
if (method == null) //默认显示操作
method = "showAll";
switch (method){
case "delete":
String idStr = req.getParameter("id");
Integer id = Integer.parseInt(idStr);
map.remove(id);
// resp.sendRedirect("/users"); // 方法1: 实现自动刷新显示操作
// break; // 方法2: 实现自动刷新显示操作,注释掉break
case "showAll":
req.setAttribute("list",map.values());
req.getRequestDispatcher("index.jsp").forward(req,resp);
break;
case "findId":
idStr = req.getParameter("id");
id = Integer.parseInt(idStr);
req.setAttribute("user",map.get(id));
req.getRequestDispatcher("update.jsp").forward(req,resp);
break;
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8"); //防止乱码
String idStr = req.getParameter("id");
String name = req.getParameter("name");
String scoreStr = req.getParameter("score");
Integer id = Integer.parseInt(idStr);
Double score = Double.parseDouble(scoreStr);
//返回添加内容
User user = new User(id,name,score);
map.put(id,user);
resp.sendRedirect("/users");
}
}
3.index.jsp表单的提交
引导包 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="javax.print.DocFlavor" %>
<%@ page import="com.sun.xml.internal.ws.client.RequestContext" %><%--
Created by IntelliJ IDEA.
User: haoqi
Date: 2020/10/7
Time: 8:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>综合案例</title>
</head>
<body>
$END$
<%-- <%String name = (String) request.getAttribute("name");%>--%>
<%-- //传统方法--%>
<%-- <%=name%>--%>
<%-- </hr>--%>
<%-- //EL表达式--%>
<%-- ${name}--%>
<%-- <%--%>
<%-- pageContext.setAttribute("name","haoqi");--%>
<%-- request.setAttribute("name","saifei");--%>
<%-- session.setAttribute("name","dapeng");--%>
<%-- application.setAttribute("name","xuchao");--%>
<%-- %>--%>
<%-- ${name} // page->haoqi--%>
<%-- 综合案例,实现对表的增删改查--%>
<form action="/users" method="get">
<table>
<tr>
<th> 编号 </th>
<th> 姓名 </th>
<th> 成绩 </th>
<th> 操作 </th>
</tr>
<c:forEach items="${list}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.score}</td>
<td>
<%-- 在同一给 doGet 方法内自定义操作 ?method=delete 和对应的键值 id=${user.id} " --%>
<a href="/users?method=delete&id=${user.id}">删除</a>
<a href="/users?method=findId&id=${user.id}">修改</a>
<a href="/add.jsp">添加</a> //刚刚忘记添加功能啦
</td>
</tr>
</c:forEach>
</table>
</form>
</body>
</html>
4.add.jsp 添加功能
<%--
Created by IntelliJ IDEA.
User: haoqi
Date: 2020/10/8
Time: 9:52
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>add 添加功能</title>
</head>
<body>
<form action="/users" method="post">
编号:<input type="text" name="id"/><br/>
姓名:<input type="text" name="name"/><br/>
成绩:<input type="text" name="score"/><br/>
<input type="submit" value="添加">
</form>
</body>
</html>
5.update.jsp 更新修改界面
和 add.jsp 大同小异
<%--
Created by IntelliJ IDEA.
User: haoqi
Date: 2020/10/8
Time: 10:56
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改界面</title>
</head>
<body>
<form action="/users" method="post">
编号:<input type="text" name="id" value="${user.id}" readonly/><br/>
姓名:<input type="text" name="name" value="${user.name}"/><br/>
成绩:<input type="text" name="score" value="${user.score}"/><br/>
<input type="submit" value="修改">
</form>
</body>
</html>
6.效果图
- 删除了一个
- 修改了
-
添加操作
刚刚测试没有注意到少了添加功能
<a href="/add.jsp">添加</a>