刚接触,做了一个简单的,登陆页面一个表单,提交到Action,然后把传入的值在数据库里查询,如果有就能成功登陆,如果没有还是发挥到登陆页面,如果不登陆直接访问登陆后的页面,中间有拦截器拦截,
Map map = ActionContext.getContext().getSession();
map.put("user",name);
上面这段是在Action里的,通过put把值传到拦截器中
Map map = invocation.getInvocationContext().getSession();
map.get("user");
这段进行接收map.put传过来的值,可是每次传进来的都是空值,不知道为什么,请指教
Map map = ActionContext.getContext().getSession();
map.put("user",name);
上面这段是在Action里的,通过put把值传到拦截器中
Map map = invocation.getInvocationContext().getSession();
map.get("user");
这段进行接收map.put传过来的值,可是每次传进来的都是空值,不知道为什么,请指教
或者获取方法不对
<interceptor name="auth" class="org.apache.interceptor.AuthInterceptor"></interceptor>
<interceptor-stack name="default">
<interceptor-ref name="auth"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack"></default-interceptor-ref>
<global-results>
<result name="login" type="redirect">login.jsp</result>
</global-results>
<action name="login" class="org.apache.action.LoginAction">
<interceptor-ref name="default"></interceptor-ref>
<result name="login">login.jsp</result>
<result name="SUCCESS">admin/index.jsp</result>
<result name="filter">login.jsp</result>
<result name="ERROR">login.jsp</result>
<interceptor-ref name="auth"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
这是我xml文件中的代码,我觉得应该不会有问题的
期待xx人解答
package org.apache.action;import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Map;import org.apache.conn.Conn;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
private String username = null;
private String password = null;
private Statement st = null;
private ResultSet rs = null; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
try {
Conn con = new Conn();
st = con.conn().createStatement();
System.out.println("执行查询");
rs = st
.executeQuery("select *from administrator where Admin_Name='"
+ this.username
+ "' and Admin_Password='"
+ this.password + "'");
System.out.println("执行判断");
if (rs.next() == true) {
System.out.println("执行MAP");
Map map = ActionContext.getContext().getSession();
String name=(String)map.get(this.username);
String password=(String)map.get(this.password);
System.out.println("执行username");
map.put("user", name);
System.out.println("执行password");
map.put("pass", password); return "SUCCESS"; } else {
this.addFieldError("username", "用户名错误");
this.addFieldError("password", "密码错误");
return "filter"; } } catch (Exception ex) {
System.out.println(ex.getMessage());
return "ERROR";
} }}
AuthInterceptor.java
package org.apache.interceptor;import java.util.Map;import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;@SuppressWarnings("serial")
public class AuthInterceptor extends AbstractInterceptor {
@SuppressWarnings("unchecked")
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
try
{
Map map = invocation.getInvocationContext().getSession();
if (map.get("user") == null && map.get("pass") == null) {
System.out.println(map.get("user"));
System.out.println(map.get("pass"));
System.out.println(Action.LOGIN); return Action.LOGIN;
} else {
System.out.println("invocation.invoke");
return invocation.invoke();
}
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
return Action.LOGIN;
}
}}使用print打印,可只执行interceptor中的,Action中的没有反应,连接数据库的代码我就不帖了