struts.xml
-----------------------
<struts>
<package name="interceptor_1" namespace="/c" extends="struts-default"><interceptors>
<interceptor name="interceptor1" class="com.interceptor1"/><interceptor-stack name="default">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="interceptor1"/>
</interceptor-stack></interceptors>

<global-results>
<result name="message">/message.jsp</result>
</global-results><action name="login" class="com.interceptoraction"><default-interceptor-ref name="default"/>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>--------------------------
interceptoraction.java
-----------------------public class interceptoraction extends ActionSupport {

private String user;
private String pass;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
@Override
public String execute() throws Exception {
System.out.println("123");
ActionContext.getContext().put("mess","ok");
return "message";
}}
-----------------------
interceptor1.java
----------------------public class interceptor1 implements Interceptor { public void destroy() {
} public void init() {
} public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ctx=invocation.getInvocationContext();
Map session=ctx.getSession();
String user =(String)session.get("user");
String pass=(String)session.get("pass");
System.out.println(user);
System.out.println(pass);
if("czp".equals(user)&&"123".equals(pass))
{
return invocation.invoke();
}
else
{
return "input";
}
}-----------------------------
message.jsp
-----------------------------<body>
   ${mess}
  </body>
-----------------------------
index.jsp
-----------------------------
<body>
  
    <s:form action="c/login" method="post">
    <s:textfield name="user" label="name"></s:textfield>
    <s:password name="pass" label="pass"></s:password>
    <s:submit></s:submit>
   
    </s:form>
  </body>

解决方案 »

  1.   

    补充:interceptor1.java 
    String user =(String)session.get("user");
    String pass=(String)session.get("pass");
    System.out.println(user);
    System.out.println(pass);

    打印为null,null
      

  2.   

    没有set user怎么会get到user的值;拦截器和action在同一个包下,拦截器会起作用吗
      

  3.   

    <% request.getSession().setAttribute("user","czp"); %>
      <% request.getSession().setAttribute("pass","123"); %>
    加到index.jsp就行,如果不用脚本,怎么传值????
      

  4.   

    进不去Action就是你的路径有问题,看下是不是应该写成c/login.action,struts2有大量的拦截器
      

  5.   

    不是先由拦截器拦截,在跳到action吗
      

  6.   

    “没有set user怎么会get到user的值;拦截器和action在同一个包下,拦截器会起作用吗”求解释
      

  7.   

    没看到向session中放user pass,所以取出的就为null吧;
    你配置的拦截器作用就是为了进行用户名和密码的验证的话,感觉就没必要了,
    直接在你的Action中验证照样可以实现吧...
      

  8.   

    对于楼上好所说,用action 验证,本人能实现,但是本人想学习拦截器,故做了个拦截器,但是不知道怎么jsp传值
      

  9.   

    LZ 你的 String user =(String)session.get("user");
    String pass=(String)session.get("pass");
    是多余的。。
      

  10.   

    public String intercept(ActionInvocation invocation) throws Exception {
        String pass = (String)ServletActionContext.getRequest().getAttribute("pass");
    }
      

  11.   

    struts2中,只要页面属性名和action中的属性名相同,就可以得到页面传过来的值,前提是其属性要有get()和set()方法。
      

  12.   

    行了,为什么一定要 String pass = (String)ServletActionContext.getRequest().getAttribute("pass");,跟ActionContext ctx=invocation.getInvocationContext();有什么区别呢?
      

  13.   

    request和ActionContext不是一个范围。