ForwardAction是統一訪問形式
配置struts-config.xml即可
<action-mappings>
<action path="/preAddStudentAction" forward="/WEB-INF/AddStudent.jsp" />
<forward name="success" path="/login_success.jsp"/>
</action-mappings>
全局的
<global-forwards>
<forward name="success" path="/login_success.jsp"/>
</global-forwards>
對象名為ActionFroward,運行期不能改修配置,即調用froward.setReadirect(false);
ForwardAction執行完所有內容,forward屬性到轉向頁面就停了
posted @
2009-11-30 08:12 junly 閱讀(230) |
評論 (0) |
編輯 收藏
可以加入ValidatorPlugIn動態驗證框架插件
org.apache.struts.validator.ValidatorPlugIn
posted @
2009-11-30 08:12 junly 閱讀(209) |
評論 (0) |
編輯 收藏
一 配置異常(在struts-config.xml文件中定義),定制異常有兩種:
1 全局異常(Global Exceptions)
<global-exceptions>
<exception key="invalideUser"
path="/Login.jsp" type="com.future.struts.MyException" />
</global-exceptions>
2 局部異常(Local Exception)
<action-mappings>
<action attribute="loginForm" name="loginForm"
path="/loginAction(出錯轉向的路徑)" scope="request"
input="/login.jsp"http://異常轉向的頁面,同exception中的path,優先級path高于input
/>
<exception key="invalideUser(異常信息的key)" path="/Error.jsp"
type="cn.itcast.ItcastException(異常類全名)" />
</action-mappings>
path:出現異常后跳轉的頁面
key:異常信息的鍵,對應的值在資源文件當中
type:所要處理的異常類
二 在相應的action中的execute方法中拋出異常
三 在異常處理頁面(path所指的頁面)使用html:errors標簽打印異常信息
1 建立資源文件ApplicationResources.properties
內容:invaliduser=it is an invalid user(key/value)
2 配置struts-config.xml文件
<message-resources parameter="cn.itcast.ApplicationResources" key="invalideuser"/>
3 使用html:errors標記打印信息
<html:errors />
--------------------------------------------
1 編程式異常
* 截獲異常
* 創建相應的異常消息
* 傳遞異常消息
* 轉向相應的頁面處理異常
2 聲明式異常(自動處理的異常)
* 在struts-config.xml文件中配置<exeception/>標簽
* 理解局部和全局exception
* 注意局部<exception/>標簽需要配置到<forward/>標簽的前面
<exeception/>標簽中的屬性說明:
* key:指異常信息對應的國際化消息文本,這個key值需要在國際化資源文件中定義
* type:處理那種異常
* path:定義一但出現異常,需要轉向那個頁面,如果不定義path,
默認情況下將使用<action>標簽中input屬性對應的頁面
* scope:可以取值request和session,默認為request
* handler:導常的處理類,struts默認采用org.apache.struts.action.ExceptionHandler,
如果做個性化的異常處理可以繼承此類復寫相應的方法
-------------------------------------------------------------------------
個性異常類定義
一 方法:
1 定義MessageResources.propertices資源文件
2 在struts-config中配置<exception/>
<exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException"
handler="com.bjsxt.struts.ErrorCodeException" />
3 編寫異常類ErrorCodeException繼承RuntimeException
public class ErrorCodeException extends RuntimeException {
private String errorCode;//這是key對應的值
private Object[] args;//這是參數集合
public ErrorCodeException(String errorCode){
this(errorCode,null);
}
public ErrorCodeException(String errorCode,Object args0){
this(errorCode,new Object[]{args0});
}
public ErrorCodeException(String errorCode,Object[] args){
this.errorCode=errorCode;
this.args=args;
}
public String getErrorCode() {
return errorCode;
}
public Object[] getArgs() {
return args;
}
}
4 編寫ErrorCodeExceptionHandler類繼承ExceptionHandler,
復寫public ActionForward execute(Exception ex, ExceptionConfig ae,
ActionMapping mapping, ActionForm formInstance,
HttpServletRequest request, HttpServletResponse response)
throws ServletException{}方法:
public ActionForward execute(Exception ex, ExceptionConfig ae,
ActionMapping mapping, ActionForm formInstance,
HttpServletRequest request, HttpServletResponse response)
throws ServletException {
//添加判斷
------------------------------------------------------------
if(!(ex instanceof ErrorCodeException)){
return super.execute(ex, ae, mapping, formInstance, request, response);
}
------------------------------------------------------------
ActionForward forward;
ActionMessage error;
String property;
// Build the forward from the exception mapping if it exists
// or from the form input
if (ae.getPath() != null) {
forward = new ActionForward(ae.getPath());
} else {
forward = mapping.getInputForward();
}
// Figure out the error
if (ex instanceof ModuleException) {
error = ((ModuleException) ex).getActionMessage();
property = ((ModuleException) ex).getProperty();
} else {
//改修這個地方
//----------------------------------------------
ErrorCodeException ece=(ErrorCodeException)ex;
String errorCode=ece.getErrorCode();
Object[] args=ece.getArgs();
error = new ActionMessage(errorCode, args);
property = error.getKey();
//------------------------------------------------
//error = new ActionMessage(ae.getKey(), ex.getMessage());
//property = error.getKey();
}
this.logException(ex);
// Store the exception
request.setAttribute(Globals.EXCEPTION_KEY, ex);
this.storeException(request, property, error, forward, ae.getScope());
if (!response.isCommitted()) {
return forward;
}
return null;
}
}
5 頁面直接拋出異常
public void login(String username,String password){
if(!"admin".equals(username)){
throw new ErrorCodeException("user.not.found",username,age);
}
}
---------------------------------------------------------------------
二 方法:
1 定義MessageResources.propertices資源文件
內容:error.exception={0}
2 在struts-config中配置<exception/>
<exception key="error.exception" type="com.bjsxt.struts.ErrorCodeException"/>
3 編寫異常類ErrorCodeException繼承RuntimeException
public class ErrorCodeException extends RuntimeException {
public ErrorCodeException(String msg){
super(msg);
}
}
4 頁面直接拋出異常
public void login(String username,String password){
if(!"admin".equals(username)){
throw new ErrorCodeException("名稱"+usrname+"錯誤!");
}
}
--------------------------------------------------------------------------
1 ApplicationResources.properties文件
num2Meg=is not a double
2 struts-config.xml
<message-resources parameter="ApplicationResources" />
3 ActionMessages errs=new ActionMessages();
errs.add("num1Error",new ActionMessage("num2Meg"));
//errs.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("num2Meg"));
this.saveErrors(request,errs);
頁面
<html:errors property="num1Error"/>
//<html:errors/>//全局不能指定property
errs.header="<script>alert("
errs.footer=")</script>"
posted @
2009-11-30 08:11 junly 閱讀(496) |
評論 (0) |
編輯 收藏
Converter添加java.util.Date類型轉換器
1 編寫UtilDateConverter轉換器類,
實現Converter接口的convert方法(com.sun.org.apache.commons.beanutils.Converter)
public class UtilDateConverter implements Converter {
public Object convert(Class type, Object value) {
System.out.println("UtilDateConverter.value="+value);
if(value==null){
return value;
}
if(value instanceof Date){//instanceof判斷是否屬于此類型
return value;
}
Date d=null;
if(value instanceof String){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
d=sdf.parse(value.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
return d;
}
}
2 利用servlet的init()方法注冊轉換器到ConvertUtils(com.sun.org.apache.commons.beanutils.ConvertUtils)
public class UtilDateConverterInitServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("UtilDateConverterInitServlet.init()");
ConvertUtils.register(new UtilDateConverter(),Date.class);
}
}
3 配置servlet,并設</load-on-startup>值
<servlet>
<servlet-name>UtilDateConverterInitServlet</servlet-name>
<servlet-class>com.bjsxt.servlet.UtilDateConverterInitServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>UtilDateConverterInitServlet</servlet-name>
<url-pattern>/servlet/UtilDateConverterInitServlet</url-pattern>
</servlet-mapping>
------------------------------------------------------------------------
方法二:
1 編寫UtilDateConverter轉換器類,
實現Converter接口的convert方法(com.sun.org.apache.commons.beanutils.Converter)
(同上)
2 編寫UtilDateConverterInitWithPlugIn類實現PlugIn接口的init()方法
public class UtilDateConverterInitWithPlugIn implements PlugIn {
public void destroy() {
}
public void init(ActionServlet arg0, ModuleConfig arg1)
throws ServletException {
System.out.println("UtilDateConverterInitServlet.init()");
ConvertUtils.register(new UtilDateConverter(),Date.class);
}
}
3 在struts-config.xml文件中配置<plug-in>標簽
<plug-in className="com.bjsxt.servlet.UtilDateConverterInitWithPlugIn"/>
posted @
2009-11-30 08:10 junly 閱讀(376) |
評論 (0) |
編輯 收藏
DynaActionForm 配態form
1 配置動態form屬性<form-property>name屬性,type屬性類型,primitive type必須使用包裝類型。
<form-beans>
<form-bean name="addStudentForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="sname" type="java.lang.String" initial=""(初始值)></form-property>
<form-property name="birth" type="java.sql.Date"></form-property>
<form-property name="major" type="java.lang.String"></form-property>
<form-property name="score" type="java.util.float"></form-property>
</form-bean>
</form-beans>
2 配置action標記
<action-mappings>
<action path="/addstudentform"
type="com.yourcompany.struts.AddAction"
name="addStudentForm(form的名子)">
</action>
</action-mappings>
3 獲取頁面的值:
動態ActionForm其實是把頁面的html元素的名字和值放到名字和值放到map中,所以通過get方法可以取出相應的值
(1) String sname=(String)addStudentForm.get("sname");
EL: ${dynabean(addStudentForm).map.prop}
(2) String sname=(String)addStudentForm.get("sname");
動態ActionForm的驗證,通常使用動態驗證框架validator
屬性名及類型一致才可以拷貝
可以通過BeanUtils.copyProperties(userbean目標對象,form源對象)方法進行對象的復制
posted @
2009-11-30 08:10 junly 閱讀(304) |
評論 (0) |
編輯 收藏
網站struts.apache.org
實踐步驟:
1 搭建環境
(1)導入jar包
使用其中相關的類(可將所有jar全部導入)
(2)建立一個配置文件:struts-config.xml
作用:方便struts用戶使用
位置:一般放在WEB-INF下
(3)配置web.xml
注冊struts中心控制器-----ActionServlet
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>()Navigate下Open Type輸入actionServlet復制目錄
<init-param>//讀初始化文件的信息
<param-name>config</param-name>//參數名
<param-value>/WEB-INF/struts-config.xml</param-value>//文件名
</init-param>
<load-on-startup>0</load-on-startup>//服務啟起就實例化,0最早
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>//對所有的do請求都作處理
</servlet-mapping>
注意事項:
struts配置文件的位置
預先加載控制器
------------------------------------------------------------------
2 建立ActionForm
(1)建一個Bean類,繼承org.apache.struts.action.ActionForm
(2)注冊,修改配置文件struts-config.xml
<form-bean>
<form-beans>
<form-bean name="變理名" type="類全名"/>
</form-beans>
意注:struts-config.xml文件中<form-beans>和<action-mappings>的順序不能變,有DTD約束規定。
------------------------------------------------------------
3 建立Action
(1)建立一個類,繼承org.apache.struts.action.Action。重寫execute方法
需要強制轉型
LoginFrom lof=(LoginFrom)form;
調用其它模塊
跳轉(根據關鍵字,關鍵字參照該action中forward標簽中的name屬性)
mapping.findForward("name屬性");
(2)注冊,修改配置文件struts-config.xml
<action>
<action-mappings>
<action path="指明調用者(JSP)能通過中心控制器ActionServlet找到該Action"
type="指明該action類全名"
name="該action引用的form的名稱">
<forward name="loginSuccess" path="index.jsp"></forward>
</action>
</action-mappings>
4 頁面訪問
<form action="<%=request.getContextPath()%>/login.do">
-------------------------------------------------------------------
Struts framework的工作原理工科

