JavaWeb(五)转发、重定向、Get、POST
一、转发
转发:一般查询了数据之后,转发到一个jsp页面进行展示
req.setAttribute("list", list);
将数据(list)存入 请求作用域(Request Scope),供 JSP 页面使用
req.getRequestDispatcher("student_list.jsp").forward(req, resp);
服务器内部 转发(Forward) 到 student_list.jsp页面。
二、重定向
删除请求阶段:
浏览器发送request1请求,
服务器通过 JDBC 删除数据库记录
删除完成后,服务器返回 302 重定向(response1),强制浏览器跳转到 /student
列表页展示阶段:
浏览器发送请求request2
服务器内部转发到student_list.jsp
JSP 渲染最新学生列表后返回 HTML(response2)
三、forward()与redirect()的区别
删除时弹窗
四、get和post的使用
GET 和 POST 是 HTTP 协议中两种常用的请求方法,它们在不同的场景和目的下有不同的特点和用法。一般来说,可以从以下几个方面来区分它们:
GET,POST,PUT,DELETE就对应着对这个资源的查、改、增、删 4个操作,具体点来讲GET一般用于获取/查询资源信息,而POST一般用于添加资源信息
- 语义上的区别:GET 通常用于获取或查询资源,而 POST 通常用于创建或修改资源。GET 请求应该是幂等的,即多次重复执行不会改变资源的状态,而 POST 请求则可能有副作用,即每次执行可能会产生不同的结果或影响资源的状态。
- 格式上的区别:GET 请求的参数通常放在 URL 中,形成查询字符串(querystring),用?形式拼接在地址栏后面,而 POST 请求的参数通常放在请求体(body)中,可以有多种编码格式,如 application/x-www-form-urlencoded、multipart/form-data、application/json 等。GET 请求的 URL 长度受到浏览器和服务器的限制,而 POST 请求的 body 大小则没有明确的限制。
- 缓存上的区别:由于 GET 请求是幂等的,它可以被浏览器或其他中间节点(如代理、网关)缓存起来,以提高性能和效率。而 POST 请求则不适合被缓存,因为它可能有副作用,每次执行可能需要实时的响应。
- 安全性上的区别:GET 请求和 POST 请求都不是绝对安全的,因为 HTTP 协议本身是明文传输的,无论是 URL、header 还是 body 都可能被窃取或篡改。为了保证安全性,必须使用 HTTPS 协议来加密传输数据。不过,在一些场景下,GET 请求相比 POST 请求更容易泄露敏感数据,因为 GET 请求的参数会出现在 URL 中,而 URL 可能会被记录在浏览器历史、服务器日志、代理日志等地方。因此,一般情况下,私密数据传输应该使用 POST + body。
不管是Get方式还是POST方式传参数,后台代码获取参数的方式都是一样的。
req.getParameter("name");