JavaWeb课程系列

10.3.1接收中文请求参数

         1)POST请求:post请求提交了中文。在获取参数值之前,设置请求的解码格式,使其和页面保持一致。我们以后都使用utf-8编码,它也称作万国码,集合了基本所有的字符。

         解决方法:request.setCharacterEncoding("utf-8");

         2)GET请求:GET请求参数是在地址后面的。不能使用上述方法。我们需要修改tomcat的配置文件。需要在Server.xml文件修改Connector标签,添加URIEncoding="utf-8"属性。

10.3.2向浏览器发送有中文字符的响应

         向浏览器发送响应的时候,要告诉浏览器,我使用的字符集是哪个,浏览器就会按照这种方式来解码。如何告诉浏览器响应内容的字符编码方案。很简单。

解决方法:response.setContentType("text/html;charset=utf-8");

或者使用这两句组合:

response.setCharacterEncoding("utf-8");

response.setHeader("Content-Type", "text/html;charset=utf-8");

 

我们一般使用response.setContentType("text/html;charset=utf-8");

 

11.路径问题

11.1提出问题:

①创建Web应用Path,目录结构如图所示

②在a.html中有超链接<a href="b.html">To b.html</a>

③如果先直接访问a.html,再通过超链接转到b.html没有问题。

④如果先通过TestServlet转发到a.html,则浏览器地址栏会变成:

http://localhost:8989/Path/TestServlet

此时再点击超链接<a href="b.html">To b.html</a>就会发生问题,找不到b.html。

⑤原因是超链接<a href="b.html">To b.html</a>使用的是相对路径,浏览器进行解析时,只能以当前浏览器地址栏里的路径为基准。例如,当前浏览器地址栏里的内容是:

http://localhost:8989/Path/TestServlet

那么经过浏览器解析后b.html的访问地址就成了:http://localhost:8989/Path/TestServlet b.html这显然无法访问到b.html。

 

11.2完整的url构成

11.3相对路径和绝对路径