1 讀敢配置 (初始化ModuleConfig對象)
Struts框架總控制器(ActionServlet)是一個Servlet,在web.xml中配置成自動啟動的Servlet。
讀取配置文件(struts-config.xml)的配置信息,為不同的Struts模塊初始化相應的ModuleConfig
對名:ActionConfig,
ControlConfig,
FormBeanConfig,
MessageResourcesConfig
2 發送請求
請求上傳WEB服務器(處理.do的請求)
3 填充FORM(實例化,復位,填充數據,校驗,保存)
(*.do請求)從ActionConfig中找出對應該請求的Action子類,如沒有對應的Action,控制器直接轉發給
JSP或靜態頁面。如有對應的Action且這個Action有一個相應的ActionForm.
ActionForm被實例化并用http請求的數據填充其屬性,并且保存在ServletContext中(request或session中),
這樣它們就可以被其它Action對象或者JSP調用。
4 派發請求
控制器根據配置信息ActionConfig將請求派發到具體的Action,相應的FormBean一并傳給這個Action的execute()方法.
5 處理業務
Action一般只包含一個execute方法,它負責執行相應的業務邏輯(調用其它業務模塊).完畢返回一個ActionForward對象,
控制器通過該ActionForward對象來進行轉發工作
6 返回響應
Action根據業務處理的不同結果返回一個目標響應對象給總控制器,該目標響應對象對應一個具體的JSP頁面或另一Action.
7 查找響應(可以是一個Action)
8 響應用戶
-----------------------------------------------------------------------------------------------------------
組件
ActionSerlet,Action Classes,Action Mapping(此處包括ActionForward),ActionForm Bean.
Struts中的MVC:
1 模型(Model):本質上來說在Struts中Model是一個商業邏輯類,開發者實現商業邏輯。
2 視圖(View):View是由與控制器Servlet配合工作的一整套JSP定制標簽庫構成,利用他們可以快速建立應用系統的界面。
3 控制器(Controller),前端控制器是一個Servlet,它將客戶端請求轉發到相應的后端控制器Action類。
注意:官方認為ActionForm Bean應為控制層(Controller)組件,自已寫的JavaBeans為模型(Model)
-----------------------------------------------------------------------------------
ActionServlet(中心控制器)
定義:繼承自javax.servlet.http.HttpServlet類,是中心控制器(總控制器)。它提供一個中心位置來處理全部的終端請求。
作用:接受請求,填充數據,派發請求,響應用戶。
配置:在web.xml文件聲明。
例子:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
注意:struts-config.xml文件系統默主調用,可以不<init-param>配置
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
-------------------------------------------------------------------
Action
發出該action請求時初始化,不是在讀取配置時,并且只初始化一次。
Action是線程不安全的,因為所有的請求共享一個別action實例。
所以:不要用實例變量或者類變是共享只是針對某個請求的數據
注意資源操作的同步性。
應用:
統計一個action訪問次數
public class CountAction extends Action {
private Integer count=0;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
synchronized(count){//加鎖
count++;
}
PrintWriter out=response.getWriter();
out.print("count="+count);
return null;
}
}

