Serevlet
一、概念
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,泛指用 Java编写的服务器端程序。在编程过程中也指一切 实现了Servlet接口的类(约定以Servlet结尾命名)。
二、使用
在src.com.qf.servlet包中创建Servlet01类extend HttpServlet,重写其中的doGet()、doPost()方法,在方法中可以获取请求对象,和响应对象。编写逻辑业务代码,以及调用其方法对请求做出响应。
三、Servlet生命周期分析
- 客户端发送请求(request)
<form action="LoginServlet" method="post">
-
服务器接收请求,根据请求路径找到对应项目
-
扫描其中的web.xml文件,Tomcat根据xml配置文件获取当前请求体对应的Servlet类
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>com.qf.servlet.Servlet01</servlet-class>
<init-param>
<param-name>code</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/servlet01</url-pattern>
</servlet-mapping>
- 查询Servlet容器中是否有该类的对象,若存在这调用该Servlet对象;若不存在,则调用构造方法创建该对象,并再次扫描xml中的声明部分,创建ServletConfig对象,调用init()方法进行初始化
@Override
public void init() throws ServletException {
ServletConfig servletConfig = this.getServletConfig();
String code = servletConfig.getInitParameter("code");
System.out.println("-- init--" + code);
}
-
获取到Servlet对象,tomcat解析请求数据,并创建HttpServletRequestWrapper请求实现类对象和HttpServletResponseWrapper响应实现类对象
-
每个Servlet对象都会先调用HttpServlet的service(req,resp)方法,对请求的Method进行判断,调用我们重写的doGet、doPost等等方法,开始业务逻辑的执行
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
四、跳转
1、跳转的分类
-
页面 – 跳转 – 页面(请求路径为前端页面访问路径)
-
使用a标签(已链接的方式)
-
使用按钮(通过编写js函数)
-
使用form表单(其中action表示目的路径,可以选择跳转的Method–Post、Get)
-
页面 – 跳转 – Servlet(请求路径为Servlet访问路径)
-
使用a标签(已链接的方式)
-
使用按钮(通过编写js函数)
-
使用form表单(其中action表示目的路径,可以选择跳转的Method–Post、Get)
-
Servlet – 跳转 – Servlet
-
使用转发的方式:res.getRequestDispatcher(“目标Servlet访问路径”).forward(request,response);
-
使用重定向的方式:resp.sendRedirect(“目标Servlet访问路径”);
-
Servlet – 跳转 – 页面
-
使用转发的方式:res.getRequestDispatcher(“目标页面”).forward(request,response);re
-
使用重定向的方式:resp.sendRedirect(“目标目标页面”);
2、转发与重定向的区别
-
区别一:请求次数的不同
转发:该方法通过在服务器内部查找目标路径所对应的资源,然后返回响应给客户端,实际请求为一次。
重定向:该方法是告诉客户端,当前请求路径服务端内部不找该资源,要求客户端再发一次目标路径的请求,服务器在接收请求返回响应,实际请求为两次。 -
区别二:场景–访问外部资源
转发:当该请求需要访问外部资源时,由于它是在内部查找资源,无法获取外部资源。
重定向:当该请求需要访问外部资源时,因为它需要客户端重新发送一次目标资源的请求,所以该请求会在外部资源服务器中访问成功。 -
区别三:场景–访问受保护的WEB_INF中的资源
转发:由于服务器内部查找该资源,所以访问成功。
重定向:由于客户端会第二次发送请求,而目标资源是受保护的,第二次请求将会访问失败。
3、中文请求路径
当请求路径中有中文字符时,我们通常会response.sendRedirect(URLEncoder.encode(“页面1.html”,“UTF-8”));来设置路径的编码格式。
标签:总结,请求,路径,访问,跳转,Servlet,页面 From: https://blog.csdn.net/a3263298665/article/details/141259446