本文主要是介绍前后台页面参数互传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前台提交Action及请求参数------------->struts截获------------->类中处理,将参数放入request或session中(内置对象)-------------------->接受返回值后struts控制跳转页面------------->页面用EL表达式获取request或session中的参数
第一步
前台提交Action及请求参数
<form action="login1.action" method="post">
<input type="text" id="username" name="username">
<button type="submit" >提交</button>
第二步
struts截获,去testAction类中的testx方法处理,若返回aaa将跳转到test.jsp页面
<action name="login1" class="com.jy.web.action.TestAction" method="testx"><result name="aaa">test.jsp</result></action>
第三步
类中处理,将参数放入request或session中(内置对象)
package com.jy.web.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.springframework.web.context.request.SessionScope;
import jdk.nashorn.internal.ir.RuntimeNode.Request;
import com.jy.web.action.common.BaseAction;
public class TestAction extends BaseAction {/*** */private static final long serialVersionUID = 2059656961593054570L;public String testx(){HttpServletRequest request = ServletActionContext.getRequest();String result="aaa";String aa=request.getParameter("username");put2Request("aa", aa);/* 前一个是变量名,后一个也是,把后一个附给前一个,这样以后用request.getAttribute("aa")得到指定的值,这里aa是前一个aa,注意前一个一定要加双引号,(吃亏是福)*/put2Session("aa", aa);String bb=(String) getSession().getAttribute(aa);System.out.println("页面传来的"+aa+"Session的"+bb);return result;}/*-----------------------------------------*/}
第四步
接受返回值后struts控制跳转页面
<action name="login1" class="com.jy.web.action.TestAction" method="testx"><result name="aaa">test.jsp</result></action>
第五步
页面用EL表达式获取request或session中的参数
成功
${requestScope.aa}
<div>${sessionScope.aa}</div>
注意:
这里的put2Request及put2Session是封装好的在BaseAction中
package com.jy.web.action.common;import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/*** Struts2中的Action基类*/
public class BaseAction extends ActionSupport {private static final long serialVersionUID = 1018499094241813786L;// 提供一些工具方法// //常用方法的封装public HttpServletRequest getRequest() {return ServletActionContext.getRequest();}public HttpSession getSession() {return getRequest().getSession();}public HttpSession getSession(boolean flag) {return getRequest().getSession(flag);}public ServletContext getServletContext() {return ServletActionContext.getServletContext();}/*** 往request作用域存放数据* @param key* @param value*/public void put2Request(String key, Object value) {getRequest().setAttribute(key, value);}/*** 往Session作用域存放数据* @param key* @param value*/public void put2Session(String key, Object value) {getSession().setAttribute(key, value);}/*** 往ServletContext作用域存放数据* @param key* @param value*/public void put2Application(String key, Object value) {getServletContext().setAttribute(key, value);}
}
如果不用封装的put2Request,则放入request内置对象中需要用到
HttpServletRequest request = ServletActionContext.getRequest();//获取当前请求的对象String result="aaa";String aa=request.getParameter("username");request.setAttribute("aa", aa);
如果不用封装的put2Session,则放入session内置对象中需要用到, session的初始化
HttpSession session=request.getSession();//获取当前的session信息session.setAttribute("aa", aa);
put2Request("aa", aa);/* 前一个是变量名,后一个也是,把后一个附给前一个,这样以后用request.getAttribute("aa")得到指定的值,这里aa是前一个aa,注意前一个一定要加双引号,(吃亏是福)*/
put2Session("aa", aa);雷同
用<%%>在前台获取后台数据
<div>输出<%String par=request.getParameter("username");
String att=(String)request.getAttribute("aa");
String ses=(String)request.getSession().getAttribute("aa");
out.print("getParameter获取的值"+"\r"+par+"<br>");
out.print("getAttribute获取的值"+att+"<br>");
out.print("getSession().getAttribute获取的值"+ses+"<br>");//注这里换行要用<br>
%>输出完成</div>
<div>${requestScope.aa}</div>
<div>${sessionScope.aa}</div>
request.getParameter()获取的是用来接收来自get方法或post方法的参数
只能接收java.lang.String
String par=request.getParameter("username");
request.getAttribute()用来接收servlet的变量或Action(其实Action就是特殊的Servlet)
只能接收java.lang.Object
但可以强转为String类型
String att=(String)request.getAttribute("aa");
request.getSession().getAttribute() 先获取session容器,再获取session中的Object
用来接收servlet的变量或Action(其实Action就是特殊的Servlet)
只能接收java.lang.Object
但可以强转为String类型
String ses=(String)request.getSession().getAttribute("aa");
这篇关于前后台页面参数互传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!