Java复习第十七天学习笔记(转发、重定向,GET,POST),附有道云笔记链接

news2024/11/27 2:39:44

【有道云笔记】十七 4.3 转发、重定向、Get、POST、乱码
https://note.youdao.com/s/GD5TRksQ

一、转发

转发:一般查询了数据之后,转发到一个jsp页面进行展示

req.setAttribute("list", list);

req.getRequestDispatcher("student_list.jsp").forward(req, resp);

二、重定向

0

重定向:一般添加、删除、修改之后重定向到查找所有

resp.sendRedirect("/student");

重定向的状态码是302,重定向的地址最终是由浏览器发送这个请求

0

给超链接添加点击事件并触发:

<a href="javascript:void(0)" οnclick="method()"></a> <a href="javascript:;" οnclick="method()"></a> <a href="javascript:method();">xxx</a>

三、Get

  1. 采用URL请求路径传输参数,参数拼接在URL后面
  2. 参数传输过程中隐私性较差,直接在URL后面
  3. 路径可以容纳的数据有限,只能传递少量参数
  4. form表单请求默认就是get

http://localhost:8080/student?method=deleteById&id=23

http://localhost:8080/student?name=zhangsan&age=12&gender=男

Get方式传参,不是非得在form表单里面,可以手动写,在超链接的href里面直接在地址后面加?id=2

四、POST

  1. 采用实体内容传参数
  2. 参数在传输过程中不可见,隐私性好
  3. 实体内容专门用来传输数据,大小没有限制
  4. 使用:在form上加method="post"

0

不管是Get方式还是POST方式传参数,后台代码获取参数的方式都是一样的。

req.getParameter("name");

五、乱码问题总结

1、数据库创建时候选择utf-8编码

连接数据库url:

jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=UTF-8

2、解决post请求乱码问题 method="post"

0

req.setCharacterEncoding("UTF-8");

3、服务器响应浏览器的乱码问题:

resp.setContentType("text/html;charset=utf-8");

六、前台往后台发请求方式

  1. form表单
  2. 超链接删除
  3. location.href
  4. ajax

跳转到一个jsp页面的方式:

  1. 直接访问这个jsp页面 http://localhost:8080/student_update.jsp
  2. 访问servlet转发到这个页面

七、增删改查代码

