j2ee基础知识点笔记(二) - 15841333625/Java GitHub Wiki
GB2312 -> GBK -> GB-18030 中文编码,每个字符2字节
Unicode
UCS 每个字符4字节
UTF-8 英文1字节,法语等2字节,中文等3字节
发送的编码为GBK时
request.setCharacterEncoding("GBK");发送时浏览器将中文字符转码,将GBK编码转为ascii码,服务器端则以utf-8转码,所以乱码
String queryString = request.getQueryString();
queryString = URLDecoder.decode(queryString, "UTF-8");String username = request.getParameter("username");
username = new String(username.getBytes("GBK"), "UTF-8");
String s.getBytes("GBK");
// 字符串内存中默认编码为4字节Unicode编码,通过电脑中的Unicode到GBK的映射转换为GBK编码public calss AuditFilter implements Filter {
private FilterConfig config;
public void destroy() {}
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
public void doFilter(ServletRequest request, ServletResponse response, HttpServletFilterChain chain) throws ServletException, IOException {
long start = System.currentTimeMillis();
chain.doFilter(request, response);
long end = System.currentTimeMillis();
config.getServletContext().log();
}
}如果有多个过滤器都符合条件,执行顺序为filter-mapping的顺序
<web-app>
<filter>
<filter-name>f1</filter-name>
<filter-class>MyFilter</filter-class>
<init-param>
<param-name>a</param-name>
<param-value>8</param-value>
</init-param>
</filter>
<filter>
<filter-name>f2</filter-name>
<filter-class>MFilter</filter-class>
</filter>
<filter-mapping>
<filter>f1</filter>
<servlet-name>s1</servlet-name> ###只过滤s1组件
</filter-mapping>
<filter-mapping>
<filter>f2</filter>
<url-pattern>/</url-pattern>
<dispatcher>REQUEST</dispatcher> ###FORWARD, INCLUDE, ERROR 只对某一种请求起作用
</filter-mapping>
<listener>
<listener-class>MyAppListener</listener-class>
</listener>
<servlet>
<servlet-name>s1</servlet-name>
<servlet-class>com.abc.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet>s1</servlet>
<servlet-pattern>/a</servlet-pattern>
</servlet-mapping>
</web-app>Interface ServletContextListener
default void contextDestroyed(ServletContextEvent sce)
default void contextInitialized(ServletContextEvent sce) //应用执行的第一个函数import javax.servlet.*
public class MyAppListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) { // 应用程序初始化
System.out.println("Hello world!");
}
puclic void contextDestroyed(ServletContextEvent sce) {
}
}