----------------------------------------------------
ActionMapping
是對struts-config.xml中action標簽中所有屬性的封裝類。
mapping.getName()(String)
mapping.getPath()(String)
mapping.getType()(String)
String[] forwardNames=mapping.findForwards();
for(String forward:forwardNames){
ActionForward forward=mapping.findForward(forward);
String forwardPath=forward.getPath();
}
相應的set方法不能使用。
-----------------------------------------------------
ActionForward(導航器)
ActionForward對象是配置對象。這些配置對象擁有獨一無二的標識以允許他們按照name屬性來檢索。
name:邏輯名稱
path:頁面或者模塊訪問路徑。
redirect:默認為false.設為true時為容器外跳轉,相當于response.sendRedirect();
在xml文件中的path中要寫絕對路徑。
--------------------------------------------------------------
ActionForm工作原理
步驟:
(1)檢查Action的映射,確定Action中已經配置了對ActionForm的映射
(2)根據name屬性,查找form bean中的配置信息
(3)檢查Action的form bean的使用范圍,確定在此范圍下(request,session),是否已經有些form bean的實例。
(4)假如當前范圍下,已經存在了些form bean的實例,而是對當前請求來說,是同一種類型的話,就重用。
(5)否則,就重新構建一個form bean的實例(調用構造方法),并且保存在一定作用范圍。
(6)form bean的reset()方法被調用
在作數據收集前被調用,是一個重置的方法.
(7)調用對應的setter方法,對狀態屬性賦值
(8)如果validatede的屬性設置為true,就調用form bean的validate()方法。
該方法進行表單的服務器端驗證.
(9)如果validate()方法沒有返回任何錯誤,控制器將ActionForm作為參數,傳給Action實例的execute()方法并執行。
注意:直接從ActionFrom類繼承的reset()和validate()方法,并不能實現什么處理功能,所以重新覆蓋。
注意:
1 無參構造方法必須有
2 Scope缺省值是session
3 調用setter方法,實質上是對應的標準set方法
分析:
4 從過程去查看
HttpSessionAttributeListener
ServletRequestAttributeListener
5 從結果去查看
---------------------------------------------------
ActionForm
reset()方法,用于恢復屬性,在重新復值前由controller調用。
valldate()方法,用于校驗屬性,返回ActionErrors,如果成功返回null,默認返回null.
關閉校驗功能設置struts-config.xml中<action>標簽的validate屬性為false.
validate
----------------------------------------------------------
struts-config.xml文件中的action標簽
1 attribute屬性
用來存取form的關鍵字,缺省值與name一樣,如果設了必須用該屬性。
2 validate屬性(action中的屬性)
用來控制是否校驗表單,缺省為false,false不校驗。
3 input屬性
當表單校驗失敗時將請求轉發的URL(或目標模塊,可以為另一個別action),結合validate屬性使用,為相對路徑。
在ActionForm類的validate方法中手動添加錯誤
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
ActionErrors errors=new ActionErrors();
ActionMessage message=new ActionMessage("error");//應為鍵值對
errors.add("error",message);
return errors;
}
---------------------------------------------------------------------------
struts-config.xml文件中的<global-forwards>全局跳轉標簽
<global-forwards>
<forward name="error" path="Error.jsp"/>
</global-forwards>
使用方式同action中的forwar標簽
posted @
2009-11-29 22:59 junly 閱讀(2330) |
評論 (0) |
編輯 收藏
1 實例化:servlet容器創建servlet實例,構造方法
2 初始化:該容器調用init()方法
init()
init(ServletConfig config){
config.getParamter("aaa");
}
web.xml
<servlet>
<param-name>aaa</param-name>
<param-value>1</param-value>
</servlet>
3 服務:如果請求servlet,則容器調用service()方法
4 銷毀:銷毀實例前調用destroy()方法
posted @
2009-11-29 22:50 junly 閱讀(234) |
評論 (0) |
編輯 收藏
一個java類,運行在服務器端的,處理web請求
//客戶端跳轉
response.sendRedirect()
//服務器端跳轉
RequsetDispatcher dispatcher=request.getRequestDispatcher("/...");
dispatcher.forward(request,response);
dispatcher.include()
1 out
struts中用PrintWriter out=request.getWriter()得到
2 request
(1)String getParameter(String name) 根據頁面表單組件名稱獲取頁面提交數據
(2)String[] getParameterValues(String name) 獲取一個頁面表單組件對應多個值時的用戶的請求數據
(3)void setCharacterEncoding(String name) 指定每個請求的編碼,在調用request.getParameter()方法之前進行設置,可以用于解決中文亂碼
(4)request.getRequestDispatcher(String path)返回一個javax.servlet.RequestDispatcher對象,該對象的forward方法用于轉發請求
javax.servlet.RequestDispatcher dispatcher=request.getRequestDispatcher("/a.jsp(目標頁面)");
dispatcher.forward(request,response);
3 response
response.sendRedirect(String location)重定向一個URL
4 session
(1)void setAttribute(String key,Object value)
(2)Object getAttribute(String key)
(3)HttpSession request.getSession()
(4)HttpSession request.getSession(boolean true)
(5)void session.setMaxInactiveInterval(2)//設置會話過期時間
(6)void invalidate()//銷毀session,刪除HttpSession對象及數據
(7)void remove(String key)
(8)boolean isNew()//是否是最新會話
在web.xml中配置session默認過期時間
<session-config>
<session-timeout>5</session-timeout>//單位為分鐘
</session-config>
5 applicate->servletContext
(1)void setAttribute(String key,Object value)
(2)Object getAttribute(String key)
6 pageContext
6 service方法
posted @
2009-11-29 22:49 junly 閱讀(246) |
評論 (0) |
編輯 收藏
web Service
xml數據格式
SOAP(簡單對象訪問)
WSDL
-----------
開發步驟
1 建立服務并發布
XFire
× 導入jar包
* service.xml
* web.xml
創建接口
public interface IProcessCredit{
public String sayHello(String username);
}
和實現類
public class ProcessCreditImpt implement IProcessCredit{
public String sayHello(String username){
return "你好"+username;
}
}
編寫配置文件
services.xml
<service>
<name>CreditCard</name>
<namespace>http://www.CreditCard.com</namespace>
<serviceClass>
org.com.IProcessCredit
</serviceClass>
<implementationClass>
org.com.ProcessCreditImpt
</implementationClass>
2 客戶端servlet調用服務
1 導入Service的jar
2 導入XFire的jar
3 Service
Service service=new ObjectServiceFactory().create(IProcessCredit.class);
XFire xfire=XfireFactory.newInstance().getXFire();
XFireProxyFactory factory=new XFireProxyFactory(xfire);
String url="";
IProcessCredit c=(IProcessCredit)factor.create(service,url);
c.sayHello("ddddddddddd");
-----------------------------------------------------------------
步驟:
1 建立接口
public interface IBookService {
public int addBook(Book book);
}
2 實現接口
public class ProessBookService implements IBookService {
public int addBook(Book book) {
BookDao bookDao=new BookDao();
return bookDao.addBook(book);
}
}
3 在src下創建META-INF文件夾,在META-INF下創建xfire文件夾,在xfire下創建services.xml
(src-->META-INF-->xfire-->services.xml)
<service>
<name>BookService</name>
<namespace>http://www.book.com</namespace>
<serviceClass>org.book.IBookService </serviceClass>
<implementationClass>org.book.ProessBookService </implementationClass>
</service>
4 編寫web.xml
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
5 編寫調用方法
Service serviceModle=new ObjectServiceFactory().create(IBookService.class);
XFire xFire=XFireFactory.newInstance().getXFire();
XFireProxyFactory factory=new XFireProxyFactory(xFire);
String urlString="http://localhost:8080/ownhome/services/ProessBookService";
IBookService bookService=(IBookService) factory.create(serviceModle, urlString);
posted @
2009-11-29 22:48 junly 閱讀(293) |
評論 (0) |
編輯 收藏
servlet邊濾器
1 編寫實現javax.servlet.Filter接口的類
public class MyFilter implements Filter {
private FilterConfig config;
private String encoding="IS0-8859-1";
public void destroy() {//過濾器當前類被消滅時調用的方法
}
public void doFilter(ServletRequest request, ServletResponse response,//過濾器主方法
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);//設置其可被下個過濾器繼續調用
}
public void init(FilterConfig config) throws ServletException {//過濾器當前類初始化時調用此方法
this.config=config;
String s=config.getInitParameter("encoding");//得到相應參數
if(s!=null){
encoding=s;
}
}
}
FilterConfig類用于獲得初始化的參數的包裝類
FilterChain類是過濾器的鏈,可以多重過濾
2 配置Servlet過濾器
<filter>
<filter-name>EncodingFilter</filter-name>過濾器名稱
<filter-class>com.webs.MyFilter</filter-class>對應類
<init-param>參數
<param-name>encoding</param-name>參數名
<param-value>UTF-8</param-value>參數值
</init-param>
</filter>
<filter-mapping>映射特定資源
<filter-name>EncodingFilter</filter-name>過濾器名稱
<url-pattern>/*</url-pattern>
</filter-mapping>
3 頁面
4 注意:服務器端跳轉是不過濾的
posted @
2009-11-29 22:47 junly 閱讀(222) |
評論 (0) |
編輯 收藏