servlet相关介绍及乱码问题的解决方案
2016-03-22 21:00
295 查看
1、什么是servlet?
servlet(Java服务小程序)是用java编写的服务端程序,是由服务器端调用和执行的,按照servlet自身规范编写的java类。
[b]2、servlet的生命周期:[/b]
1.装载:在tomcat启动web应用程序时进行装载,读取xml文件,但是这里只会读取不会做实例化操作
2.创建:在第一次访问servlet对应的url的时候,servlet被实例化
3.初始化:创建对象后,马上进行初始化 e,可以通过servletConfig对象读取相应的配置信息。
4.执行代码操作:收到请求之后,执行service()操作,(这里要说明一下,service是servlet的一个总入口,所有请求(HttpRequest)都会首先被service()方法获取,service()方法会根据请求的类型部分post,get,将请求派发到不同的方法)
5.销毁:destory() ,web应用程序重启时或者关闭的时候被销毁。
[b]2、get/post请求方式的区别:[/b]
1.用途不同:get方法用于查询服务器数据,而post方法用于更改服务器数据
2.原理不同:get方法把数据当成url参数发送到服务器,它只能传输文本,而post方法将数据存放在方法体中,发送到服务器,post方法可以传递二进制数据。
3.接收方式不同:get请求对应servlet中的DoGet方法,而post请求对应servlet中的DoPost方法
4.安全性:post方式将数据保存在请求体中,get将数据保存在url参数中。相对而言,post方式安全些。
3.乱码问题的解决方案:
(1)
在客户端提交数据后,利用String 对象转换编码
例如:uname
= new String( uname.getBytes("ISO-8859-1") , "UTF-8");
需要注意的是:
(
在JSP或者HTML中,必须存在<meta http-equiv="content-type" content="text/html; charset=UTF-8">)
从客户端向服务器端提交代码的时候执行过程如下:
1. 客户端编码的UTF-8 ,但在Http传输过程过程中会被转为ISO-8859-1进行传输
2. 在request接收数据后,利用new String将ISO-8859-1再转回UTF-8
缺点:每次只能对一个参数进行转换,遇到多参数的情况则十分麻烦
(2) 对POST提交的请示进行批量转换
对于post请求则可以在方法第一句增加setCharacterEncoding(),进行批量转换request.setCharacterEncoding("UTF-8"); (注意:这句话只对post方法有效,对于get无效)
(3) 对于get的处理方案是,修改tomcat的server.xml文件增加URIEncoding="utf-8"
在8080端口配置的地方增加URIEncoding来完成Get请求的转换
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"
/>
总结: 对于javaweb来说解决中文乱码的注意有以下几点:
1. 客户端与服务器端转换的时候要采用相同的编码
2. 对于较少字段的程序可以考虑使用方案1
3. 对于字段较多或者大型项目来说,可以将(2)与(3)方案结合使用。
servlet(Java服务小程序)是用java编写的服务端程序,是由服务器端调用和执行的,按照servlet自身规范编写的java类。
[b]2、servlet的生命周期:[/b]
1.装载:在tomcat启动web应用程序时进行装载,读取xml文件,但是这里只会读取不会做实例化操作
2.创建:在第一次访问servlet对应的url的时候,servlet被实例化
3.初始化:创建对象后,马上进行初始化 e,可以通过servletConfig对象读取相应的配置信息。
4.执行代码操作:收到请求之后,执行service()操作,(这里要说明一下,service是servlet的一个总入口,所有请求(HttpRequest)都会首先被service()方法获取,service()方法会根据请求的类型部分post,get,将请求派发到不同的方法)
5.销毁:destory() ,web应用程序重启时或者关闭的时候被销毁。
[b]2、get/post请求方式的区别:[/b]
1.用途不同:get方法用于查询服务器数据,而post方法用于更改服务器数据
2.原理不同:get方法把数据当成url参数发送到服务器,它只能传输文本,而post方法将数据存放在方法体中,发送到服务器,post方法可以传递二进制数据。
3.接收方式不同:get请求对应servlet中的DoGet方法,而post请求对应servlet中的DoPost方法
4.安全性:post方式将数据保存在请求体中,get将数据保存在url参数中。相对而言,post方式安全些。
3.乱码问题的解决方案:
(1)
在客户端提交数据后,利用String 对象转换编码
例如:uname
= new String( uname.getBytes("ISO-8859-1") , "UTF-8");
需要注意的是:
(
在JSP或者HTML中,必须存在<meta http-equiv="content-type" content="text/html; charset=UTF-8">)
从客户端向服务器端提交代码的时候执行过程如下:
1. 客户端编码的UTF-8 ,但在Http传输过程过程中会被转为ISO-8859-1进行传输
2. 在request接收数据后,利用new String将ISO-8859-1再转回UTF-8
缺点:每次只能对一个参数进行转换,遇到多参数的情况则十分麻烦
(2) 对POST提交的请示进行批量转换
对于post请求则可以在方法第一句增加setCharacterEncoding(),进行批量转换request.setCharacterEncoding("UTF-8"); (注意:这句话只对post方法有效,对于get无效)
(3) 对于get的处理方案是,修改tomcat的server.xml文件增加URIEncoding="utf-8"
在8080端口配置的地方增加URIEncoding来完成Get请求的转换
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"
/>
总结: 对于javaweb来说解决中文乱码的注意有以下几点:
1. 客户端与服务器端转换的时候要采用相同的编码
2. 对于较少字段的程序可以考虑使用方案1
3. 对于字段较多或者大型项目来说,可以将(2)与(3)方案结合使用。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- i-jetty环境搭配与编译
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- 谷歌 Project Zero 团队宣布新政策,漏洞披露前将有完整的 90 天缓冲期
- PropertyChangeListener简单理解
- Linux部署Tomcat服务器