HttpServletRequest对象代表客户端的请求,当客户端通过http协议访问服务器的时,
http请求中的所有信息都封装到这个对象中,开发人员可以通过这个对象的方法,获得客户这些信息
解决中文乱码:
way1:
request.setCharacterEncoding("UTF-8");
//改方法之对post方法有效(<a href="URL"></a>是get)
way2:
String username=request.getParameter("username"
);
String name=
new String(username.getBytes("ISO-8859-1"),"UTF-8"
);
Servlet内置:
request.getRequestDispatcher("top.jsp"
).include(request,response);
盗连接(referer):
String referer=request.getHeader("referer"
);
if(referer==
null|| !referer.startsWith("http://localhost:"
)){
response.sendRedirect("/day_06/referer/index.jsp"
);
return;
//注意当有多个重定向的时候,不用if——else的方法实现的时候不要忘记return
}
response.setRedirect(URL);
****
案例:使用HttpServletRequest的使用:
Header的name与value
//该方法只会获得该头名的一个值
String value=request.getHeader("Accept-Encoding"
);
System.out.println(value);
//获得一个头名的所有值
Enumeration<String> v=request.getHeaders("Accept-Encoding"
);
while(v.hasMoreElements()){
System.out.println(v.nextElement());
}
//获得所有的头名
Enumeration<String> name=
request.getHeaderNames();
while(name.hasMoreElements()){
String HeaderName=
name.nextElement();
System.out.println(HeaderName+"|"+
request.getHeader(HeaderName));
}
}
//获得请求数据(一般是先检查在使用)
//如果有多个,则只会获得一个头一个
String username=request.getParameter("username"
);
System.out.println(username);
System.out.println("----------22222--------"
);
//获得是参数相同的所有值
String[] name=request.getParameterValues("username"
);
for(String e:name){
System.out.println(e);
}
System.out.println("---------3333---------------"
);
/*获得所有参数的名字(但是相同的只会获得开始的那个,
若要获得所有的,则String[] name=request.getParameterValues(name1);*/
Enumeration<String> e=
request.getParameterNames();
while(e.hasMoreElements()){
String name1=
e.nextElement();
System.out.println(name1+"|"+
request.getParameter(name1));
}
/*
将名字与参数存Map,注意是Map<String,String[]>,因为一个name可能对应几个值。如果是
String的话会导致无法获取一个name对应多个值后边的值
*/
Map<String,String[]> m=
request.getParameterMap();
BeanUtils n=
new BeanUtils();
Test test=
new Test();
try {
n.populate(test,m);
} catch (IllegalAccessException e1) {
e1.printStackTrace();
} catch (InvocationTargetException e1) {
e1.printStackTrace();
}
如果给服务器看的表示当前应用,如果给浏览器看的表示网站
URL是URI的孩子;