//http://localhost:8080/index.jsp //http://localhost:8080/student @WebServlet("/student") public class StudentServlet extends HttpServlet { //默认访问service @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //System.out.println("StudentServlet.service"); //解决post请求乱码问题 req.setCharacterEncoding("UTF-8"); // http://localhost:8080/student?method=selectAll // http://localhost:8080/student?method=deleteById&id=23 String method = req.getParameter("method"); if (method == null || method.equals("")) { method = "selectAll"; } switch (method) { case "selectAll": selectAll(req, resp); break; case "deleteById": deleteById(req, resp); break; case "add": add(req, resp); break; case "toUpdate": toUpdate(req, resp); break; case "update": update(req, resp); break; } } private void update(HttpServletRequest req, HttpServletResponse resp) throws IOException { System.out.println("StudentServlet.update"); String id = req.getParameter("id"); String name = req.getParameter("name"); String age = req.getParameter("age"); String gender = req.getParameter("gender"); Connection connection = null; PreparedStatement preparedStatement = null; try { connection = JDBCUtil.getConnection(); String sql = "update student set name=?,age=?,gender=? where id=?"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, name); preparedStatement.setInt(2, Integer.parseInt(age)); preparedStatement.setString(3, gender); preparedStatement.setInt(4, Integer.parseInt(id)); System.out.println(preparedStatement); int count = preparedStatement.executeUpdate(); System.out.println("count: " + count); } catch (SQLException throwables) { throwables.printStackTrace(); } resp.sendRedirect("/student"); } private void toUpdate(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("StudentServlet.toUpdate"); String id = req.getParameter("id"); Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; Student student = null; try { connection = JDBCUtil.getConnection(); String sql = "SELECT id,name,age,gender FROM student where id=?"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, Integer.parseInt(id)); System.out.println(preparedStatement); resultSet = preparedStatement.executeQuery(); while (resultSet.next()) {//判断下一个有没有,如果返回true而且指向下一个,没有返回false //int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); String gender = resultSet.getString("gender"); student = new Student(Integer.parseInt(id), name, age, gender); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { JDBCUtil.close(connection, preparedStatement, resultSet); } //把list数据放到req里面 req.setAttribute("student", student); //转发到student_list.jsp页面进行展示 req.getRequestDispatcher("student_update.jsp").forward(req, resp); } private void add(HttpServletRequest req, HttpServletResponse resp) throws IOException { System.out.println("StudentServlet.add"); String name = req.getParameter("name"); String age = req.getParameter("age"); String gender = req.getParameter("gender"); Connection connection = null; PreparedStatement preparedStatement = null; try { connection = JDBCUtil.getConnection(); String sql = "insert into student(name,age,gender) values(?,?,?)"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setString(1, name); preparedStatement.setInt(2, Integer.parseInt(age)); preparedStatement.setString(3, gender); System.out.println(preparedStatement); int count = preparedStatement.executeUpdate(); System.out.println("count: " + count); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { JDBCUtil.close(connection, preparedStatement, null); } resp.sendRedirect("/student?method=selectAll"); } private void deleteById(HttpServletRequest req, HttpServletResponse resp) throws IOException { String id = req.getParameter("id"); Connection connection = null; PreparedStatement preparedStatement = null; try { connection = JDBCUtil.getConnection(); String sql = "delete from student where id=?"; preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, Integer.parseInt(id)); System.out.println(preparedStatement); int count = preparedStatement.executeUpdate(); System.out.println("count: " + count); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { JDBCUtil.close(connection, preparedStatement, null); } // /student 302 // 重定向 resp.sendRedirect("/student?method=selectAll"); } private void selectAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; List<Student> list = new ArrayList<>(); try { connection = JDBCUtil.getConnection(); String sql = "SELECT id,name,age,gender FROM student"; //预编译 preparedStatement = connection.prepareStatement(sql); System.out.println(preparedStatement); resultSet = preparedStatement.executeQuery(); while (resultSet.next()) {//判断下一个有没有,如果返回true而且指向下一个,没有返回false int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); String gender = resultSet.getString("gender"); Student student = new Student(id, name, age, gender); list.add(student); } for (Student student : list) { System.out.println(student); } } catch (SQLException throwables) { throwables.printStackTrace(); } finally { JDBCUtil.close(connection, preparedStatement, resultSet); } //把list数据放到req里面 req.setAttribute("list", list); //转发到student_list.jsp页面进行展示 req.getRequestDispatcher("student_list.jsp").forward(req, resp); } }

student_list.jsp

<%@ page import="com.situ.web.pojo.Student" %> <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <link rel="stylesheet" href="static/bootstrap-3.4.1-dist/css/bootstrap.css"> </head> <body> <% //JSP页面中可以嵌套Java代码 //JSP脚本:在这里可以写任意的Java代码 //request、response:JSP页面的内置对象 List<Student> list = (List<Student>) request.getAttribute("list"); %> <a class="btn btn-primary" href="/student_add.jsp">添加</a> <table class="table table-striped table-bordered table-hover table-condensed"> <tr> <td>ID</td> <td>名字</td> <td>年龄</td> <td>性别</td> <td>编辑</td> <td>删除</td> </tr> <% for (Student student : list) { %> <tr> <td><%=student.getId()%></td> <td><%=student.getName()%></td> <td><%=student.getAge()%></td> <td><%=student.getGender()%></td> <td><a href="/student?method=toUpdate&id=<%=student.getId()%>">编辑</a></td> <%--/deleteStudent?id=12 --%> <%--<td><a href="/deleteStudent?id=<%=student.getId()%>">删除</a></td>--%> <%--<td><a href="/student?method=deleteById&id=<%=student.getId()%>">删除</a></td>--%> <td><a href="javascript:deleteById(<%=student.getId()%>)">删除</a></td> </tr> <% } %> </table> <script> function deleteById(id) { var isDelete = confirm('您确认要删除?'); if (isDelete) { location.href = '/student?method=deleteById&id=' + id; } } </script> </body> </html>

student_add.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/student?method=add" method="post"> 用户名:<input type="text" name="name"/><br/> 年龄:<input type="text" name="age"/><br/> 性别:<input type="text" name="gender"/><br/> <input type="submit" value="添加"/> </form> </body> </html>

student_update.jsp

