提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
今天来学习下,struts1框架中实现页面跳转或请求转发的八种方式。
action代码如下
request.getRequestDispatcher(“login.jsp”).forward(request, response);
login.jsp内容,可以参看我之前的文章
https://blog.csdn.net/dy051107/article/details/134743425
这种方式struts1中不推荐使用,
struts1中常用的页面跳转或请求转发一般使用ActionForward类的findForward方法结合struts-config.xml文件中的action标签内的forward标签来配置,下面的几种方式我们会讲到
这里作为了解
action示例代码如下:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class ForwardAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.err.println("request getRequestDispatcher forward");
request.getRequestDispatcher("login.jsp").forward(request, response);
return null;
}
}
response.sendRedirect(“/login.jsp”);
使用request和response的页面跳转,
action的返回值是null,这样就违反了,struts1框架中action返回ActionForward的设计原则
action示例代码如下:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class ForwardAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.err.println("response redirect");
response.sendRedirect("/login.jsp");
return null;
}
}
struts-config.xml的配置
<action
path="/MultForwardLogin"
type="xxx.xxx.action.ForwardAction">
action>
<action
path="/MultForwardLogin"
type="xxx.xxx.action.ForwardAction">
<forward name="success" path="/login.jsp">forward>
action>
action示例代码如下:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class ForwardAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
return mapping.findForward("success");
}
}
<action
path="/MultForwardLogin" forward="/login.jsp">
action>
<global-forwards>
<forward name="login" path="/login.jsp" redirect="true">forward>
global-forwards>
<action
path="/login"
type="xxx.xxx.action.LoginAction"
name="loginForm"
scope="request"
input="/login.jsp">
<forward name="success" path="/login_success.jsp">forward>
action>
action代码如下
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import xxx.xxx.form.LoginForm;
public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
LoginForm lf = (LoginForm) form;
String username = lf.getUsername();
String password = lf.getPassword();
if ("admin".equals(username) && "admin".equals(password)) {
request.getSession().setAttribute("username", username);
return mapping.findForward("success");
} else {
request.setAttribute("msg", "用户名和密码不正确");
return mapping.getInputForward();
}
}
}
struts-config.xml配置代码如下
<action forward="/404.jsp" unknown="true">
action>
action代码如下:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class DynaForwardAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
ActionForward af = new ActionForward();
af.setPath("/page" + request.getParameter("page") + ".jsp");
return af;
}
}
struts-config.xml文件中的action配置如下:
<action
path="/dyna_forward"
type="xxx.xxx.action.DynaForwardAction">
action>
jsp代码如下
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
Insert title here
以上就是struts1框架中的八种页面跳转或请求转发的方式总结,欢迎留言补充,下篇见。