我是靠谱客的博主 粗心棉花糖,最近开发中收集的这篇文章主要介绍SSH注解版配置拦截器及拦截器的应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

步骤一:struts.xml中配置拦截器

<!-- 定义一个拦截器 -->

<struts>

<package name="bookmanage" namespace="/" extends="json-default"><!--name随意命名,extends="struts-default" -->

    <interceptors>        

        <!-- class="com.bookmanage.interceptor.LoginIntercepter" 拦截器类的全路径名-->

        <!-- 拦截器的名字:loginIntercepter -->   

         <interceptor name="loginIntercepter" class="com.bookmanage.interceptor.LoginIntercepter"></interceptor>

          <!-- stack 栈:一种数据结构:先进后出(叠罗汉);queue 队列:一种数据结构:先进先出(排队) -->  

         <interceptor-stack name="myStack">

                    <!-- 先写自己的拦截器,再写系统自己的拦截器,系统的拦截器必须写,要不然会报错 -->

                    <interceptor-ref name="loginIntercepter"></interceptor-ref>//自定义的拦截器
        <interceptor-ref name="defaultStack"></interceptor-ref>//系统的拦截器

            </interceptor-stack>  

     </interceptors>

        <!-- 定义全局结果 -->
    <global-results>
    <!-- 处理拦截器中的LOGIN,重定向到login.jsp,进行重新登录 -->

    <!-- <result name="login" type="redirect">/login.jsp</result> -->

    <result name="login">/login.jsp</result>
    </global-results>

</package>

</struts>


步骤二:创建一个拦截器的包以及类

package com.bookmanage.interceptor;

public class LoginIntercepter extends AbstractInterceptor {

/**
* 登录拦截器

* @author Administrator

*/
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
Map session=invocation.getInvocationContext().getSession();
User user= (User) session.get("loginUser");//loginUser是登录时候存的session
if (user==null) {
invocation.getInvocationContext().put("
errorMessage", "no");
return
Action.LOGIN;//Action.LOGIN表示登录之后才能进行登录后的操作,进行拦截
}else {
return
invocation.invoke();//登录成功后继续执行之后的action
}

}

}


步骤三:控制器中应用拦截器

package com.bookmanage.action;

@Controller//声明这是控制器

@ParentPackage("bookmanage")//声明继承哪个父类包,bookmanage是struts.xml配置中自定义拦截器package name="bookmanage"的name

public class BookAction extends ActionSupport {
//反转控制注入

@Resource  private BookBiz bookBiz;

        @Resource  private UserBiz userBiz;

        //用户登录,登录成功后才能查询图书信息,再进行下一步的操作,登录不成功或没登录打开其他网页会直接跳转到login.jsp页面

        @Action(value="userLogin",results={
@Result(name="success",type="redirectAction",location="findAllbook"),
//type="redirectAction"重定向到action
@Result(name="input",type="redirect",location="/login.jsp")})//type="redirect"表示重定向到jsp

        public String userLogin(){

            User loginUser=userBiz.findUserByNamePwd(user.getName(), user.getPassword());
if(loginUser!=null){
//保存Session
ServletActionContext.getRequest().getSession().setAttribute("loginUser", loginUser);
return SUCCESS;
}
return INPUT;

        }

        //查询图书信息

        @Action(value="findAllbook",results={@Result(name="success",location="/index.jsp")},

    interceptorRefs={@InterceptorRef("myStack")})

        // interceptorRefs={@InterceptorRef("myStack")}表示先调用自己自定义的拦截器再调用系统的拦截器

        public String findAllBook(){

                /**查询方法省略**/

           }

}


步骤四:在login.jsp中判断是否已经登录(可省略)

<body>
<!-- 没登录之前运行其他页面会直接弹窗 -->
<c:if test="${errorMessage=='no' }">
<script type="text/javascript">
alert("对不起,请先登录!");
</script>
</c:if>


<div id="main">
<h3>登录图书管理系统</h3>
<form action="userLogin.html" method="post">
<table>
<tr>
<td><div align="right">用户名:</div></td>
<td><div align="center">
<input type="text" id="name" name="user.name" class="w200" />
</div></td>
</tr>
<tr>
<td><div align="right">密 码:</div></td>
<td><div align="center">
<input type="password" id="password" name="user.password"
class="w200" />
</div></td>
</tr>
<tr>
<td><div align="right">&nbsp;</div></td>
<td><div align="center">
<input type="submit" value="登录" />
</div></td>
</tr>
<tr>
<td colspan="2" class="msg"></td>
</tr>
</table>
</form>
</div>
</body>

最后

以上就是粗心棉花糖为你收集整理的SSH注解版配置拦截器及拦截器的应用的全部内容,希望文章能够帮你解决SSH注解版配置拦截器及拦截器的应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部