<%@ page import="com.situ.web.pojo.Student" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% Student student = (Student) request.getAttribute("student"); %> <form action="/student?method=update" method="post"> <input type="hidden" name="id" value="<%=student.getId()%>"/> 用户名:<input type="text" name="name" value="<%=student.getName()%>"/><br/> 年龄:<input type="text" name="age" value="<%=student.getAge()%>"/><br/> 性别:<input type="text" name="gender" value="<%=student.getGender()%>"/><br/> <input type="submit" value="修改"/> </form> </body> </html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

美团外卖基于GPU的向量检索系统实践

总第587篇 | 2024年第007篇 到家搜索业务具有数据量大、过滤比高等特点&#xff0c;为了在保证高召回率的同时进一步提高检索性能&#xff0c;到家搜索技术团队与美团基础研发机器学习平台团队基于GPU实现了支持向量标量混合检索的通用检索系统&#xff0c;召回率与检索性能均有…

【精品PPT】智慧路灯大数据平台整体建设实施方案(免费下载)

1、知识星球下载&#xff1a; 如需下载完整PPTX可编辑源文件&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/19QeHVt8y 2、免费领取步骤&#xff1a; 【1】关注公众号 方案驿站 【2】私信发送 【智慧路灯大数据平台】 【3】获取本方案PDF下载链接&#xff0c;直…

绝地求生:AUG爆裂弹球黑货箱:街机动漫风格大家会喜欢吗?

大好&#xff0c;我闲游盒&#xff01; 4.10更新后&#xff0c;AUG的新成长型也出来了&#xff0c;更新后我觉得AUG变好用了一点&#xff0c;不知道大家有没有感觉出来&#xff1f; 宝箱概率 本期主角 AUG-爆裂弹球&#xff08;紫色配粉红色&#xff09; 本次的AUG我才升到5级…

【力扣】101. 对称二叉树

101. 对称二叉树 题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 提示…

HWOD:二维数组下标合法性判断

一、知识点 1、停止读取的判定条件有两种写法 (1)&#xff1a;while(scanf()!EOF) (2)&#xff1a;while(scanf()>0) 在代码提交平台(1)和(2)都可以用 在本地&#xff0c;只能用(2)&#xff0c;且要有非法输入的配合。比如要读取的是整数&#xff0c;但输入了字符串&am…

UE5 在骨骼动画模型上绘制贴图

参考&#xff1a;Unreal 5.1 - How to paint damage textures and other effects on skeletal meshes 针对模型&#xff0c;在运行状态下通过射线指定一定范围&#xff0c;添加材质效果。 核心思路 通过射线获取命中点&#xff0c;作为材质参数材质中&#xff0c;命中的世界…

智慧矿山视频智能监控与安全监管方案

一、行业背景 随着全球能源需求的日益增长&#xff0c;矿业行业作为国民经济的重要支柱&#xff0c;其发展日益受到广泛关注。然而&#xff0c;传统矿山管理模式的局限性逐渐显现&#xff0c;如生产安全、人员监管、风险预警等方面的问题日益突出。因此&#xff0c;智慧矿山智…

LabVIEW无线快速存取记录器(WQAR)测试平台

LabVIEW无线快速存取记录器&#xff08;WQAR&#xff09;测试平台 随着民用航空业的迅速发展&#xff0c;航空安全的保障日益成为公众和专业领域的关注焦点。无线快速存取记录器&#xff08;WirelessQuick Access Recorder, WQAR&#xff09;作为记录飞行数据、监控飞行品质的…

个人博客系统项目(SpringBoot+Linux部署上线)

在学完SpringBoot框架、MyBatis后&#xff0c;直接开始做第一个项目&#xff1a;博客系统 首先&#xff0c;该博客系统包含核心功能有&#xff1a; 一、登录、注册、退出登录功能。 二、没有登陆前可以查看博客首页以及博客展示的分页处理&#xff0c;以及点击查看博客可以…

10个大型语言模型(LLM)常见面试问题和答案解析

今天我们来总结以下大型语言模型面试中常问的问题 1、哪种技术有助于减轻基于提示的学习中的偏见? A.微调 Fine-tuning B.数据增强 Data augmentation C.提示校准 Prompt calibration D.梯度裁剪 Gradient clipping 答案:C 提示校准包括调整提示&#xff0c;尽量减少产生…

