1.关于request对象处理get和post请求,中文可能出现乱码的问题:
tomcat在处理get和post请求的时候处理方式不同。
POST请求是将参数存放在请求数据包的消息体中
所以使用request.setCharacterEncoding("utf-8");可以处理
但是GET请求是将参数存放在url中,此时setCharacterEncoding就不起作用了,此时我们需要采用手写代码进行转码。 (因为tomcat对get请求生成url自动做了iso8859-1编码)
e.g.:
String name = new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");
也有说修改tomcat配置的:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
/>
不过自己试了试不知为何貌似无效……
2.关于request对象执行forward和include
HttpServletRequest类提供了一个getRequestDispatcher(String path)方法,其中path为forward/include的目标路径,返回RequesDispatcher,该对象提供以下两个方法
forward(ServletRequest request, ServletResponse response):执行forward;
include(ServletRequest request, ServletResponse response):执行include;
调用如下:
request.getRequestDispatcher("/a.jsp").include(request, response);
request.getRequestDispatcher("/a.jsp").forward(request, response);
forward方法与使用jsp:forward标签效果一样,但是include方法与jsp:include标签效果不同:
include方法调用后path中的内容会被先加载到返回页面中,然后才是当前页面内容;
而jsp:include标签则在什么位置使用就在什么位置加载path中的内容。
最后,注意path中的字符串必须以“/”开头。
继续学习,hoho!~