Servlet
Servlet创建
创建war项目
配置web.xml文件
在src文件中的WEB-INF中的web.xml文件写入如下代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HeolVMGU-1639194727119)(C:\Users\yc\AppData\Roaming\Typora\typora-user-images\image-20210902204300602.png)]
添加依赖
在pom.xml文件中添加Servlet依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
两种创建Servlet的方法
注解创建
重写service方法
service方法可以接受的get,post,delete,put等方法发送的请求;
package com.yc.servlet;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name="first",urlPatterns = "/first")
public class First extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("hello");
}
}
配置web.xml文件
先在web.xml文件中添加代码如下:
<servlet>
<servlet-name>SecondServlet</servlet-name>
<!-- 写入Servlet类的全限定名-->
<servlet-class>com.yc.servlet.Second</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<!-- 设置Servlet类的URL路径-->
<url-pattern>/second</url-pattern>
</servlet-mapping>
</web-app>
类中的代码如下:
package com.yc.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Second extends HttpServlet {
@Override
protected void service(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
System.out.println("second");
}
}
Request请求
Request的常用方法
getRequestURL()//获取客户端请求的完整URL (从http开始,到?前面结束)
getRequestURI()//从:开始,到?前接受
getQueryString()// 获取请求行中的参数部分
getContextPath()// 获取webapp名字 (站点名)
getMethod()// 获取客户端的请求方式
getProtocol()// 获取HTTP版本号
getParameter()和getParameterValues()方法
这两个方法是获取请求中的form表单中的name属性的值,前者是获得单个值的属性的方法后者是获取多个值得属性的方法。
请求转发
如何请求转发
request.getRequestDispatcher(url).forward(request,response);
作用域
在一次请求中可为该次请求添加属性;
req.setAttribute("account",username);
仅仅在一次转发中有用,若开始了第二次转发或中断则该次请求中的属性将无效;
Session会话
会话属性的作用域是包含多个请求,所以可以实现多个请求共用多个属性,代码如下:
req.getSession().setAttribute("account",username);
Response响应
重定位
断开此次请求,开启新的请求
response.sendRedirect("index.jsp");
getWrite方法
通过该方法可写出各种字符;
PrintWriter writer = resp.getWriter();
writer.println("abc");
writer.println("<h1>你好</h1>");
getOutputStream方法
通过该方法可获取输出流;可写出各种数据:
ServletOutputStream os = resp.getOutputStream();
os.write("你好".getBytes());
os.write("<h1>你好</h1>".getBytes());
解决乱码和在页面输出的类型
resp.setContentType("text/html;charset=UTF-8");
Cookie
Cookie可保存一些信息在客户端;代码如下包括加密:
Cookie cookie1 = new Cookie("p",new String(Base64.getEncoder().encode(password.getBytes())));
Cookie cookie2 = new Cookie("u",new String(Base64.getEncoder().encode(username.getBytes())));
resp.addCookie(cookie1);
resp.addCookie(cookie2);
在浏览器中cookie的缓存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePVujN8S-1639194727121)(C:\Users\yc\AppData\Roaming\Typora\typora-user-images\image-20210905223914665.png)]
ServletContext
Filter
Listener
getEncoder().encode(username.getBytes())));
resp.addCookie(cookie1);
resp.addCookie(cookie2);
在浏览器中cookie的缓存
[外链图片转存中...(img-ePVujN8S-1639194727121)]
## ServletContext
## Filter
## Listener
本文详细介绍了学习SpringMVC前必备的Servlet知识,包括创建war项目、配置web.xml、添加依赖、注解及web.xml创建Servlet、Request请求处理、Response响应方式、Cookie操作、ServletContext、Filter和Listener的使用。通过实例解析了Request的getParameter方法、请求转发、Session会话以及解决乱码问题。
1884

被折叠的 条评论
为什么被折叠?



