创建Servlet的方式之一:继承HttpServlet类(经常使用)
如果请求方式为get请求则调用doGet()方法;
如果请求方式为post请求则调用doPost()方法。
开发中通常不会在两个方法中写重复的代码,会造成代码冗余。
Request
一、获取请求行数据
//获取请求方式
String method = req.getMethod();
System.out.println(method);
//获取get方式参数
String queryString = req.getQueryString();
System.out.println(queryString);
//解析请求参数
String name = req.getParameter("name");
System.out.println(name);
String age = req.getParameter("age");
System.out.println(age);
//获取请求URL
String url = req.getRequestURI();
System.out.println(url);
二、获取请求头的数据
//通过请求头的名称,获取请求头的值
Enumeration<String> headers = req.getHeaderNames();
while (headers.hasMoreElements()){
String header = headers.nextElement();
String value = req.getHeader(header);
System.out.println(header + ":" + value);
}
三、取请求体数据
请求体:只有post请求方式才有请求体,在请求体中封装了post请求的请求参数(get、post都可以用)
String getParameter(String name) 根据参数名获取参数值 username = yt & age=22
String[] getParameterValues(String name) 根据参数名称获取参数值数组
Enumeration getParameterNames() 获取所有请求的参数名称
Map<String, String[]> getParameterMap() 获取所有参数的Map集合
-
乱码问题
get方式,tomcat已经处理了
post方式,设置request.setCharacterEncoding("utf8")
四、请求转发
一种服务器内部资源跳转的方法,servlet之间的跳转
步骤:
-
通过request请求对象获取请求转发器对象
-
通过RequestDispatcher对象进行转发
req.getRequestDispatcher("/student").forward(req,resp);
特点:
- 浏览器地址路径不发生变化
- 只能转发到服务器内部资源
- 转发是一次请求
五、、共享数据
// 存储数据
req.setAttribute("age",18);
System.out.println(req.getAttribute("age"));
ServletContext servletContext = req.getServletContext();
servletContext.setAttribute("name","yt");
System.out.println(servletContext.getAttribute("name"));
-
域对象:一个有作用范围的对象,可以在范围内共享数据
-
request域:代表一次请求范围,一般用于请求转发的多个资源数据