西安免费公司网站设计,中国制造网入驻,免费ppt元素,纯js做网站相关笔记#xff1a;【JavaWeb之Servlet】 文章目录 1、Servlet复习2、HttpServletRequest的使用3、HttpServletResponse的使用4、获取HttpServletRequest和HttpServletResponse 1、Servlet复习
Servlet是JavaWeb的三大组件之一#xff1a;
ServletFilter 过滤器Listener 监…相关笔记【JavaWeb之Servlet】 文章目录 1、Servlet复习2、HttpServletRequest的使用3、HttpServletResponse的使用4、获取HttpServletRequest和HttpServletResponse 1、Servlet复习
Servlet是JavaWeb的三大组件之一
ServletFilter 过滤器Listener 监听器 Servlet是运行在服务器上的一个Java小程序它可以接收客户端发送过来的请求并响应数据给客户端。 Servlet接口的实现和继承关系如下日常开发中直接继承HttpSerlvet类就好 每次只要有请求进入Tomcat服务器Tomcat服务器就会把请求过来的HTTP协议信息解析好封装到HttpServletRequest对象中然后传递到上图中的service方法doGet、doPost中用于给开发者来编写自己需要的逻辑。
2、HttpServletRequest的使用
常用方法
getRequestURI() 获取请求的资源路径getRequestURL() 获取请求的统一资源定位符getRemoteHost() 获取客户端的IP地址getHeader() 获取请求头getParameter() 获取请求的参数getParameterValues() 获取请求的参数多个值的时候getMethod() 获取请求的方式GET、POSTsetAttribute(key,value) 设置域数据getAttribute(key获取域数据getRequestDispatcher() 获取请求转发对象
其中Header和请求参数的相关方方法的类型与形参
// 获取请求头数据,通过请求头名称获取值
String getHeader(String name)
// 获取所有请求头信息
Enumeration getHeaderNames()
请求参数
// 获取请求参数通用方式(根据参数名称获取参数值) usernamezhangsan
String getParameter(String name)
// 获取请求参数名称获取参数值的数组 hobbyxxhobbygame
String[] getParameters(String name)
// 获取请求参数名称(与获取请求头方法类似)
Enumeration getParameterNames()
// 获取所有参数的Map集合
Map getParameterMap()
//....
EnumerationString enumeration request.getParameterNames();
MapString,String parameterMap new HashMapString,String();
while (enumeration.hasMoreElements()){String parameter enumeration.nextElement(); parameterMap.put(parameter,request.getParameter(parameter));
}
//...示例代码
package com.llg.web;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.Arrays;public class HttpServlet1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username request.getParameter(username);String password request.getParameter(password);String[] hobby request.getParameterValues(hobby);System.out.println(username: username);System.out.println(password: password);System.out.println(hobby: Arrays.asList(hobby));System.out.println(URI: request.getRequestURI());System.out.println(URL: request.getRequestURL());System.out.println(Client_IP:request.getRemoteHost());System.out.println(User-Agent: request.getHeader(User-Agent));System.out.println(Request-Method: request.getMethod());}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {/*** setCharacterEncoding方法设置请求的字符集为UTF-8解决post请求的中文乱码问题* 注意要在获取请求参数之前调用*/request.setCharacterEncoding(UTF-8);System.out.println(-----POST-----);String username request.getParameter(username);String password request.getParameter(password);String[] hobby request.getParameterValues(hobby);System.out.println(username: username);System.out.println(password: password);System.out.println(hobby: Arrays.asList(hobby));}
}
3、HttpServletResponse的使用
HttpServletResponse和HttpServletRequest类一样每次请求进来Tomcat服务器都会创建一个Response对象传给Servlet程序使用。 HttpServletRequest表示请求过来的信息HttpServletResponse表示所有响应的信息如果需要修改或设置返回给客户端的信息则可通过HttpServletResponse对象来设置。 关于两个输出流
字节流 getOutputStream()方法常用于下载传递二进制数据字符流 getWriter()方法常用于回传字符串用的多
两个流不能同时使用。 运行 给客户端回传信息 运行 注意回传中文信息发生乱码时需要设置字符集
//具体看文章开头的笔记【Servlet】
response.setHeader(Content-Type,text/html; charsetUTF-8);
4、获取HttpServletRequest和HttpServletResponse
除了正常的Tomcat打包传过来的HttpServletRequest和HttpServletResponse对象也可以在其他地方自己获取。
途径一直接注入
Resource
private HttpServletRequest request;//Autowired
Resource
private HttpServletResponse response;
途径二controller层中直接用
GetMapping(value /abc/)
public String doSomething(HttpServletRequest request,HttpServletResponse response) {//...
}
途径三从RequestContextHolder中获取
关于SpringMVC的RequestContextHolder即持有上下文的Request容器参考https://developer.aliyun.com/article/908719
ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request servletRequestAttributes.getRequest();
HttpServletResponse response servletRequestAttributes.getResponse();