暑假学习打卡3

服务器每次收到请求都会开辟新线程,把客户端请求数据放到request,还会创建response给客户端发送响应。

HttpServletResponse:常用方法setHeader(String,String),setStatus(int),

重定向:setHeader("Location","requesturi")&setStatus(302)    sendRedirect(String)

刷新:setHeader("Refresh","3;requesturi")

getWriter和getOutputStream方法互斥,一起用会抛出IllegalStateException

HttpServletRequest:常用方法  getRemoteAddr(),getHeader(String)

获取请求URL  http://localhost:8080/day10/AServlet?username=zhangsn&password=123

getScheme() 协议 http                getServerName() 服务器名 localhost        getServletPort端口 8080            getContextPath()项目名/day10                getServletPath()Servlet路径/AServelt                                              getQueryString()参数username=zhangsn&password=123            getRequestURI():/项目名+/servlet路径                                          getRequestURL():不含参数的全部

获取请求参数:getParameter(String)单个,getParamaterValues (checkbox)        getParameterMap()所有请求参数

***Map hobby=request.getParameterMap();

for (String s1 : hobby.keySet()) {

String[] value=hobby.get(s1);

out.print(s1+":"+Arrays.toString(value));}

请求转发,请求包含区别:转发forward 包含include。转发AServlet留头不留体,包含AServlet留头留体.


请求转发和重定向区别:

1.请求转发一次请求一次响应        2.请求转发地址栏不变化        3.request.getRequestDispatcher("/Servlet名").forward(req,res) 只能转发到本项目       4.请求转发是服务器行为,只需给出Servlet路径

请求转发


1.重定向2次请求2次响应        2.重定向后地址栏会发生改变        3.response.sendRedict("/项目名/servlet路径")或可以重定向到http网页       

重定向


编码问题:

response.setCharsetEncoding("utf-8")表示以utf-8的编码编写

response.setHeader("Content-Type":"text/html;charset=utf-8")告诉浏览器服务器使用的是什么编码

***response.setContentType("text/html;charset=utf-8")


post请求:在获取参数前调用request.setCharacterEncoding("utf-8")

get请求:String name=request.getParamater("name");    byte[] bytes=name.getBytes["iso8859-1"]; name=new String(bytes,"utf-8")

你可能感兴趣的:(暑假学习打卡3)