首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

01_struts容易的登录验证入门例子

2012-12-19 
01_struts简单的登录验证入门例子?? ?目标:登录验证,登录成功转向成功页面,可以进行用户添加操作,登录失败

01_struts简单的登录验证入门例子

?? ?目标:登录验证,登录成功转向成功页面,可以进行用户添加操作,登录失败转向失败页面,未登录就输入添加用用户的连接则非法,强制跳转到登陆页面?

?

?? 1 . 首先添加struts2 jar

??

??? commons-fileupload-1.2.1.jar

??

??? commons-io-1.3.2.jar

?

??? freemarker-2.3.16.jar

?

??? javassist-3.7.ga.jar

?

?? ognl-3.0.jar

?

?? struts2-core-2.2.1.jar

?

?? xwork-core-2.2.1.jar

?

? 2 . 配置strtus的拦截器,在web.xml配置

?

??

<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

?

??

?? 3.??编写登陆验证的Ation ,LoginAction.java

?

???

//实现modelDriven接口public class LoginAction implements ModelDriven{    private User user ;@Overridepublic Object getModel() {if(user == null){user = new User();}return user ;}    //账号密码判断public String  login(){//账号密码正确进入成功页面if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){//把user放到sessionActionContext.getContext().getSession().put("Login", user);return "success" ;}//否则进入失败页面return "fail";}}

?

?

??? 4 .?编写模拟用户添加的action

?????

???????

public class UserAction {    public String add(){return "add";}}

?

??

? 5 . 编写判断是否登陆的拦截器

?

??

//实现Interceptor接口public class LoginInterceptor implements Interceptor{@Overridepublic void destroy() {}@Overridepublic void init() {}@Overridepublic String intercept(ActionInvocation invocation) throws Exception {//如果从session取不到值的话,表示用户未登录,转到登陆页面if(invocation.getInvocationContext().getSession().get("Login")==null){return "index";}//继续往下执行return invocation.invoke();}}

?

?

??? 6 . 配置struts.xml文件,分三部分贴

?

???? (1) 配置登陆拦截器和默认使用的拦截器

?

?

<!-- 一系列的拦截器 -->      <interceptors>            <!-- 登陆用到的拦截器 -->      <interceptor name="logininterceptor"      />            <interceptor-ref name="logininterceptor" />            <interceptor-ref name="alias" />            <interceptor-ref name="servletConfig" />            <interceptor-ref name="i18n" />            <interceptor-ref name="prepare" />            <interceptor-ref name="chain" />            <interceptor-ref name="debugging" />            <interceptor-ref name="scopedModelDriven" />            <interceptor-ref name="modelDriven">            <param name="refreshModelBeforeResult">true</param>            </interceptor-ref>            <interceptor-ref name="fileUpload" />            <interceptor-ref name="checkbox" />            <interceptor-ref name="multiselect" />            <interceptor-ref name="staticParams" />            <interceptor-ref name="actionMappingParams" />            <interceptor-ref name="params">            <param name="excludeParams">      dojo\..*,^struts\..*      </param>            </interceptor-ref>            <interceptor-ref name="conversionError" />            <interceptor-ref name="validation">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            <interceptor-ref name="workflow">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            </interceptor-stack>      <!-- The completeStack is here for backwards compatibility for      applications that still refer to the defaultStack by the      old name -->      <interceptor-stack name="completeStack">            <interceptor-ref name="defaultStack" />            </interceptor-stack>      <!-- Sample execute and wait stack.      Note: execAndWait should always be the *last* interceptor. -->      <interceptor-stack name="executeAndWaitStack">            <interceptor-ref name="execAndWait">            <param name="excludeMethods">input,back,cancel</param>            </interceptor-ref>            <interceptor-ref name="defaultStack" />            <interceptor-ref name="execAndWait">            <param name="excludeMethods">input,back,cancel</param>            </interceptor-ref>      </interceptor-stack>      <!--  未配置登陆验证的拦截栈 -->      <interceptor-stack name="otherStack">            <interceptor-ref name="exception" />      <interceptor-ref name="alias" />            <interceptor-ref name="servletConfig" />            <interceptor-ref name="i18n" />            <interceptor-ref name="prepare" />            <interceptor-ref name="chain" />            <interceptor-ref name="debugging" />            <interceptor-ref name="scopedModelDriven" />            <interceptor-ref name="modelDriven">            <param name="refreshModelBeforeResult">true</param>            </interceptor-ref>            <interceptor-ref name="fileUpload" />            <interceptor-ref name="checkbox" />            <interceptor-ref name="multiselect" />            <interceptor-ref name="staticParams" />            <interceptor-ref name="actionMappingParams" />            <interceptor-ref name="params">            <param name="excludeParams">      dojo\..*,^struts\..*      </param>            </interceptor-ref>            <interceptor-ref name="conversionError" />            <interceptor-ref name="validation">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            <interceptor-ref name="workflow">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            </interceptor-stack>      </interceptors>      

