Try hard every day!
注意事项1.jsp页面要注意导包
request
它表示的是用户所发起的一个请求,然后请求中封装了用户请求的所有信息,当服务端箱客户端响应后请求对象销毁.
常用方法:
getParameter()
getParameterValues()
getParameterNames()
得到的是所有的Parameter的名字,要遍历
getAttribute()
getSession()
请求转发(对应同一个request):
把getList的值塞进去。结合请求转发
request.setAttribute("userList",getList());(相当一个Map值,通过 getAttribute()的key值来拿到)(可以放对象的一些属性)
实现请求转发
requestDispatcher rd=reg.getRequestDispatcher("xxx.jsp")
rd.forward(reuest,response);
重定向
response.sendRedirect("xxx.jsp")
getParameter() 与 setAttribute() 的区别:
getParamenter是从客户端与服务器的交互,getAttribute()是服务器与客户端之间的交互,而且没有setParement()方法。
做请求转发过程:
form表单点击提交得到request对象,封装的request的信息 提交的所写的对象(sevlet.java)
其中我们用了setAttribute()方法,塞了一些信息给request对象,继续请求转发到一个页面(success.jsp)
--------------------------------------------------------------------------- 获取请求参数时乱码问题--------------------------------------------------------------------------
浏览器发送的请求参数使用什么编码呢?当初浏览器打开网页时使用什么编码,发送就用什么编码。
服务器端获取到发过来的请求参数默认使用ISO8859-1进行解码操作,中文一定有乱码问题
对于Post方式提交的数据,可以设置request.setCharacterEncoding("UTF-8");来明确指定获取请求参数时使用编码。但是此种方式只对Post方式提交有效。
对于Get方式提交的数据,就只能手动解决乱码:String newName = new String(name.getBytes("ISO8859-1"),"gb2312");此种方法对Post方式同样有效。
request.setCharacterEncoding("gb2312");对GET方式提交无效的原因是:该代码只设置请求实体的编码,而GET提交的数据是存放在请求行中的[资源名?param1="张三"¶m2=123],所以对GET请求的方式无效。
在tomcat的server.xml中可以配置http连接器的URIEncoding可以指定服务器在获取请求参数时默认使用的编码,从而一劳永逸的决绝获取请求参数时的乱码问题。也可以指定useBodyEncodingForURI参数,令request.setCharacterEncoding也对GET方式的请求起作用,但是这俩属性都不推荐使用,因为发布环境往往不允许修改此属性。
--------------------------------------------------------------------------地址的写法--------------------------------------------------------------------------
绝对路径(以斜线开头的路径,代表相对与当前web应用):
如果地址是给服务器用的,web应用的名称可以省略。如果地址是给客户端用的,必须写上web应用名
request.getRequestDispatcher("/index.jsp").include(request, response);
response.setHeader("Location","/Day05/index.jsp");
response.sendRedirect("/Day05/index.jsp");
this.getServletContext().getRealPath("/index.jsp");
this.getServletContext().getResourceAsStream("/index.jsp");
<a href="/Day05/index.jsp">
<from action="/Day05/index.jsp">
类加载器加载资源的时候,相对于WEB-INF下的classes目录
this.getClass().getClassLoader().getResource("");
this.getClass().getClassLoader().getResourceAsStream("");
相对路径(不以斜杠开头的路径,要参考当前所在的路径去拼新的路径)---除了在必须使用的情况外,都不要使用相对路径:
如果直接写相对路径或写./相对路径的话,相对路径替换当前路径最后一级
如果写../相对路径,则替换当前路径的最后一级路径的上一级路径。
如果想替换更高层,则写多个../