我正在设计一个基本应用程序,其中用户提供用户标识和密码,如果登录成功,他将被重定向到主页。现在,如果用户ID和密码不为空,我想使用拦截器。但是我无法找出如何访问拦截器中请求参数的值。JSP代码
<s:form action="Login.action" method="post"> <s:textfield label="Username" name="bean.userId"/> <s:submit value="Login" /> </s:form>
模型
@Entity @Table(name="login") public class Login implements Serializable { public Login() { } public Login(String userId1, String userPassword1) { userId1 = userId; userPassword1 = userPassword; } private String userId; private String userPassword; @Id @Column(name="USERID", nullable=false) public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } @Column(name="USERPASSWORD", nullable=false) public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } }
视图
public class LoginAction extends ActionSupport { private Login bean; public String login() { LoginManager manager=new LoginManager(); try { manager.add(getBean()); } catch(Exception e) { System.out.println(e.getMessage()); } return "success"; } public Login getBean() { return bean; } public void setBean(Login bean) { this.bean = bean; }
拦截器
public class LoggingInterceptor implements Interceptor { public void destroy() { System.out.println("Destorying......"); } public void init() { System.out.println("Initializing......"); } public String intercept(ActionInvocation actionInvocation) throws Exception { ActionConfig config = actionInvocation.getProxy().getConfig(); Map parameters = config.getParams(); String menuId = (String)parameters.get("userId"); System.out.println("Got it:"+menuId); return actionInvocation.invoke(); }
}
此代码应为您提供来自servlet请求的参数。假设参数有一个值。
public String intercept(ActionInvocation actionInvocation) throws Exception { Map<String, String[]> parameters = ServletActionContext.getRequest().getParameterMap(); String userId = parameters.get("bean.userId")[0]; System.out.println("Got it:"+userId); return actionInvocation.invoke(); }