实现的功能:在需要用户登录才能浏览的页前加拦截器,跳转到登陆页,登录后自动跳转到请求页;
1.让interceptor 获取 跳转信息 respones.setAttribute("nextAction",request.getServletPath()+"?"+request.getQuery()),login.jsp里get出来放到hidden里,action接受后return "success"; 在struts.xml中设置 result type=redirect 跳转到${next},成功;
2.还可以通过chain,resultType(共享值栈,相当于2个action共享field),先用loginAction获取到QueryString,实现太麻烦,不灵活,舍弃;
public class LoginInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation arg0) throws Exception {
if(arg0.getInvocationContext().getSession().get("name")==null){
HttpServletRequest request=ServletActionContext.getRequest();
request.setAttribute("nextAction", request.getServletPath()+"?"+request.getQueryString());
return "reLogin";
}
return arg0.invoke();
}
}
login.jsp
<input type="hidden" name="nextAction" value="<%=request.getAttribute("nextAction") %>"/>
struts.xml
<interceptors>
<interceptor name="loginInterceptor"
class="p2world.sshBbs.interceptor.LoginInterceptor" />
</interceptors>
<global-results>
<result name="reLogin">login.jsp</result>
</global-results>
<action name="login" class="loginAction">
<result name="success" type="redirect">${nextAction}</result>
<result name="fail" type="redirect">fail.jsp</result>
</action>
loginAction
private String nextAction;
public String execute() throws IOException{
System.out.println(nextAction);
// HttpServletResponse response=ServletActionContext.getResponse();
password=new MD5Code().getMD5ofStr(password);
User u=new User();
u.setName(name);
u.setPassword(password);
if(userService.login(u)){
ActionContext.getContext().getSession().put("name", name);
// response.sendRedirect(nextAction);
return "success";
}else {
return "fail";
}
}
分享到:
相关推荐
Action类中的方法对应用户请求的URL,当用户发起请求时,Struts2框架会根据配置文件(struts.xml)找到对应的Action并执行相应的方法。 例如,我们可以创建一个名为`SimpleAction`的类,其中包含一个`execute()`...
针对"Struts2 跳转至404 页面的解决方案"这个主题,我们将深入探讨可能的原因和解决方法。 首先,我们来看`struts.xml`文件,这是Struts2的核心配置文件,负责定义Action、结果类型、拦截器等关键组件。当Struts2...
### Struts2中Action间的参数传递方法 在Struts2框架中,经常需要实现Action之间的跳转,并在跳转过程中传递必要的参数。这种需求在实际开发中非常常见,尤其是在需要根据用户的不同操作来调用不同的业务逻辑时。...
6. 动态方法调用(Dynamic Method Invocation,DMI) DMI允许Action路径直接映射到Action类的方法,减少了struts-config.xml的配置,但可能会带来安全风险,因此在生产环境中应谨慎使用。 总结,Struts1.3中的页面...
在Struts2框架中,页面跳转是常见的需求,它涉及到前端控制器的设计模式以及请求处理流程。`<jsp:forward/>`标签在JavaServer Pages (JSP)中用于将一个请求转发到另一个资源,比如从一个JSP页面跳转到另一个JSP页面...
4. **处理重定向**:在拦截器的`intercept()`方法中,当登录成功时,我们获取并返回存储的原始URL,Struts2会自动进行重定向操作。如果登录失败,则按正常流程返回Action的结果。 通过这样的设置,Struts2的拦截器...
2. JSP中跳转到Action:通过`<html:submit>`或`<html:image>`等标签,用户点击后会提交表单到指定的Action,Action根据请求参数决定跳转的页面。 3. Action中的业务逻辑跳转:在Action类中,可以根据业务逻辑使用`...
在Struts2中,路径跳转是应用程序中常见的操作,它涉及到请求转发和重定向。当遇到“Struts2中路径无法跳转的问题”时,这通常与配置、Action类、结果类型或JSP页面的设置有关。以下是一些可能导致问题的关键知识点...
在Struts2框架中,Action类是业务逻辑处理的核心组件,它负责接收并处理来自用户的请求。本实例探讨了如何让一个Action类处理多个请求,这在开发中常见于需要集中处理相似请求的情况,可以提高代码复用性和结构的...
对于登录,可能会有成功和失败两种结果,分别跳转到不同的页面,如`success`跳转到欢迎页,`input`表示验证失败,返回登录页面。 6. **Session管理**: 登录成功后,通常会将用户信息保存在Session中,以便在后续...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序框架,它在Java社区中广泛应用于构建动态、数据驱动的Web应用。本实例将详细讲解如何使用Struts2实现一个简单的登录功能。 一、Struts2...
本项目"Struts2登录界面"旨在帮助初学者快速理解和实践Struts2框架的基础应用。 首先,让我们了解一下Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。Action类是处理用户请求...
本DEMO是针对Struts2框架的一个简单登录示例,旨在帮助初学者理解并掌握Struts2的基本用法。 在Struts2登录DEMO中,主要涉及以下几个核心知识点: 1. **Action类**:在Struts2中,Action类是业务逻辑的载体,通常...
同时,我们需要编写一个execute()方法,这是Struts2框架调用的主要入口点,负责处理用户提交的登录请求。 在execute()方法中,我们可以实现用户身份验证的逻辑。这通常包括检查用户名和密码是否匹配数据库中的记录...
在Struts2中,Action是核心组件,负责处理用户的请求并执行业务逻辑,而Result则是Action执行后的跳转结果。本篇将深入讲解Struts2中的Action和Result,以及它们如何协同工作来实现页面跳转。 首先,让我们理解...
在Struts2中,我们通常会创建一个专门的Action类来处理登录请求。Action类是业务逻辑的载体,它接收用户请求,进行处理,并返回结果到视图层。 1. **Action**:Action类是Struts2的核心组件,它定义了业务逻辑的...
在这种模式下,ActionServlet接收到请求后,会直接调用action类的`execute()`方法,然后根据`execute()`方法返回的ActionForward对象,查找配置中的forward,从而决定跳转到哪个页面或执行哪个action。 ### 仅有JSP...
动态方法调用是Struts2的一种强大功能,它允许根据不同的用户请求动态决定执行哪个Action方法。主要有以下两种方式: 1. **基于struts.xml配置**:在配置文件中,可以为每个action指定一个默认的方法,比如`...
当用户提交登录表单时,Struts2会拦截这个请求,并根据配置的Action映射找到相应的处理方法。 1. **Action类**:在Struts2中,Action类是业务逻辑的载体,通常继承自`org.apache.struts2.dispatcher.ng.Execute...
完成以上步骤后,运行项目,访问`login.jsp`页面,输入用户名和密码,点击登录按钮,Struts2框架将处理请求,调用Action中的`execute`方法进行验证,并根据返回的结果跳转到相应的页面。 总结,这个实例展示了如何...