??? 2 . 配置默认使用登陆拦截器

?

?

        <default-interceptor-ref name="needLoginStack"></default-interceptor-ref>      <global-results>         <result name="index">/index.jsp</result>         </global-results> 

?

?

3 . ?? 配置LoginAction 和UserAction

?

??

<action name="login" name="code"><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd">        <struts>          <package name="system" namespace="/system" extends="struts-default">      <!-- 一系列的拦截器 -->      <interceptors>            <!-- 登陆用到的拦截器 -->      <interceptor name="logininterceptor"      />            <interceptor-ref name="logininterceptor" />            <interceptor-ref name="alias" />            <interceptor-ref name="servletConfig" />            <interceptor-ref name="i18n" />            <interceptor-ref name="prepare" />            <interceptor-ref name="chain" />            <interceptor-ref name="debugging" />            <interceptor-ref name="scopedModelDriven" />            <interceptor-ref name="modelDriven">            <param name="refreshModelBeforeResult">true</param>            </interceptor-ref>            <interceptor-ref name="fileUpload" />            <interceptor-ref name="checkbox" />            <interceptor-ref name="multiselect" />            <interceptor-ref name="staticParams" />            <interceptor-ref name="actionMappingParams" />            <interceptor-ref name="params">            <param name="excludeParams">      dojo\..*,^struts\..*      </param>            </interceptor-ref>            <interceptor-ref name="conversionError" />            <interceptor-ref name="validation">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            <interceptor-ref name="workflow">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            </interceptor-stack>      <!-- The completeStack is here for backwards compatibility for      applications that still refer to the defaultStack by the      old name -->      <interceptor-stack name="completeStack">            <interceptor-ref name="defaultStack" />            </interceptor-stack>      <!-- Sample execute and wait stack.      Note: execAndWait should always be the *last* interceptor. -->      <interceptor-stack name="executeAndWaitStack">            <interceptor-ref name="execAndWait">            <param name="excludeMethods">input,back,cancel</param>            </interceptor-ref>            <interceptor-ref name="defaultStack" />            <interceptor-ref name="execAndWait">            <param name="excludeMethods">input,back,cancel</param>            </interceptor-ref>      </interceptor-stack>      <!--  未配置登陆验证的拦截栈 -->      <interceptor-stack name="otherStack">            <interceptor-ref name="exception" />      <interceptor-ref name="alias" />            <interceptor-ref name="servletConfig" />            <interceptor-ref name="i18n" />            <interceptor-ref name="prepare" />            <interceptor-ref name="chain" />            <interceptor-ref name="debugging" />            <interceptor-ref name="scopedModelDriven" />            <interceptor-ref name="modelDriven">            <param name="refreshModelBeforeResult">true</param>            </interceptor-ref>            <interceptor-ref name="fileUpload" />            <interceptor-ref name="checkbox" />            <interceptor-ref name="multiselect" />            <interceptor-ref name="staticParams" />            <interceptor-ref name="actionMappingParams" />            <interceptor-ref name="params">            <param name="excludeParams">      dojo\..*,^struts\..*      </param>            </interceptor-ref>            <interceptor-ref name="conversionError" />            <interceptor-ref name="validation">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            <interceptor-ref name="workflow">            <param name="excludeMethods">      input,back,cancel,browse      </param>            </interceptor-ref>            </interceptor-stack>      </interceptors>                     <default-interceptor-ref name="needLoginStack"></default-interceptor-ref>      <global-results>         <result name="index">/index.jsp</result>         </global-results>      <action name="login" name="code">      <form action="system/login!login.action" method="post">                  用户名:<input type="text" name="username"><br>                       密码: <input type="password" name="password"><br>                      <input type="submit" value="登陆">            </form>

?

(2) 登陆失败和成功页面

?

?? success.jsp

      <h1> 登陆成功</h1><br>              <h1><a href="system/user!add.action"> 添加用户</a></h1><br>

??fail.jsp

?

??

    <center>       <h1>登陆失败</h1><br>           </center>

?? (3) 添加用户成功页面 addSuccess.jsp

?

??

    <center>       <h1>添加一个用户成功</h1>    </center>

?

?

?? 最后,启动服务器测试

?

????输入用户名和密码admin可以登陆,可以添加用户

不错的文章 谢谢分享

热点排行