`
sqicoo
  • 浏览: 53770 次
  • 来自: ...
社区版块
存档分类
最新评论

struts常用扩展

    博客分类:
  • JAVA
阅读更多

            用户验证,错误异常处理,这个看似小事,但有时候处理也比较麻烦,随时有可能处理不好!

            一,用户验证处理

  • 通过自定义标签直接添加在需要用户验证的页面 
  • 通过覆盖struts 的RequestProcessor的processRole(),从而获得用户验证功能.
  • 通过编写一个Action验证基类,子类继承而获得用户验证功能.

        1)自定义标签实现验证

java 代码
  1. public final  class CheckLogin extends TagSupport{   
  2.     
  3.         public int doStartTag() throws JspException{   
  4.                
  5.              return (SKIP_BODY);   
  6.     }   
  7.       
  8.        public int doEndTag() extends JspException{   
  9.               
  10.             HttpSession session=pageContext.getSession();   
  11.             String userName=sesssion.getAttribute("USERNAME");   
  12.             if(userName==null){   
  13.                    pageContext.forward("xxxxx.jsp") ; //错误页面   
  14.                    return (SKIP_PAGE);   
  15.             }   
  16.             return (EVAL_PAGE);   
  17.    }   

        2)struts 的RequestProcessor的processRole(),从而获得用户验证功能

java 代码
  1. protected boolean processRoles (ActionMapping mapping,   
  2.                                     ActionForm form,    
  3.                                     HttpServletRequest request,    
  4.                                     HttpServletResponse response)   
  5.                                     throws IOException, ServletException{   
  6.   
  7.          HttpSession session=request.getSession();   
  8.          String userName=session.getAttribute("USERNAME");   
  9.          if(userName==null){   
  10.                 RequestDispatcher rd=request.getDispathcher("XXXX.jsp");//返回错误页面  
  11.                 rd.forward(request,response);
  12.                 return false;   
  13.         }   
  14.         return true;   
  15. }  

       3)编写一个Action验证基类,子类继承而获得用户验证功能.

java 代码
  1. public abstract class CheckBaseAction extends Action{   
  2.              
  3.        public final ActionForward execute(ActionMapping mapping,   
  4.                                     ActionForm form,    
  5.                                     HttpServletRequest request,    
  6.                                     HttpServletResponse response)   
  7.                                     throws IOException, ServletException {    
  8.               
  9.                 HttpSession session=request.getSession();   
  10.                 String userName=session.getAttribute("USERNAME");   
  11.                 if(userName==null){   
  12.                          return (mapping.findForward("login"));   
  13.                }   
  14.                 return doExecute(mapping,request,response);   
  15.     }   
  16.   
  17.       public abstract  ActionForward doExecute(ActionMapping mapping,   
  18.                                     ActionForm form,    
  19.                                     HttpServletRequest request,    
  20.                                     HttpServletResponse response)   
  21.                                     throws IOException, ServletException ;   
  22.   
  23. }   

       第三种灵活性比前2种强点,但与struts耦合比较强,或者可以使用另一种filter来实现用户检验也不错的选择!

       二.异常处理

  •   通过Servlet异常处理,只要简单地在Web.xml里配置异常处理类型和返回页面
  •   通过Struts的异常处理机制,在struts-config.xml配置局部异常和全局异常
  •   通过编写一个Action 异常基类,子类继承而获得异常处理功能

         1) Servlet异常处理

xml 代码
  1. <error-page>  
  2.    <error-code>404error-code>  
  3.    <location>XXX.jsplocation> <!---->  
  4. error-page>  
  5.   
  6. <error-page>  
  7.     <exception-type>java.lang.NullPointerExceptionexception-type>  
  8.     <location>XXX.jsplocation> <!---->  
  9. error-page>  
  10.   

        2)Struts的异常处理机制,在struts-config.xml配置局部异常和全局异常

xml 代码
  1. <!---->  
  2.    <global-exceptions>  
  3.             <exception type="java.lang.exception"       
  4.                                key="action.errors.exception"      
  5.                                path="/error.jsp"/>  
  6.    global-exceptions>  
  7.   
  8. <!---->  
  9.     <action-mappings>  
  10.             <action path="/Login"    
  11.                           type="cn.com.sqicoo.LoginAction"  
  12.                           name="LoginForm"  
  13.                           input="/login.jsp">  
  14.            <exception type="java.lang.exception"       
  15.                                key="action.errors.exception"  >  
  16.            <forward name="success" path="/login_success.jsp"/>  
  17.             action>  
  18.     action-mappings>  

        3)编写一个Action 异常基类,子类继承而获得异常处理功能

java 代码
  1. public abstract class ErrorBaseAction extends Action{      
  2.                 
  3.        public final ActionForward execute(ActionMapping mapping,      
  4.                                     ActionForm form,       
  5.                                     HttpServletRequest request,       
  6.                                     HttpServletResponse response)      
  7.                                     throws IOException, ServletException {       
  8.               try{   
  9.                      return doExecute(mapping,form,request,response);   
  10.               }catch(Exception ex){   
  11.                      return doException(ex,mapping,form,request,response);   
  12.               }   
  13.     }      
  14.      
  15.       public  ActionForward doException(Exception ex,   
  16.                                     ActionMapping mapping,      
  17.                                     ActionForm form,       
  18.                                     HttpServletRequest request,       
  19.                                     HttpServletResponse response)      
  20.                                     throws IOException, ServletException {       
  21.                  // 异常处理   
  22.                   return mapping.findForward("XXX");//返回页面   
  23.       }   
  24.   
  25.        public abstract  ActionForward doExecute(ActionMapping mapping,      
  26.                                     ActionForm form,       
  27.                                     HttpServletRequest request,       
  28.                                     HttpServletResponse response)      
  29.                                     throws IOException, ServletException;   
  30.      
  31. }      
分享到:
评论

相关推荐

    struts的九个必备常用包

    3. **struts-tiles**:Tiles扩展了Struts的功能,允许开发者创建可重用的页面布局,通过定义模板(Tiles Definition)实现组件化开发。Tiles可以将页面分解成多个部分,每个部分都可以独立管理和重用。 4. **struts...

    Struts 2常用jar包

    同时,开发者可以根据需求选择安装额外的插件来扩展Struts 2的功能,如图表插件、富文本编辑器插件等。 总结来说,"Struts 2常用jar包"是构建基于Struts 2的Web应用所必需的类库,它们协同工作,为开发者提供了强大...

    struts常用tld文件

    - 使用标签库可以提高代码的可重用性和可扩展性,但也要注意不要过度依赖标签,以免降低代码的可读性。 综上所述,struts-html.tld、struts-bean.tld和struts-logic.tld是Struts框架中非常重要的组件,它们提供了...

    Struts2常用的jar包

    在这个主题中,我们将详细探讨Struts2框架中常用的jar包及其作用。 1. **struts2-core-2.3.34.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action类、拦截器、结果类型、配置管理等。它实现了请求的处理...

    struts2.0常用的5个jar包

    这些插件扩展了Struts2的功能,使得开发更便捷,例如,通过Ajax插件可以实现页面的异步更新,i18n插件方便了多语言环境的应用,Tiles插件则用于创建复杂的布局和模板。 在实际开发中,除了这些核心JAR包,还需要...

    struts2常用jar包

    Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展且易于管理的企业级应用。这个压缩包包含了一些Struts2.3.4版本的核心组件和插件,这些组件和插件是开发基于Struts2的应用时不可或缺的部分。以下是...

    struts2常用的类包

    Struts2是一个强大的Java web应用程序框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性、可扩展性极高的应用的工具和结构。本压缩包包含了13个Struts2框架中常用的类包,对于初学者和...

    Struts2 常用标签使用(三十九)

    Struts2是一个强大的Java web框架,它为开发者提供了一种优雅的方式来构建可维护性和扩展性良好的Web应用程序。在Struts2框架中,标签库是其重要特性之一,它极大地简化了视图层的开发,提高了代码的可读性和可维护...

    Struts 常用学习资料

    9. **Action Support**:Struts提供了ActionSupport类,它包含了常用的验证和校验功能,如validate()方法,可以简化表单验证的编写工作。 10. ** strut2-dojo-plugin**:Struts2还提供了与Dojo JavaScript库的集成...

    struts常用的JAR包

    4. **struts-tiles.jar**:Tiles是Struts的一个扩展,用于布局管理。它允许开发者定义可重用的页面布局,然后将内容插入到这些布局中。这提高了代码复用性和页面设计的灵活性。 5. **struts-logic.jar**:包含了...

    struts常用的包

    在Java EE环境中,Struts框架极大地简化了前端控制器(Front Controller)的实现,提升了代码的可维护性和可扩展性。 Struts框架的核心组件包括: 1. **ActionServlet**:这是Struts框架的入口点,负责处理HTTP...

    Struts_API大全

    Struts是Apache软件基金会旗下的一款开源Java Web应用程序框架,它基于Model-View-Controller(MVC)设计模式,旨在简化开发过程,提供可维护性和可扩展性。 在这些压缩包文件中,我们可以找到不同版本的Struts API...

    5个常用struts2 jar 包

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。这个框架基于MVC(Model-View-Controller)设计模式,它简化了开发过程,提供了强大的控制层,允许开发者集中精力在业务...

    Struts常用标签库合集

    Nested Tags 是对前三个标签库的扩展,允许标签之间进行嵌套,使得在处理复杂结构的 bean 时更加方便。例如,如果你有一个 bean 包含其他 bean,Nested Tags 可以帮助你轻松地访问嵌套 bean 的属性。 5. **Tiles ...

    struts常用标签及其用法归纳

    以下是对"struts常用标签及其用法"的详细阐述: 1. **显示数据标签**: - `html:` 标签:用于创建HTML表单元素,如`&lt;html:text&gt;`用于输入框,`&lt;html:password&gt;`用于密码框,`&lt;html:submit&gt;`用于提交按钮等。 - `...

    struts2常用的一些jar包.rar

    这个压缩包“struts2常用的一些jar包.rar”包含了Struts2框架运行所必需的核心库和其他相关组件。下面将详细介绍Struts2框架及其核心组件。 Struts2是Apache软件基金会下的一个开源项目,它是基于MVC(Model-View-...

    struts框架常用jar包

    Java开发常用的ssh开发框架的struts的jar包使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用

    struts2中常用jar包

    Struts2是一个流行的Java web框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护、可扩展的Web应用程序的强大工具。这个压缩包包含了Struts2框架运行所需的一些核心jar包以及相关的源代码...

    struts常用架包及需要用到的架包

    本资源包含了在日常开发Struts2应用时可能需要用到的常用架包。 首先,核心框架包是Struts2的核心部分,包括了控制器组件、拦截器、结果类型等关键功能。这个包通常命名为`struts2-core.jar`,它是所有其他模块的...

Global site tag (gtag.js) - Google Analytics