nbsp; //1.单个值的参数
String name=request.getParameter("username");
//get解决乱码:得先将获取到的信息用原来的编码表进行解码,然后再用后来的编码表进行编码
name=new String(name.getBytes("ISO-8859-1"),"UTF=8");
String sex=request.getParameter("sex");
System.out.println(name+" ......"+sex);
//2.获取多个值的
String[] hobbys=request.getParameterValues("hobby");
//遍历
for(String s:hobbys){
System.out.println(s);
}
//3.获取所有的请求参数MAP
Map<String,String[]> map=request.getParameterMap();
//遍历
Set<String> set=map.keySet();
for(String str:set){
String [] value=map.get(str);
for(String v:value){
System.out.println(str+"..."+v);
}
}
六、request的其他功能:
1、request 也是个域对象,也是具有以下功能:
setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)
2、request完成请求转发:
获得请求转发器----path是转发的地址
RequestDispatcher getRequestDispatcher(String path)
通过转发器对象转发
requestDispathcer.forward(ServletRequest request, ServletResponse response)
七、ServletContext域与Request域的生命周期比较:
1、ServletContext:
创建:服务器启动
销毁:服务器关闭
域的作用范围:整个web应用
2、request:
创建:访问时创建request
销毁:响应结束request销毁
域的作用范围:一次请求中
八、转发和重定向的区别:
1、重定向两次请求,转发一次请求
2、重定向地址栏的地址变化,转发地址不变
3、重新定向可以访问外部网站 转发只能访问内部资源
4、转发的性能要优于重定向
(需要带数据的时候用请求转发,由第一个Servlet01带数据到Servlet02!需要地址转变的用重定向)
public class Servlet01 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//向request域中存值
request.setAttribute("name", "张三" );
//请求转发
request.getRequestDispatcher("/Servlet02").forward(request, response);
}
public class Servlet02 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//从request 域中取值
String name =(String)request.getAttribute("name");
//解决中文乱码
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("hello"+name);
}