Struts2是一个基于MVC设计模式的Web应用框架,(用来负责跳转)它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
步骤
导jar包
写配置文件(Struts2.xml)
在Struts.xml配置拦截器
<package name="user" namespace="/自定义name(工作空间名)" extends="struts-default">
<interceptors>
<interceptor name="loginterceptor" class="com.mashen.user.action.LogInterceptor"></interceptor>
<interceptor name="loginStateInterceptor" class="com.mashen.user.action.test.LoginStateInterceptor"></interceptor>
<interceptor name="authInterceptor" class="com.mashen.user.action.test.AuthInterceptor"></interceptor>
<!--把上面定义好的拦截器放到下面的拦截器堆里面执行-->
<interceptor-stack name="logStack">
<interceptor-ref name="loginterceptor"></interceptor-ref>
<interceptor-ref name="authInterceptor"></interceptor-ref>
<interceptor-ref name="loginStateInterceptor"></interceptor-ref>
<!-- 使用jar包里面的方法,一般都是不变的 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!--这里是配置拦截器的第一种, -->
<!--让所有的action都被这个拦截器拦截 -->
<!-- 能让扫描器扫描到的类或方法,需要类或方法的上面添加注释,
注释包括:
@Namespace("/user")(这里要写工作空间)
@Action("doLogin")(这里编写的是执行方法名,Action.action执行现在定义的类或方法)
@Results(
{
@Result(name="loginPage",location="login.jsp"),
@Result(name="mainPage",location="/main.action",type="redirect")
})(这里编写的是结果或者是结果数组,name里面编写的是方法返回结果,location则是在返回结果等于name填写的结果是执行location里面的链接)
(location里面的值,如果是jsp则不需要在前面加"/",如果值是方法名.action,则需要在此前面加 "/")
-->
<default-interceptor-ref name="logStack"></default-interceptor-ref>
<global-results>
<result name="authError">/WEB-INF/pages/user/autherror.jsp</result>
<result name="login" type="redirect">/user/login.action</result>
</global-results>
<!-- 这里是配置拦截器的第二种方法,直接定义一个action -->
<action name="viewUser" class="com.mashen.user.action.ViewUserAction">
<result name="success">/WEB-INF/pages/user/view.jsp</result>
<!--<interceptor-ref name="logStack"></interceptor-ref>-->
</action>
</package>
类名必须用Action结尾,如果类名不用,则需要继承ActionSpoort
Action没有接口,servers和daoyou接口