JavaWeb中的一些简单操作(四) 页面间的跳转的本质以及url乱码问题解决
2017-08-31 15:17
633 查看
1、 页面间是通过什么方法跳转的?页面和后台之间的跳转?
页面间的跳转:
页面和后台间的跳转:
超链接跳转:
2、 url乱码问题解决
jsp页面的编码方式有两个地方需要
21、 post方式传值乱码
由于post是通过request存储的,在另一个页面也是通过request.getParameter(String name)来提取信息的,所以这种的乱码主要是因为request存储信息的编码设置导致的。
post提交时,如果没有设置提交的编码格式,则会以ISO-8859-1方式提交,接受的jsp页面却以UTF-8方式接收。
所以:
或者:
在接收页面设置:
22、 get方式传值乱码
221、 表单get传值:实际上也是通过url地址传值
编程过程: 首先浏览器根据页面的charset编码方式对传值进行编码
然后提交至服务器交给tomcat,tomcat进行解码时,采用的解码方式是由server.xml文件中的URIEncoding决定的
也就是说 request.getParameter()获取表单参数值是,进过charset的编码和URIEncodng的解码
222、 url地址传值
编码过程: url地址中的中文被从GBK(浏览器的)转换成ISO-8859-1,交给tomcat后,又被tomcat根据URLEncoding解码。
解决方法: 把URLEncoding设置为GBK/utf-8,但是这样会影响配置
更好的: 使用java.net.URLEncoder和URLDecoder对地址中的中文进行手动编码和解码
综上所述:
1、 所有页面的charset设置为UTF-8
2、 tomcat的URIEncoding默认是ISO-8859-1,设置为UTF-8。
解决中文命名的文件以及请求以get方式提交的
3、 添加过滤器,调用request.setCharacterEncoding(“utf-8”)
解决 请求以post方式提交的乱码问题
4、 url地址中存在中文参数时,首先对中文参数使用URLEcoder编码为utf-8,然后在request.getParameter()接收到参数后再使用URLDecoder还原
页面间的跳转:
通过window.location.href="**.jsp"
页面和后台间的跳转:
通过 window.location.href="***/servlet/servlets"
超链接跳转:
<a href="111" ></a>实际上也是通过设置window.location.href的属性
// test.html <html> <head></head> <body> <script> window.location.href="2.html" </script> </body> </html> // 2.html <html> <head></head> <body> <h1>fuck you shit</h1> </body> </html> 按钮的跳转: <input type="button" click="javascript: window.location.href=2.html" value="跳转"/>
2、 url乱码问题解决
jsp页面的编码方式有两个地方需要
<%@ page pageEncoding="utf-8" %> <%@ page contentType="text/html;charset=utf-8" %> pageEncoding: 指的是jsp文件本身在本地保存时的编码方式 contentType: 指服务器发送网页内容给客户端时所使用的编码 从第一次访问jsp页面开始,到这个页面被发送到客户端,要经过三次编码转换: 1、 jsp编译成.java, 它会根据pageEncoding的设定读取jsp。如果pageEncoding设定错误,出来的就是中文乱码 2、 由javac的java源码至java byteCode的编译,不论jsp编写时用的是什么编码方案,经过这个阶段的结果全是UTF-8的encoding的java源码 javac用UTF-8的encoding的java源码,编译成UTF-8 encoding的二进制码 3、 tomcat或者其它的application container 载入和执行第二阶段来的二进制码。这时contentType就有用了
21、 post方式传值乱码
由于post是通过request存储的,在另一个页面也是通过request.getParameter(String name)来提取信息的,所以这种的乱码主要是因为request存储信息的编码设置导致的。
post提交时,如果没有设置提交的编码格式,则会以ISO-8859-1方式提交,接受的jsp页面却以UTF-8方式接收。
所以:
String str = new String(request.getParameter("name").get("ISO-8859-1"), "UTF-8")
或者:
在接收页面设置:
request.setCharacterEncoding("utf-8")
22、 get方式传值乱码
221、 表单get传值:实际上也是通过url地址传值
编程过程: 首先浏览器根据页面的charset编码方式对传值进行编码
然后提交至服务器交给tomcat,tomcat进行解码时,采用的解码方式是由server.xml文件中的URIEncoding决定的
也就是说 request.getParameter()获取表单参数值是,进过charset的编码和URIEncodng的解码
解决方法: 1、 在tomcat的server.xml中的HTTP Connector或者AJP Connector 加上URIEncoding="UTF-8" 2、 使用useBodyEncodingForURI = "true" 这种适合tomcat实例下需要跑多个Encoding的程序
222、 url地址传值
编码过程: url地址中的中文被从GBK(浏览器的)转换成ISO-8859-1,交给tomcat后,又被tomcat根据URLEncoding解码。
解决方法: 把URLEncoding设置为GBK/utf-8,但是这样会影响配置
更好的: 使用java.net.URLEncoder和URLDecoder对地址中的中文进行手动编码和解码
综上所述:
1、 所有页面的charset设置为UTF-8
2、 tomcat的URIEncoding默认是ISO-8859-1,设置为UTF-8。
解决中文命名的文件以及请求以get方式提交的
3、 添加过滤器,调用request.setCharacterEncoding(“utf-8”)
解决 请求以post方式提交的乱码问题
4、 url地址中存在中文参数时,首先对中文参数使用URLEcoder编码为utf-8,然后在request.getParameter()接收到参数后再使用URLDecoder还原
// 将中文字符先由utf-8转成字节数组,然后再转成ISO-8859-1的字符串 String address = new String("江苏省南京市".getBytes("UTF-8"), "ISO-8859-1"); String address = new String(address.getBytes("ISO-8859-1"), "UTF-8");
相关文章推荐
- Eclipse JAVA 前端/后端页面跳转乱码问题解决
- Java在web页面上的编码解码处理及中文URL乱码解决
- 解决jsp页面中传参的乱码问题 javaweb
- java 页面url传值中文乱码问题解决
- 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决
- Java在web页面上中文URL乱码解决
- java页面url传值中文乱码问题解决
- [java]增删改查后给出操作提示后跳转到数据列表的小问题解决[简单实现]
- 【javaweb:Servlet】解决Servlet页面输出中文乱码问题
- PHP 显示页面以及数据库中出现乱码问题的解决方式
- Java中按照行读取和写入文件 日志常用操作 解决中文乱码问题
- C# asp.net页面通过URL参数传值中文乱码问题解决办法
- 前台页面使用utf-8编码,url中包含中文参数时后台获取参数乱码问题解决
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- 关于asp.net页面通过url传值,中文出现乱码的一些有趣的问题~~~
- 在Java中实现.net中DataTable功能以及操作双数据库的List连接问题解决方案探究
- asp.net页面通过URL参数传值中文乱码问题解决办法
- PostgreSQL一些简单问题以及解决办法
- JAVA web开发中的编码问题-解决乱码问题
- java web中配置Filter解决jsp中文乱码问题