文章目录
-
-
- 1.HttpServletRequset请求参数的获取
- 2.HttpServletRequest设置域属性
- 3.HttpServletRequest接口中的其他方法:
- 4.HttpServletRequest请求端中文乱码
-
1.HttpServletRequset请求参数的获取
根据表单中的name获取表单中的value,注意是针对请求参数而言的。
package HttpServlet;
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;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;
@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取指定名称的请求参数值
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println("name="+name);
System.out.println("age="+age);
//获取所有请求名称的请求参数值
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
String eleName = parameterNames.nextElement();
String eleValue = request.getParameter(eleName);
System.out.println(eleName+"="+eleValue);
}
//获取指定参数的所有值
String[] hobbies = request.getParameterValues("hobby");
for(String hobby:hobbies){
System.out.println(hobby);
}
//获取存放请求参数的Map
Map<String, String[]> parameterMap = request.getParameterMap();
Set<String> set = parameterMap.keySet();
for(String key:set){
System.out.println(key+"="+request.getParameter(key));
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
2.HttpServletRequest设置域属性
ServletRequestDemo1文件:在其中设置域属性,如果想在其他Servlet中获取域属性就要使用请求转发,否则不能获取到域属性的值。request对象的生命周期是一次请求。
而ServletContext中设置的域属性,可以在任何一个Servlet中获取。
package HttpServletRequest;
import javax.servlet.RequestDispatcher;
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("/ServletRequestDemo1")
public class ServletRequestDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("username","zhangsan");
request.setAttribute("password","123");
//从请求中删除域属性
request.removeAttribute("password");
//将请求转发给ServletRequestDemo2
request.getRequestDispatcher("/ServletRequestDemo2").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
ServletRequestDemo2文件:
package HttpServletRequest;
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;
import java.util.Enumeration;
@WebServlet("/ServletRequestDemo2")
public class ServletRequestDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Object username = request.getAttribute("username");
Object password = request.getAttribute("password");
System.out.println("username="+username);
System.out.println("password="+password);
Enumeration<String> attributeNames = request.getAttributeNames();
while (attributeNames.hasMoreElements()){
String name = attributeNames.nextElement();
System.out.println(name+"="+request.getAttribute(name));
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
3.HttpServletRequest接口中的其他方法:
package HttpServletRequest;
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("/ServletRequestDemo3")
public class ServletRequestDemo3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求的URL
StringBuffer requestURL = request.getRequestURL();
System.out.println("requestURL="+requestURL);
//获取请求的URI
String requestURI = request.getRequestURI();
System.out.println("requestURI="+requestURI);
//获取当前web应用的根路径
String contextPath = request.getContextPath();
System.out.println("contextPath="+contextPath);
//获取客户端IP
String remoteAddr = request.getRemoteAddr();
System.out.println("remoteAddr="+remoteAddr);
//获取ServletPath
String servletPath = request.getServletPath();
System.out.println("servletPath="+servletPath);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
4.HttpServletRequest请求端中文乱码
乱码.html:表单Post方式提交
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/34/ServletErrorCode1" method="post">
姓名: <input type="text" name="name"><br>
年龄: <input type="text" name="age"><br>
爱好:
<input type="checkbox" name="hobby" value="running">跑步
<input type="checkbox" name="hobby" value="reading">看书
<input type="checkbox" name="hobby" value="listening">听歌
<input type="submit" value="提交">
</form>
</body>
</html>
ServletErrorCode1文件:
package 中文乱码;
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("/ServletErrorCode1")
public class ServletErrorCode1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println("name="+name);
System.out.println("age="+age);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
解决Post提交时的中文乱码问题,该方法设置了请求体中的编码
request.setCharacterEncoding("UTF-8");
//解决Post提交时的中文乱码问题,该方法设置了请求体中的编码
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println("name="+name);
System.out.println("age="+age);