隨筆-124  評論-49  文章-56  trackbacks-0
           
          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 閱讀(238) | 評論 (0)編輯 收藏
          可以加入ValidatorPlugIn動態驗證框架插件
          org.apache.struts.validator.ValidatorPlugIn
          posted @ 2009-11-30 08:12 junly 閱讀(216) | 評論 (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 閱讀(505) | 評論 (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 閱讀(384) | 評論 (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 閱讀(308) | 評論 (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 閱讀(2336) | 評論 (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 閱讀(240) | 評論 (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 閱讀(253) | 評論 (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 閱讀(297) | 評論 (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 閱讀(226) | 評論 (0)編輯 收藏
          僅列出標題
          共18頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          收藏夾

          other

          文章

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 微山县| 繁昌县| 龙州县| 淮滨县| 神农架林区| 新和县| 西吉县| 汪清县| 黄骅市| 岳普湖县| 廊坊市| 海南省| 乳源| 阜平县| 余干县| 日照市| 宁海县| 莱西市| 绥宁县| 巨野县| 海晏县| 吴堡县| 佛冈县| 临澧县| 周口市| 黔西| 龙州县| 肥东县| 伊宁市| 百色市| 青州市| 泸州市| 桐庐县| 玛沁县| 武定县| 嘉义县| 宜兴市| 驻马店市| 康乐县| 舒兰市| 龙游县|