struts 学习笔记

配置struts2时,需要用到web.xml文件和struts.xml文件;

web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    
<display-name>Struts 2.0 Hello World</display-name>
    
<filter>

  <!-- 配置Struts2核心Filter的名字 -->

        <filter-name>struts2</filter-name>   

 <!-- 配置Struts2核心Filter的实现类 -->

          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

         <init-param>
             <!-- 配置Struts2框架默认加载的Action包结构,可以没有。 -->
             <param-name>actionPackages</param-name>
             <param-value>org.apache.struts2.ssh.strutsAction</param-value>
         </init-param>

    </filter>

    <filter-mapping>

 <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->

        <filter-name>struts2</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>
    
<welcome-file-list>
        
<welcome-file>index.html</welcome-file>
    
</welcome-file-list>
</web-app>

struts.xml

该类的作用是,添加action的映射。

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
>
<struts>
    
<include file="struts-default.xml"/>

<!-- extends于struts-default.xml使其具有struts2默认定义的一些行为。-->
    
<package name="tutorial" extends="struts-default">
        
<action name="HelloWorld" class="tutorial.HelloWorld">
            
<result>HelloWorld.jsp</result>
        
</action>
    
</package>

<!-- extends="json-default",后可以返回json类型的数据,数据的key就是 param 标签类的值,而该数据是在 Action中封装好的

private Map<String, String> callback;

public String noRespontText() {
        callback = new HashMap<String, String>();
        callback.put("one", "1");
        callback.put("tow", "2");
        callback.put("three", "3");
        callback.put("four", "4");
        callback.put("five", "5");
        callback.put("six", "6");
        return "success";

    }

--!>
    <package name="tutorial" extends="json-default">

<!--配置拦截器类--!>

         <interceptors>
            <interceptor name="auth" class="demo1.AuthorizationInterceptor" />
        </interceptors>

        <action name="HelloWorldTEXT" class="demo1.HelloWorld" method="noRespontText">
            <result type="json" name="success"><!--表示该方法的返回值为success字符串是,返回callback对象--!>
                <param name="root">callback</param>
            </result>
        </action>
        <action name="Sfilter" class="demo1.HelloWorld" method="showAdmin">
            <interceptor-ref name="auth" /><!--拦截器使用:在执行该方法前,先执行auth对应的类,interceptors标签的类(上面个)--!>
            <result name ="login" > /SayHello.jsp </result>
            <result name ="success" > /welcome.jsp </result>
        </action>
    </package>

</struts>


拦截类:

public class AuthorizationInterceptor extends AbstractInterceptor {
    private static final long serialVersionUID = 1L;
@Override
    public String intercept(ActionInvocation ai) throws Exception {
       Map<String, Object> session = ai.getInvocationContext().getSession();
       String role = (String) session.get( "login" );
       System.out.println("role"+role);
        if ( null != role) {
            return "success";

//调用后面的action方法(showAdmin)继续执行

       } else {
            return Action.LOGIN;
       }        
   }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值