- 浏览: 1051117 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (228)
- Web开发 (72)
- 页面相关 (43)
- java (33)
- struts (3)
- spring (14)
- oracle (16)
- mysql (13)
- SqlServer (13)
- tomact (7)
- weblogic (2)
- groovy (3)
- JFreeChart (4)
- JNative (2)
- dll (2)
- myeclipse (6)
- eclipse (10)
- svn (1)
- 正则表达式 (2)
- 设计模式 (1)
- 行业积累和感悟 (9)
- c# (2)
- maven (4)
- Node.js (1)
- 网络相关 (1)
- ftp文件上传下载 (2)
- jQuery (6)
- html5 (1)
- linux (5)
- PowerDesigner (2)
- Python (5)
- php (1)
- web service (5)
- MyBatis (4)
- 缓存相关 (3)
- Work summary (3)
- git&github (1)
- dubbo (1)
最新评论
-
fj520lb:
[flash=200,200][url][img][list] ...
Eclipse中将web项目自动发布到Tomcat webapps下 -
追梦少年蒋富贵:
楼主 你这个有问题 在 mapper 配置那段代码之后 ,不通 ...
spring+Mybatis+Ehcache整合 -
Blod123:
如果不在mapper中写 <cache type=&qu ...
spring+Mybatis+Ehcache整合 -
birllove:
看到这个终于搞好了 多谢哈
The prefix "mvc" for element "mvc:annotation-driven" is not bound 的解决方法 -
ccwwdd:
很好用。O(∩_∩)O谢谢分享!!!
ajax异步文件上传,servlet处理,含demo
本文转载自:http://hi.baidu.com/shengchen1357/item/1b933e370343a93b2f20c456
在JSP和Servlet中有几个地方都可以设置编码,各个编码的功能也不一样,本文将对各个编码做一个小结。
各种编码一览
A. JSP/Servlet都有的编码设置
1. request.setCharacterEncoding("UTF-8")
2. response.setCharacterEncoding("UTF-8")
3. response.setContentType("text/html; charset=UTF-8");
4. response.setHeader("Content-Type", "text/html; charset=UTF-8");
B. JSP专有的编码设置
1. <%@ page pageEncoding="UTF-8" %>
2. <%@ page contentType="text/html; charset=UTF-8" %>
C. HTML页面中的编码设置
1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
※以下内容用到本部分编码设置时,将使用A1, A3, B2的方式
--------------------------------------------------------------------------------
浏览器如何确定编码格式来显示页面
web服务器在接收到浏览器的请求信息后,经过处理,会发送一个应答消息给浏览器。应答消息包含一般三个部分:状态行,应答首部,应答主体。下面是一个示例:
HTTP/1.0 200 OK
Last-Modified: Mon: 20 Dec 2001 23:26:42 GET
Date: Tue 11 Jan 2002 20:52:40 GMT
Status: 200
Content-Type: text/html; charset=UTF-8
Servlet-Engine: Tomcat Web Server/4.0.1
Content-Length: 59
<html>
<body>
<h1>Hello World!</h1>
</body>
</html>
其中,第一行是状态行,最后的一部分是应答主体,而中间的部分就是应答首部了。而应答主体部分的Content-Type中的charset就指定了浏览器应该采用什么编码格式来显示页面。如果没有指定charset的话,浏览器会根据C1(meta中的charset)来显示页面;如果C1也没有的话,就采用本地默认的编码格式显示页面(应该与客户端的操作系统有关)
★浏览器显示页面所用的格式可以通过菜单 -> 查看 -> 编码来查看具体是哪种编码格式
--------------------------------------------------------------------------------
web服务器如何决定编码
从上面可以知道,服务器在发送给客户端的应答主体中一般会包含charset。而这个charset的值有几个来源,我们从高优先级到低优先级排列。
注:下面的结论是采用Tomcat 5.5确认的结论,不一定全部适用于其他服务器。
1. A2, A3, A4
如果你的JSP或者Servlet中包含以上3中类型的代码,那么charset就是它们。如果有多条语句设置,那么charset就是最后一条所设置的值。
2. B2
B2的代码在编译成class文件时会自动转换为A3,但是是位于所有代码的最前面部分。所以,如果JSP中包含A2, A3, A4的代码,B2就不会再起作用,如果没有的话,那么值就是B2所设定的charset的值。
3. B1
如果1和2都不存在的话,B1的值就会被采用。
4. web服务器默认值
一般是ISO-8859-1
--------------------------------------------------------------------------------
JSP的编译过程
JSP在被访问时,需要编译成Java的bytecode才会被执行,而这个编译过程是分两步进行的。第一步是:JSP -> Java文件的转换过程,第二步是Java -> class文件的编译过程。
其中,第一步的JSP -> Java文件的转换过程,就会使用B1和B2的两部分内容。web服务器会根据B1的pageEncoding的设置来读取jsp文件,并且把它转换为以 UTF-8格式编码的java文件。如果JSP中有汉字,而pageEncoding设置的是ISO-8859-1,或者没有设置的话,出来的java文件中就会有乱码。至于B2呢,web服务器会把它转换为A3一样的代码,并且把它放在代码的最前面部分。
而第二步就是普通的Java文件的编译过程,javac使用UTF-8格式读取java文件,再编译成UTF-8格式的class文件。
★用过MyEclipse写JSP的可能就知道,如果你的pageEncoding设置的值与JSP文件本身的编码格式不一致的话,MyEclipse会报错,并且无法保存成功。它这样做就可以保证你写在JSP中的文字一定能被正确解析,因为你肯定敲一堆乱码出来给自己看的。
--------------------------------------------------------------------------------
其他相关知识
★上面的内容基本上都是关于页面输出时的编码,而没有输入时的编码说明,因为不是本文的重点,所以只在这里稍微补充以下。页面输入的编码主要是指用户在页面上输入一些内容,然后发送到服务器端,服务器端要采用某种编码方式来解码用户的请求。这个部分根据用户请求的类型(POST/GET)不同有不同的处理方式。
对于POST方式来说,因为客户端请求前一张页面时,就已经得到Web服务器设置的编码格式,此时用户以POST方式发送请求时,所有的数据将自动采用当前页面设置的编码格式编码。那么,服务器端只要用同样的编码格式解码就可以了。如,使用A1是可行的一种方法。
对于GET方式来说,客户端在请求时是没有使用编码格式的,Web服务器将采用默认的编码格式解码。如Tomcat 5.0中默认采用ISO-8859-1编码格式。如果需要配置成其他格式,需要修改Tomcat的配置文件中的Connector tag中的useBodyEncodingForURI或者URIEncoding。
不过在J2EE系统中,类似于A1这样的代码一般不会写在JSP/Servlet中,而是使用一个Filter类来实现。
★我们可以写java代码访问某JSP或者Servlet来查看具体的应答消息内容。
url = new URL("http://localhost:8080/Encoding/page/test.jsp");
URLConnection urlConn = url.openConnection();
System.out.println(urlConn.getHeaderFields());
输出地结果就是类似于下面这样的信息:
{Content-Length=[265], Set-Cookie=[JSESSIONID=367DB3A663B8F6B0D84C6EF3FDB1BF43; Path=/Encoding], null=[HTTP/1.1 200 OK], Date=[Sat, 06 Mar 2010 09:01:27 GMT], Server=[Apache-Coyote/1.1], Content-Type=[text/html;charset=UTF-8]}
--------------------------------------------------------------------------------
发表评论
-
解决jquery load,get 方法缓存数据问题
2017-03-03 16:29 946当jquery load 一个页面时候 只加载一次 解决 ... -
使用Spring MVC统一异常处理实战
2017-01-19 16:58 49421 描述 在J2EE项目的开发中,不管是对底层的数据库操作过 ... -
spring中context:property-placeholder元素详解
2016-11-21 12:45 1574在spring-context.xml配置中,读取配置文件 ... -
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
2016-10-08 13:18 1919概述:mysql版本5.6,错误信息如下: ### ... -
ResourceManager : unable to find resource '***.vm' in any resource loader
2016-09-30 15:48 8516项目使用springboot+freemarker在访问每个 ... -
sprintboot整合logback
2016-09-30 15:09 1921以下是配置信息: spring boot日志配置 ... -
Linux环境下C3P0 Failed to get local InetAddress for VMID 解决办法
2016-09-27 12:34 1511参考:http://blog.csdn.net/top_co ... -
X-Forwarded-For介绍及返回ip地址遇到的坑
2016-09-18 17:19 1953今天遇到一个问题:页面在android版微信内置浏览器中打不 ... -
微信分享报错config:invalid url domain
2016-09-13 13:28 25841微信开发中遇到,当把secondShare里面的wx.con ... -
js判断是否在微信浏览器中打开
2016-08-26 16:30 1129用JS来判断了,经过查找资料终于实现了效果,直接上代码 ... -
Spring MVC @ResponseBody注解返回响应流时中文乱码问题的解决
2015-12-30 14:40 1372在Spring MVC 的Controller中使用@Res ... -
彻底解决Spring MVC 中文乱码问题
2015-12-30 14:29 32901:表单提交controller获得中文参数后乱码解决方案 ... -
关于Spring事务回滚的问题
2015-12-28 23:12 1405在Spring的配置文件中,如果数据源的defaultAu ... -
javaweb项目发布到tomcat后无法访问,问题解决方案
2015-08-20 23:50 12584javaweb项目发布到tomcat后无法访问,网络上面看到 ... -
spring+Mybatis+Ehcache整合
2015-08-15 23:59 23053项目用到spring+mybatis框架,弄了一上午的sp ... -
spring + EHCache 注解方式配置缓存
2015-08-15 23:34 3167最原始的进行缓存的方式: 最原始的使用缓存的方式是通 ... -
Error configuring from input stream. Initial cause was 1 字节的 UTF-8 序列的
2015-08-14 20:49 4421在用springmvc+EHCache做缓存时候报错如下: ... -
kaptcha验证码的简单使用及配置
2015-07-23 08:28 2013kaptcha是一个简单易用的验证码生成工具,而且支持中文, ... -
JS对不同的浏览器播放音频文件
2015-04-11 11:32 4415网上找了好多方法,都没有成功,js如果想要完全控制obje ... -
sublime-text安装emmet(zen coding)插件
2015-01-12 22:46 7512009年,Sergey Chikuyonok推出了一款革 ...
相关推荐
本文将深入探讨JSP和Servlet中的几个关键编码设置的作用及原理,帮助开发者更好地理解和解决实际开发中遇到的编码问题。 #### 二、主要编码设置及其作用 ##### 1. `pageEncoding="UTF-8"` - **作用**:`...
本文主要针对JSP (Java Server Pages) 和 Servlet 中汉字编码问题的解决方法进行详细阐述。 #### 二、字符编码基础知识 1. **字符集**: 指的是用于存储和传输字符的一套规则,包括字符的编码方式。例如ASCII码、GB...
【基于jsp+servlet的博客系统】是一个典型的Web应用程序,它结合了JavaServer Pages(JSP)和Servlet技术,用于构建动态、交互式的博客平台。在这个系统中,JSP主要用于展示用户界面,而Servlet则承担了业务逻辑处理...
Eclipse则为开发人员提供了一个集成了编码、调试、测试和部署功能的平台,支持对JSP和Servlet的开发。 为了实现这个留言板应用,首先需要在Eclipse中创建一个新的Dynamic Web Project,然后配置项目引用JDK和Tomcat...
在处理文件上传时,文件名可能包含非ASCII字符,需要正确编码和解码。Apache Commons FileUpload库提供了解决这个问题的方法。 7. **数据库操作**: 在JSP和Servlet中,连接数据库时,还要考虑数据库的字符集设置...
尤其是在使用Java Server Pages(JSP)和Servlet进行中文处理时,字符编码的设置不当往往会导致页面显示出现乱码。本文将深入探讨JSP和Servlet中文乱码问题的根源、解决方案以及预防策略。 ### JSP和Servlet中的...
2. **指令元素**:JSP有三种指令元素,包括`<%@page>`(页面指令),`<%@include>`(包含指令)和`<jsp:directive.include>`(JSP动作指令),它们用于设置页面属性,导入其他文件等。 3. **脚本元素**:JSP脚本...
例如,设置请求和响应的编码格式为UTF-8,避免中文乱码的出现。 分页功能是大数据量展示的常用手段,它可以帮助用户逐步加载和浏览大量内容,提高网页加载速度。实现分页通常需要在后端计算每页的记录数和页码,...
以Index.jsp为例,页面首先设置了一系列元数据,如字符编码、基路径等,然后通过一个链接指向InputServlet,触发后续的流程。当用户点击链接时,会调用InputServlet,该Servlet通常会检查必要的参数,然后重定向到...
### JSP和Servlet请求与响应详解 #### 一、JSP内置对象概述 JSP(Java Server Pages)是一种用于创建动态网页的技术。它基于Java Servlet规范,并提供了许多内置对象,以便开发者可以更方便地处理HTTP请求和响应。...
1. **page指令**:`<%@ page ... %>`,用于设置整个JSP页面的属性,如语言、导入的包、编码格式等。 2. **include指令**:`<%@ include file="..." %>`,静态包含其他文件,一般用于包含HTML片段或JSP片段。 3. **...
EL(Expression Language)是JSP 2.0引入的一种轻量级表达式语言,用于从页面作用域中获取和设置对象属性。EL简化了在JSP中获取和使用JavaBean属性的过程,使页面更加简洁。 JSTL是一套标准的JSP标签库,提供了一...
JSP和Servlet环境下处理汉字编码问题是一项复杂的工作,涉及到多个层面的设置与调整。开发者需要具备扎实的基础知识,才能有效地解决这些问题。通过本文的学习,希望能够帮助大家更好地理解和应对实际开发中遇到的...
在本文中,我们将深入探讨如何使用Java的JSP(JavaServer Pages)和Servlet技术来实现一个图片上传功能。这是一个常见的Web开发任务,特别是在构建交互性强、动态内容丰富的网站时。以下是一些关键知识点: 1. **...
该方案通过设置每个页面的编码格式为utf-8,控制器servlet中的请求编码格式为utf-8,数据库连接url中添加useUnicode=true&characterEncoding=UTF-8参数,编写filter过滤器设置请求和响应的编码格式为gb2312,最后...
3. 请求和响应处理:理解HttpServletRequest和HttpServletResponse接口,以及如何从中获取和设置请求参数、设置响应头和内容。 4. 数据库交互:使用Java的JDBC API连接数据库,执行SQL语句(如INSERT、SELECT),...
在IT行业中,JSP(JavaServer Pages)和Servlet是用于构建动态Web应用程序的两种核心技术,尤其在企业级Java开发中广泛应用。《Jsp&Servlet入门级项目全程实录》源码是一个非常适合初学者深入理解这两门技术的实践...
它简化了获取和设置页面上下文中的属性,例如 `${user.name}` 可以直接获取 `user` 对象的 `name` 属性,无需使用 `<%= %>` 或 `<jsp:getProperty>` 标签。 3. **JSP 标签库** JSP 标签库提供了可重用的组件,增强...
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们结合使用可以构建动态网页应用。在这个“jsp + servlet 级联菜单”项目中,我们将探讨如何利用这两者来创建交互式的级联(或下拉)菜单,...