Struct三种配置方式

Struct三种配置方式

方法一:使用ActionServlet,拦截器为servlet,Action类继承Action,方便在于表单提交的数据可以直接传输在UserForm中。
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>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</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位于WEB-INF文件夹下面
<struts-config>  
  <form-beans>
      <form-bean name="userform" type="com.ssh.actionform.UserForm"></form-bean>  
  </form-beans>
  <action-mappings> 
  <action name="userform" path="/login" type="com.ssh.action.LoginAction" scope="request">
      <forward name="sucess" path="/sucess.jsp"></forward>
      <forward name="error" path="/error.jsp"></forward>
  </action>  
  </action-mappings>
  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>

Action类文件
public class LoginAction extends Action{
    public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,
                HttpServletRequest request,HttpServletResponse response){
    //通过UserForm自动将表单的信息注入到UserForm中,在Action类中可以直接获取表单中的
//所有值, 但是要求表单中input 的name属性与UserForm类中的字段属性必须严格保持一致
        UserForm user=(UserForm)actionForm;       
        System.out.println(user.getUserName()+":"+user.getPassWord());
        return actionMapping.findForward("sucess");
    }
}
public class UserForm extends ActionForm{
    int id;
    String userName;
    String passWord; 
     //******此处省略属性set及get方法*******  
}
方法二:Struct2.1.3版本之前的,拦截器使用filterFilter的实现类FilterDispatcherAction类继承ActionSupport
web.xml文件
   <filter>  <!--定义核心Filter FilterDispatcher -->
     <filter-name>struts2</filter-name>    <!-- 定义核心Filter的名称 -->
     <filter-class>   <!--定义核心Filter的实现类 -->
            org.apache.struts2.dispatcher.FilterDispatcher
     </filter-class>
 </filter>
 <filter-mapping>
     <filter-name>struts2</filter-name><!--核心Filter的名称 -->
     <url-pattern>/*</url-pattern><!--使用该核心Filter过滤所有的Web请求 -->
 </filter-mapping>
struts.xml
<struts><!-- 根节点 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <package name="struts2" extends="struts-default">   
     <action name="login" class="com.sanqing.action.LoginAction">
       <result name="studentSuccess" type="chain">getRandomSubject</result><!--进入考试页面-->
       <result name="teacherSuccess" type="redirect">/teacher/index.html</result><!--老师登录成功页面-->
        <result name="input">/login.jsp</result><!--登录失败页面-->
      </action>
     </package>    
</struts>
Action类文件
public class LoginAction extends ActionSupport {
    private String id;             //
    private String password;    //  

   //******此处省略属性set及get方法******* 

    public String execute() throws Exception {
        return this.INPUT;
   }
}
方法三:Struct与Spring相结合,拦截器使用filterFilter的实现类StrutsPrepareAndExecuteFilter,Action类继承ActionSupport方法的好处在于:不用为每一个action写一个Action类,只需要在struct的action中配置method方法,因此在一个Action类中可以响应多个action请求。
web.xml配置
    <filter>
      <filter-name>struct2</filter-name>
      <filter-class>
       org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
     </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struct2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 定义spring配置文件在哪里 -->
    <context-param>
        <!-- 参数名称必须叫contextConfigLocation -->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
      <!-- 在应用服务器启动的时候,根据contextConfigLocation的取值, 创建BeanFactory   对象,并且把这个对象放入ServletContext -->
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
struts.xml文件配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

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

        <action name="login" class="com.iven.action.UserAction"
            method="login">

            <result name="success">/main.jsp</result>    
            <result name="admin">/admin/main.jsp</result>    
            <result name="login">/login.jsp</result>    
        </action>  
    </package>    
</struts> 
创建Action类UserAction
@Controller
public class UserAction extends ActionSupport implements ModelDriven<User> {
    private User user = null;
    @Override
    public User getModel() {
        if (user == null) {
            user = new User();
        }
        return user;
    }
    public String login(){            
        return LOGIN;        
    }

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值