常用方法
/*
1.获取请求方式,GET
*String getMethod()
2. (* )获取虛拟目录: /day14
*String getContextPath()
3.获取Servlet路径: /demo1
*String. getServletPath()
4.获取get方式请求参数: name=zhangsan
*String. getQueryString()
5. (* )获取请求URI: /day14/demo1
*String getRequestURI(): /day14/ demo1
* StringBuffer getRequestURL() :http://localhost/day14/demo1
6.获取协议及版本: HTTP/1.1
* String getProtocol()
7.获取客户机的IP地址:
*String getRemoteAddr()
*/
//1.获取请求方式
String method = request.getMethod();
System.out.println(method);
//2.获取虚拟目录
String contextPath = request.getContextPath();
System.out.println(contextPath);
//3.获取Servlet路径
String servletPath = request.getServletPath();
System.out.println(servletPath);
//4.获取get方式请求方式参数
String query = request.getQueryString();
System.out.println(query);
//5. (* )获取请求URI
String queryURI = request.getRequestURI();
System.out.println(queryURI);
//6.获取协议及版本: HTTP/1.1
String protocol = request.getProtocol();
System.out.println(protocol);
//7.获取客户机的IP地址:
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);
获取所有请求头名称
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取所有请求头名称
Enumeration<String> headerNames = request.getHeaderNames();
//2.遍历
while(headerNames.hasMoreElements()){
String name = headerNames.nextElement();
//根据名称获取请求头的值
String value = request.getHeader(name);
System.out.println(name+"---" + value);
}
}
请求头数据:user-agent
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//请求头数据:user-agent
String agent = request.getHeader("user-agent");
//判断agent的浏览器版本
if(agent.contains("Chrome")){
System.out.println("谷歌来了");
}else if(agent.contains("Microsoft Edge")){
System.out.println("Edge浏览器来了");
}else if(agent.contains("QQ浏览器")){
System.out.println("QQ浏览器来了");
}
}
获取请求头数据referer
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取请求头数据:referer
String referer = request.getHeader("referer");
System.out.println(referer);
//防盗链
if(referer != null){
if(referer.contains("/Demo01")){
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("播放电影");
}else{
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("想看电影吗,快来腾讯视频吧!");
}
}
}
获取网页的消息流对象
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取流对象
BufferedReader br = request.getReader();
String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
}
重点:getParameter()和setParameter()
/*
获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数
1. string getParameter(String name) :根据参数名称获取参数值
username=Z s&password=123
2. string[] getParameterValues(string name ) :根据参数名称获取参数值的数组hobby=xx&hobby=game
3. Enumeration<string> getParameterNames() :获取所有请求的参数名称
4. Map<string, string[]> getParameterMap( ) :获取所有参数的map集合
*/
//解决中文乱码问题
request.setCharacterEncoding("utf-8");
//1.getParameter
String username = request.getParameter("username");
System.out.println(username);
System.out.println("--------------------------------");
//2.getParameterValues
String[] hobbys = request.getParameterValues("hobby");
for(String hobby : hobbys){
System.out.print(hobby + "\t");
}
System.out.println("\n--------------------------------");
//3.Enumeration<string> getParameterNames()
Enumeration<String> names = request.getParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
System.out.println(name);
}
System.out.println("--------------------------------");
//4. Map<string, string[]> getParameterMap()
Map<String,String[]> map = request.getParameterMap();
Set<String> ketSet = map.keySet();
for(String key : ketSet){
String[] values = map.get(key);
for(String value : values){
System.out.println(key + "-->" + value + "\t");
}
}
}
getAttribute()和setAttribute()
Demo07_request
//存储数据
request.setAttribute("msg","hello");
//跳转到Demo08_request
request.getRequestDispatcher("Demo08_request").forward(request,response);
Demo08_request
System.out.println("Demo08_request被访问了");
Object obj = request.getAttribute("msg");//hello
System.out.println(obj);