g4f姊妹篇:g4l gpt4local面世拉!

众所周知g4f很强&#xff0c;安装具体见&#xff1a;gpt4free带来了更好的chatgpt体验&#xff01;-CSDN博客 可喜的是&#xff0c;现在它的姊妹篇&#xff0c;gpt4local也面世拉&#xff01;g4l 是一个高级 Python 库&#xff0c;允许您使用 llama.cpp 绑定运行语言模型。它是…

服务器挖矿病毒解决ponscan,定时任务解决

服务器挖矿病毒解决ponscan&#xff0c;定时任务解决 挖矿病毒会隐藏chattr的操作权限&#xff0c;让我们无法删除病毒文件&#xff0c;杀掉病毒进程。所以要去下载chattr.c的文件&#xff0c;编译成a.out。然后再对原来的chattr文件的权限进行修改。然后覆盖掉它。 chattr.c …

http请求头导致了dial tcp:lookup xxxx on 10.43.0.10:53 no sunch host

事实证明人有的时候也不能太偷懒&#xff0c;太偷懒容易给自己埋坑。 问题的背景&#xff1a; web端调用服务A&#xff0c;服务A异步调用服务B。服务A有四个场景需要调用服务B&#xff0c;所以&#xff0c;服务A中封装了一个公用的方法&#xff0c;唯一的区别是&#xff0c;场…

【how2j练习题】HTML DOM部分阶段练习

练习1 <!-- 验证账号是否已经存在 那么就在js使用简单的验证规则&#xff1a; 如果账号是以a或者A开头的&#xff0c;那么就提示已经存在了。 --> <!-- 1.需要一个输入框和一个按钮 2.按钮上绑上一个事件。 3.编写事件&#xff0c;并输出答案 --><html><…

模拟移动端美团案例(react版)

文章目录 目录 概述 项目搭建 1.启动项目&#xff08;mock服务前端服务&#xff09; 2.使用Redux ToolTik(RTK)编写store(异步action) 3.组件触发action并渲染数据 一、渲染列表 ​编辑 二、tab切换类交互 三、添加购物车 四、统计区域功能实现 五、购物车列表功能实现 六、控制…

软考高级架构师:数据库模式概念和例题

一、AI 讲解 数据库模式分为三个层次&#xff1a;外模式、概念模式和内模式。这三个层次分别对应不同的抽象级别&#xff0c;帮助数据库管理员和用户以不同的视角理解数据库结构。 外模式&#xff08;用户级&#xff09;&#xff1a;是数据库用户的视图。每个用户可以通过外模…

VMware导出虚拟机vmkd格式转换qcow2

VMware虚拟机导出qcow2格式可以上传至云服务 1、需要导出的虚拟机 2、克隆虚拟机 3、选择克隆源 4、创建完整克隆 5、完成 6、找到VMware安装路径 7、找到vmware-vdiskmanager所在路径使用cmd或Windows PowerShell进入目录 进入vmware-vdiskmanager目录 cd F:\软件\VMware Wo…

路由器如何端口映射到外网?

随着互联网的发展和普及&#xff0c;远程访问已经成为了现代社会的一个重要需求。在复杂的网络环境下&#xff0c;特别是涉及异地组网的情况下&#xff0c;实现远程访问变得更加困难。本文将介绍一种名为【天联】的组网产品&#xff0c;它可以解决复杂网络环境下的远程连接问题…

【漏洞复现】潍微科技-水务信息管理平台 ChangePwd SQL注入漏洞

0x01 产品简介 潍微科技-水务信息管理平台主要帮助水务企业实现水质状态监测、管网运行监控、水厂安全保障、用水实时监控以及排放有效监管,确保居民安全稳定用水、环境有效保护,全面提升水务管理效率。 0x02 漏洞概述 潍微科技-水务信息管理平台 ChangePwd 接口存在SQL注…

回顾C语言基础:九九乘法表

题目要求:LintCode 先把基本的写出来&#xff0c;为了看起来有个大概有个样子&#xff08;1&#xff09;每行换行&#xff1b;&#xff08;2&#xff09;输出结果4个空格&#xff0c;左对齐(%-5d)&#xff1a; 关于%-d的知识&#xff1a;是右对齐&#xff0c;-是左对齐&…