版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/L1558198727/article/details/82767755
编码方式:
Ascii码:
七字节编码 128
GBK
汉字:两个字节
ucs编码:
一个字符占用四个字符,第一个比特位是0
utf-8:
定义了字节序
汉字的编码长度是3个字节
unicode:
没有规定字节序
需要加两个字节用来指定字节序
两个字节
java程序的编码方式是unicode
查询字符串
url转码:
早期的http协议不允许出现非ascii码的字符
所以用utf8编码转换
将内存中的一个字节拆分成两个部分 4个比特位
用0-15 十六进制 0 - F表示,编码方式 加到url的问号之后
浏览器使用get方式提交数据的解码方式:
tomcat7以下
对于url的查询字符串的解码方式:
ISO8859-1:用ascii码
tomcat8以上:
使用utf-8解码:
网站全程使用utf-8编码
在tomcat的server.xml文件
修改
URLEncoding = "GBK"
修改配置文件之后,要在eclipse中重新建立服务器
否则配置文件不会重新加载
将字节数字转换成字符串
byte[] buffer = new byte[4];
String s = new String(buffer,"GBK");
字符串的构造函数,用buffer 的码值进行编码
"将错就错"
String username = request.getParameter("userName");
username = new String(username.getBytes("UTF-8"),"GBK");
这种方式不好,转码工程中可能出现没有对应的编码字符方式,造成错误
导致程序不可靠
过滤器Filter
public class MyFilter extends HttpFilter{
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws Servlet{
}
}
web.xml 的配置
只拦截服务器转发的请求
<filter-mapping>
<filter-name>f1</filter-name>
<servlet-name>s1</servlet-name>
<dispatcher> FORWARD</dispatcher>
</filter-mapping>
只拦截客户端的request请求
<filter-mapping>
<filter-name>f1</filter-name>
<servlet-name>s1</servlet-name>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
多个过滤器都满足条件时,按照filter的出现顺序来执行
Listener
一切事件类的根类是EventObject
java.util.EventObject
Object.getSource();
在event类中只有get函数 基本没有set
J2EE的事件类
ServletContextEvent
一个Servlet对应一个ServletContext,
应用程序的初始化函数
contextInitialized(ServletContextEvent e)
HttpSessionEvent
HttpSession:Listener
类似
HttpSessionBingdingEvent
HttpSessionBingdingListener
session 的setAttribute被绑定的时候被创建
listener的部署:
<listener>
<listener-class>MyListener</listener-class>
</listener>
URLDecode类
URLEncode类