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相对路径和绝对路径