首先先看如下例子:
(1) 創(chuàng)建網(wǎng)站
(2) 創(chuàng)建Servlet, Servlet 名稱是Servletnew ,包名是:com.jht
(3) 增加Apache Tomcat到Library
(4)WebContent/WEB-INF 增加web.xml文件,文件內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
<!-- 聲明字符編碼過濾器 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.jht.CharacterEncodingFilter</filter-class>
<!-- 設(shè)置初始化參數(shù) -->
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<!-- 映射字符編碼過濾器 -->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!-- 與所有請求關(guān)聯(lián) -->
<url-pattern>/*</url-pattern>
<!-- 設(shè)置過濾器對應(yīng)的請求方式 -->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<!-- Servlet配置 -->
<servlet>
<servlet-name>MyServletnew</servlet-name>
<servlet-class>com.jht.MyServletnew</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServletnew</servlet-name>
<url-pattern>/MyServletnew</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
(5) 在WebConntent下面增加index.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<form action="MyServletnew" method="post">
<p>
請輸入你的中文名字:
<input type="text" name="name">
<input type="submit" value="提 交">
</p>
</form>
</body>
</html>
(6) 創(chuàng)建類文件CharacterEncodingFilter,實(shí)現(xiàn)過濾。
package com.jht;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 字符編碼過濾器
* @author
*/
public class CharacterEncodingFilter implements Filter{
// 字符編碼(初始化參數(shù))
protected String encoding = null;
// FilterConfig對象
protected FilterConfig filterConfig = null;
// 初始化方法
public void init(FilterConfig filterConfig) throws ServletException {
// 對filterConfig賦值
this.filterConfig = filterConfig;
// 對初始化參數(shù)賦值
this.encoding = filterConfig.getInitParameter("encoding");
}
// 過濾器處理方法
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 判斷字符編碼是否有效
if (encoding != null) {
// 設(shè)置request字符編碼
request.setCharacterEncoding(encoding);
// 設(shè)置response字符編碼
response.setContentType("text/html; charset="+encoding);
}
// 傳遞給下一過濾器
chain.doFilter(request, response);
}
// 銷毀方法
public void destroy() {
// 釋放資源
this.encoding = null;
this.filterConfig = null;
}
}
package com.jht;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MyServletnew
*/
@WebServlet("/MyServletnew")
public class MyServletnew extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public MyServletnew() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
// 獲取表單參數(shù)
String name = request.getParameter("name");
if(name != null && !name.isEmpty()){
System.out.println(name);
out.print("你好 " + name);
out.print(",<br>歡迎來到我的主頁。");
}else{
out.print("請輸入你的中文名字!");
}
out.print("<br><a href=index.jsp>返回</a>");
out.flush();
out.close();
}
}