Servlet总结

Servlet总结

Servlet是什么

servlet是一个运行在服务器端的程序,用于接受前端的请求以及处理响应,Servlet包括Request、Response、Session、Context、Listener、Config、Filter。

生命周期

init() 只执行一次的初始化函数

doFilter(request,response,filterChain) 每次请求都会执行

destory() 只执行一次的销毁函数

Request请求对象

HttpServletRequest

@WebServlet("/xxx")

获取客户端的各种信息(ip、数据、请求头等)

getParamater(“name”); 获取前端提交的参数

getAttribute(“key”);获取存储到Request对象中的数据,转发的时候用到

setAttribute(“key”,“value”);存储到Request对象中的数据,转发的时候用到

getRequestURL()方法返回客户端发出请求时的完整URL。

getQueryString() 方法返回请求行中的参数部分。

getRemoteAddr()方法返回发出请求的客户机的IP地址。

getRemoteHost()方法返回发出请求的客户机的完整主机名。

getRemotePort()方法返回客户机所使用的网络端口号。

getLocalAddr()方法返回WEB服务器的IP地址。

getLocalName()方法返回WEB服务器的主机名。

getHeader(“key”)方法:获取请求头的信息

转发

req.getRequestDispatcher("/url").forward(req,resp);

req.getPart(“name”)获取前端提交的文件,form表单需要enctype=“multipart/form-data”、@MultipartConfig

Session存储对象

getSession() 如果获取不到就返回null

getSession(boolean) 如果获取不到就创建新的对象

session.setAttribute(“key”,“value”); 存

session.setAttribute(“key”,“newvalue”); 更新

session.removeAttribute(“key”); 删除

Response响应对象

HttpServletResponse

setHeader(String name,String value) 将给出的名字和值设置响应的头部

setHeader(“refresh”,“5;url=http://aaa.com”) 自动跳转

setHeader(“content-disposition”,“attachment;filename=xx.xx”);

setError(int sc) 能控制页面是否正常访问

setStatus(int sc) 仅仅改变状态码而已,给当前响应设置状态码,如:setStatus(200)

context.getMimeType(filename) 获取响应的MIME类型

setContentType(String ContentType) 设置响应的MIME类型,setContentType(“text/html”)

setCharaceterEncoding(String arg) 设置响应的字符集编码,如:setCharaceterEncoding(“utf8”)

重定向:

sendRedirect(“htpp://aaa.com”)

Context上下文对象

可以在任何地方直接调用getServletContext()获取对象,代表整个应用程序,一般可用于存储公共数据

context.getMimeType(filename) 获取响应的MIME类型

Listener监听器

@WebListener

1、 ServletContextListener 监听整个应用程序(启动|销毁)

2、 ServletContextAttributeListener 监听整个应用(属性)程序(增加|修改|删除)

3、 ServletRequestListener 监听每一次请求对象(启动|销毁)

4、 ServletRequestAttributeListener 监听每一次请求对象(属性)(增加|修改|删除)

5、 HttpSessionListener 监听Session(启动|销毁)

6、 HttpSessionAttributeListener 监听Session(属性)(增加|修改|删除)

Filter过滤器

Filter过滤Servlet

@WebFilter("/*")

生命周期

init() 只执行一次的初始化函数

doFilter(request,response,filterChain) 每次请求都会执行

destory() 只执行一次的销毁函数

字符集编码过滤器

servletRequest.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=utf8");
servletResponse.setCharacterEncoding("utf8");

跨域请求过滤器

HttpServletResponse response = (HttpServletResponse) servletResponse;
// 允许的源头,请求这的ip,多个都好隔开
response.setHeader("Access-Control-Allow-Origin", "*");
// 允许的请求方法,多种方法都好隔开
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
// 允许的请求头字段,多个都好隔开
response.setHeader("Access-Control-Allow-Headers", "*");
// 用来指定本次预检请求的有效期,单位为秒,在此期间不用再发出另一条预检请求
response.setHeader("Access-Control-Max-Age", "3600");
// 是否允许后续请求携带认证信息(cookies),该值只能是true,否则不返回
response.setHeader("Access-Control-Allow-Credentials", "true");
filterChain.doFilter(servletRequest, response); // 特性:
上一篇:2E Bank Hacking——思维题


下一篇:2021-05-31