servlet、jsp、请求转发、重定向的一些个人理解

1.servlet:servlet是基于java实现的web组件,实现了servletAPI的使用规范的java应用程序就是Servlet,是和平台无关的组件,接收web浏览器的请求,服务器处理请求后再返回web浏览器的一个过程;

2.servlet的框架:

其中的Servlet接口是包含了一些与生命周期有关的基本的方法,比如说init、service、destory,其中init只能有一次,service能有多次,destory是被gc清理时使用的也只能使用一次,ServletConfig是相关的配置属性,而这个GenericServlet则是Servlet和ServletConfig的基本实现类,HttpServlet继承了GenericServlet类,而这个MyServlet则是我们自己定义的类;

3.Servlet自定义子类的使用:

java 复制代码
@WebServlet(name="MessageBoardServlet",value="/x")
public class 自定义的类 extends HttpServlet{
@Override
protected void doGet(HttpServletRequestrequest,HttpServletResponse response){
}
@Override
protected void doPost(HttpServletRequestrequest,HttpServletResponse response){
}
}

如果说想直接通过url地址访问Servlet,调用doGet,如果是通过超链接,访问的Servlet路径,调用doPost;

在doGet和doPost中一定要对编码的类型以及类型进行设置

javascript 复制代码
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");

4.Servlet的基本运作步骤

5.Http协议:基于TCP/IP之上的应用层协议

使用请求-响应模式:请求从客户端发出,服务端对请求进行响应,并返回给浏览器端;

无状态:自身不对请求和响应之间的通信状态进行保存;

无连接:限制每次只处理一个请求。服务器处理完浏览器的请求,并收到浏览器的应答后,就断开连接;

6.HttpServletRequest使用的方法:

request.setCharacterEncoding(编码格式)

request.gerParameter("前端控件的name")获取请求的参数值;

request.getRemoteAddr():获取远程地址;
request.getParameterMap() :将前端提交的数据,以名值对方式,存储在map中;
request.getParameterValues("前端控件名"): 返回结果是一个字符串数组,用于一个名字的控件,返回多个值(复选框、可多选的下拉列表);
7.使用Commen_Beanutils工具,实现对网页中的数据封装到java实体类对象中的方法;
8.jsp:是运行在服务器端的界面,简单的来说就是java+HTML代码,使用时要注意java的代码要放在<%%>中,如:

html 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<table class="table table-striped table-bordered table-hover">
<%
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
%>
<tr>
<td>BB</td>
</tr>
<%} else {%>
<tr>
<td>AA</td>
</tr>
<% }
}%>
</table>
</div>
</body>
</html>

9.请求转发的工作原理:

从本质上来看,请求转发就是一个web资源收到客户端浏览器请求后,通知服务器调用另一个web资源来处理,是服务端行为;

通过调用RequestDispatcher接口来实现:

HttpServletRequest调用用getRequestDispatcher(String path):可以是绝对路径,也可以是相对路径;
ServletContext调用getRequestDispatcher(String):是绝对路径
forward(req,resp):将请求转发给另一个web资源
include(req,resp):将其他web资源作为响应内容包含进来
特性:
不支持跨域转发,只能跳转到当前应用的资源;
浏览器上的URL地址不改变,浏览器不知道服务器内部进行了请求转发,也不知道转发了多少次;
参数与请求转发的web之间,共享一个request和response对象
可以在请求范围内使用setAttribute(名,值),getAttribute(名)来实现资源的传递;
10.重定向:当前浏览器向服务端发送请求时,通知浏览器重新定向到另一个web资源,客户端行
为。
响应码:200表示成功,302表示重定向,404表示资源不可访问,500表示服务器内部错误(程序错误)

特点:
url地址会发生变化,变为第二次请求的地址;
一共有两次请求,对应两次request和response;
可以跨域,可以重定向任何网址;
11.重定向和请求转发的区别:
(1)请求转发是一次要求,重定向是两次要求;
(2)请求转发不支持跨域转发,只能在应用的资源中进行转发,而重定向可以定向到外域资源;
(3)请求转发是一次请求,效率更高;
(4)请求转发的url地址不变,因为对应了一次的request和response;
(5)请求转发是服务器行为,重定向是客户端行为;
12.jsp表达式:
<%=值%>注意不能使用;

相关推荐
于先生吖2 小时前
国际版答题系统 JAVA 源码实战指南
java·开发语言
码界筑梦坊2 小时前
354-基于Python的全国水稻数据可视化分析系统
开发语言·python·信息可视化·数据分析·flask·bootstrap·毕业设计
码界筑梦坊2 小时前
336-基于Python的肺癌数据可视化分析预测系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
gelald2 小时前
JVM - 垃圾回收
java·jvm·后端
AI科技星2 小时前
基于四维时空光速不变公设的量子几何与量子力学本质全维度推导验证
开发语言·人工智能·opencv·计算机视觉·数学建模·r语言
东离与糖宝2 小时前
模式匹配支持原生类型!JDK26 switch语法极简实战
java·人工智能
不会写DN2 小时前
Go 中最主流 JWT 库 jwt -go
开发语言·后端·golang
2501_921649492 小时前
RESTful 金融数据 API 文档:设计原则与最佳实践
开发语言·后端·python·金融·restful
workflower2 小时前
如何使用设计模式-误区
java·开发语言·设计模式·集成测试·软件工程·需求分析·软件需求