jsp为啥要用增删改查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp为啥要用增删改查相关的知识,希望对你有一定的参考价值。
参考技术A 重新编辑。增删改查主要是将针对数据库中已有的数据项进行重新修改,并将修改后的数据保存到数据库中。sp用增删改查是为了重新编辑数据。增删改查的使用大大节约了编辑者的时间,提高了业务的精确性。Web对数据库的增删改查(servlet+jsp+javaBean增删改查)
Web+Java对数据库增删改查-javaWeb中级
1.开始之前的准备(servlet+jsp+javaBean增删改查)
-
jsp:页面的请求和展示
- 在前台主要学了jsp进行页面的请求和展示
-
java后台
-
mysql数据库
- 学习了java如何进行数据库增删改查
- JDBC
- JDBC重构Dao
- Dao进行sql语句
- 将数据库的获取结果响应到页面上
- 学习了java如何进行数据库增删改查
-
页面向后台进行请求
- 请求:(url:http://xx.8080/student.do)
- servlet进行响应
-
jsp+servlet+javaBean+mysql === M2
-
代码准备
-
StudentServlet.java
-
package com.Li; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @desc Student 模块的 Servlet * @author Li Ya Hui * @time 2021年6月2日 上午8:34:22 */ public class StudentServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("Student--->service"); } }
-
-
index.jsp
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSP+Servlet+JavaBean实现表单的增删改查</title> </head> <body> <a href="<%=request.getContextPath()%>/student.do">Student模块的全部查询 </a> </body> </html>
-
-
web.xml
-
<servlet> <servlet-name>ser</servlet-name> <servlet-class>com.Li.StudentServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ser</servlet-name> <url-pattern>/studnet.do</url-pattern> </servlet-mapping>
-
-
2.查询
-
首先创建一个Dao(连接数据库)
-
然后创建一个查询的类StudnetService实例化Dao(StudnetService)
-
在StudentServlet里创建一个StudnetService对象的query方法
-
query方法将数据转成list
<map>
然后再存储到request对象里去 -
在StudentServlet里service方法里获取链接里的method如果匹配 调用 query查询方法
-
在主页面里写一个超链接,超链接为
<a href="<%=request.getContextPath()%>/student.do?method=query"> Student模块的全部查询 </a>
-
method的参数为query代表我的一个匹配参数
-
当servlet匹配成功时,会将
request.getRequestDispatcher("/jsps/studnet/list_student.jsp").forward(request, response);
发送请求 -
子页面接收数据的代码(list_student.jsp)
-
<%@page import="java.util.Map"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Student 模块的查询展示界面</title> <style type="text/css"> *{ margin: 0; padding: 0; } table{ border-width:2px; border-color: red; text-align: center; } </style> </head> <body> <table border="1"> <tr> <td>学号</td> <td>姓名</td> <td>年龄</td> <td>性别</td> <td>操作</td> </tr> <% List list = (List) request.getAttribute("list"); for(int i = 0 ; i < list.size() ; i++) { Map map =(Map) list.get(i); %> <tr> <td><%=map.get("sno") %></td> <td><%=map.get("sname") %></td> <td><%=map.get("sage") %></td> <td><%=map.get("ssex") %></td> <td> <a href="#">添加</a> <a href="#">修改</a> <a href="#">删除</a> </td> </tr> <% } %> </table> </body> </html>
-
-
配置web.xml
-
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://JAVA.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>WebM2Demo001</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>StudentServlet</servlet-name> <servlet-class>com.Li.student.StudentServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>StudentServlet</servlet-name> <url-pattern>/student.do</url-pattern> </servlet-mapping> </web-app>
-
3.删除
-
删除的第一步,首先给删除的按钮加上链接:
<a href="<%=request.getContextPath()%>/student.do?method=delete&sno=<%=map.get("sno") %>">删除</a>
-
method=delete 制造关键字
-
sno=<%=map.get(“sno”) %> 制造主键
-
在StudentServlet的service方法里添加method=delete时的方法,调用delete方法
-
delete方法里调用StudentService里的deleteBySno方法
-
/** * @desc 根据学号删除了一条学生信息 * @param sno * @throws SQLException * @throws ClassNotFoundException */ public void deleteBySno(String sno) throws ClassNotFoundException, SQLException { // 删除 dao.executeUpdate(" delete from student where sno='"+sno+"'"); }
-
-
在StudentServlet的delete方法里进行重定向
-
//2.调用studentService中的方法执行sql语句实现删除该条记录 studentservice.deleteBySno(sno); //3.重定向:刷新 重新指向新的页面 简介进行刷新页面 response.sendRedirect(request.getContextPath()+"/student.do?method=query");
-
4.添加
-
添加的第一步,首先给添加按钮加上链接:
<a href="<%=request.getContextPath()%>/student.do?method=addPage">添加</a>
-
method=addPage 代表要进入信息添加页面
-
新建student模块添加页面
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>student模块的添加页面</title> <style type="text/css"> *{ margin:0; padding:0; } </style> </head> <body> <form action="<%=request.getContextPath()%>/student.do?method=add" method="post"> <table border="2" algin="center"> <tr> <td>姓名</td> <td><input type="text" name="sname" value=""/></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="sage" value=""/></td> </tr> <tr> <td>性别</td> <td><input type="text" name="ssex" value=""/></td> </tr> <tr> <td colspan="2"><input type="submit" style="display:block;margin:auto;" value="提交"/></td> </tr> </table> </form> </body> </html>
-
-
在添加页面的表单里提交地址为:
action="<%=request.getContextPath()%>/student.do?method=add"
-
因为表单存在英文,当前前台向后台用form表单传输数据时,需要设定编码
request.setCharacterEncoding("utf-8");
-
在StudentService里service判断里添加
el
se if(“addPage”.equals(method)) {this.addPage(request,response);
} -
在StudentService里service判断里添加
else if("add".equals(method)) { this.add(request,response); }
-
在StudentService里添加add数据方法
-
/** * @desc 保存添加页面的数据 * @param request * @param response * @throws SQLException * @throws ClassNotFoundException * @throws IOException */ private void add(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, IOException { System.out.println("StudentServlet--->add()"); //1.接值 String sname = request.getParameter("sname"); String sage = request.getParameter("sage"); String ssex = request.getParameter("ssex"); System.out.println(sname+sage+ssex); //2.调用StudentService中的方法执行sql语句实现将数据保存到mysql数据库中 studentservice.save(sname,sage,ssex); //3.进行重定向(刷新) response.sendRedirect(request.getContextPath()+"/student.do?method=query"); }
-
-
还需要在StudentService里添加一个save保存方法
-
/** * @desc 根据前台的信息从而添加一条学生信息到数据库 * @param sname * @param sage * @param ssex * @throws SQLException * @throws ClassNotFoundException */ public void save(String sname, String sage, String ssex) throws ClassNotFoundException, SQLException { dao.executeUpdate("insert into student values ('"+UUID.randomUUID().toString().substring(0, 9)+"','"+sname+"','"+Integer.parseInt(sage)+"','"+ssex+"')"); }
-
-
测试添加数据(完成)
5.修改
5.1.进入修改的页面
-
首先讲展示数据页面的修改连接改为
-
<a href="<%=request.getContextPath()%>/student.do?method=editPage&sno=<%=map.get("sno")%>">修改</a>
-
-
method=editPage 代表将进入修改信息界面内 并且将此数据的sno作为参数传入
-
然后将StudentServlet里的service方法method关键字判断加入editPage
-
else if("editPage".equals(method)) { this.editPage(request,response); }
-
-
然后创建一个editPage函数
-
/** * @desc 跳转到学生信息修改页面 转发 * @param request * @param response * @throws SQLException * @throws ClassNotFoundException * @throws IOException * @throws ServletException * @throws */ private void editPage(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, IOException, ServletException { System.out.println("StudentServlet--->editPage"); //1.接值 String sno = request.getParameter("sno"); System.out.println(sno); //2.根据传递过来的sno查询该条数据信息 Map<String, Object> map = studentservice.queryOneBySno(sno); System.out.println(map); //3.存值 request.setAttribute("map", map); //4.转发地址 request.getRequestDispatcher("/jsps/studnet/edit_student.jsp").forward(request, response); }
-
-
我们发现,现在需要一个方法来根据sno查找数据 studentservice.queryOneBySno(sno)
-
在StudentService 里创建方法
-
/** * @desc 4.根据sno查询一条数据 * @param sno * @return * @throws SQLException * @throws ClassNotFoundException */ public Map<String, Object> queryOneBySno(String sno) throws ClassNotFoundException, SQLException { return dao.executeQueryForMap("select * from student where sno = '"+sno+"'"); }
-
-
接下来数据已经存入到了 request 并且已经转到了修改页面,只剩下了 “ 喷数据 ”
-
新建/jsps/studnet/edit_student.jsp,代码:
-
<%@page import="java.util.Map"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Student模块的修改页面</title> </head> <body> <% //取出StudentServlet里的request的数据 "map" Map map =(Map) request.getAttribute("map"); %> <!-- 目前没有加提交地址 --> <table border="2" bordercolor="green" align="center"> <tr> <td>姓名</td> <td><input type="text" name="sname" value="<%=map.get("sname") %>"/></td> </tr> <tr> <td>年龄</td> <td><input type="text" name="sage" value="<%=map.get("sage") %>"/></td> </tr> <trMySQL-增删改查简易操作
-