Struts2在没有会话的情况下传递参数
我有一个要求,在不使用会话的情况下,将参数从一个操作传递到另一个操作:这是我的代码,我正在尝试使用范围拦截器。 这是我的代码,我不确定我做错了什么,但我无法得到结果Struts2在没有会话的情况下传递参数,struts2,scope,action,interceptor,param,Struts2,Scope,Action,Interceptor,Param,我有一个要求,在不使用会话的情况下,将参数从一个操作传递到另一个操作:这是我的代码,我正在尝试使用范围拦截器。 这是我的代码,我不确定我做错了什么,但我无法得到结果 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="HelloWorld" class="com.tutorials4u.helloworld.HelloWorld">
<result name="SUCCESS">/success.jsp</result>
</action>
<action name="FirstAction" class="com.tutorials4u.helloworld.FirstAction">
<interceptor-ref name="basicStack" />
<interceptor-ref name="scope">
<param name="session">myName</param>
<param name="key">person</param>
<param name="type">start</param>
</interceptor-ref>
<result name="SUCCESS">/success1.jsp</result>
</action>
<action name="SecondAction" class="com.tutorials4u.helloworld.SecondAction">
<interceptor-ref name="scope">
<param name="session">myName</param>
<param name="key">person</param>
</interceptor-ref>
<interceptor-ref name="basicStack" />
<result name="SUCCESS">/success2.jsp</result>
</action>
</package>
</struts>
*index.jsp*
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<s:form action="HelloWorld" >
<s:textfield name="userName" label="User Name" />
<s:submit />
</s:form>
</body>
</html>
*Success.jsp*
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<s:property value="person.myName"></s:property>
<s:form action="FirstAction" >
<s:submit value="Click for first Action"></s:submit>
</s:form>
</body>
</html>
*success1.jsp*
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<s:property value="person.myName"></s:property>
<h1><s:property value="message" /></h1>I am in FIRST ACTION
<s:form action="SecondAction">
<s:submit value="click for 2nd action"></s:submit></s:form>
</body>
</html>
*success2.jsp*
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<h1><s:property value="message" /></h1>2ND ACTION EXECUTED
<s:property value="person.myName"></s:property>
</body>
</html>
**ACTIONS**
package com.tutorials4u.helloworld;
import com.opensymphony.xwork2.ActionSupport;
/**
*
*
*/
public class HelloWorld extends ActionSupport{
private static final long serialVersionUID = 1L;
private String message;
private String userName;
public HelloWorld() {
}
public String execute() {
setMessage("Hello " + getUserName());
return "SUCCESS";
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* @param message the message to set
*/
public void setMessage(String message) {
this.message = message;
}
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
}
*FirstAction.java*
package com.tutorials4u.helloworld;
import com.opensymphony.xwork2.ActionSupport;
public class FirstAction extends ActionSupport {
/**
*
*/
private String myString;
private Person person;
private static final long serialVersionUID = 1L;
public FirstAction(){
}
public String execute() {
return "SUCCESS";
}
public String getMyString() {
return myString;
}
public void setMyString(String myString1) {
this.myString = myString1;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
package com.tutorials4u.helloworld;
public class Person {
private String myName;
public String getMyName() {
return myName;
}
public void setMyName(String myName1) {
myName1 = "test string";
this.myName = myName1;
}
}
SecondAction.java
package com.tutorials4u.helloworld;
import com.opensymphony.xwork2.ActionSupport;
public class SecondAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private Person person;
public SecondAction(){
}
public String execute() {
return "SUCCESS";
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
---I would really appreciate if you can help me on where I was doing things wrong..
TIA
/success.jsp
我的名字
人
开始
/success1.jsp
我的名字
人
/success2.jsp
*index.jsp*
你好,世界
*Success.jsp*
你好,世界
*success1.jsp*
你好,世界
我是第一个行动
*success2.jsp*
你好,世界
执行第二个行动
**行动**
包com.tutorials4u.helloworld;
导入com.opensymphony.xwork2.ActionSupport;
/**
*
*
*/
公共类HelloWorld扩展了ActionSupport{
私有静态最终长serialVersionUID=1L;
私有字符串消息;
私有字符串用户名;
公共HelloWorld(){
}
公共字符串execute(){
setMessage(“Hello”+getUserName());
返回“成功”;
}
/**
*@回信
*/
公共字符串getMessage(){
返回消息;
}
/**
*@param message要设置的消息
*/
公共无效设置消息(字符串消息){
this.message=消息;
}
/**
*@返回用户名
*/
公共字符串getUserName(){
返回用户名;
}
/**
*@param userName要设置的用户名
*/
public void setUserName(字符串用户名){
this.userName=用户名;
}
}
*FirstAction.java*
包com.tutorials4u.helloworld;
导入com.opensymphony.xwork2.ActionSupport;
公共集体诉讼扩大了行动支持{
/**
*
*/
私有字符串myString;
私人;
私有静态最终长serialVersionUID=1L;
公共第一行动(){
}
公共字符串execute(){
返回“成功”;
}
公共字符串getMyString(){
返回myString;
}
public void setMyString(字符串myString1){
this.myString=myString1;
}
公众人物{
返回人;
}
公众人士{
这个人=人;
}
}
包com.tutorials4u.helloworld;
公共阶层人士{
私有字符串myName;
公共字符串getMyName(){
返回我的名字;
}
公共void setMyName(字符串myName1){
myName1=“测试字符串”;
this.myName=myName1;
}
}
SecondAction.java
包com.tutorials4u.helloworld;
导入com.opensymphony.xwork2.ActionSupport;
公共类第二行动扩展了ActionSupport{
私有静态最终长serialVersionUID=1L;
私人;
公共行动(){
}
公共字符串execute(){
返回“成功”;
}
公众人物{
返回人;
}
公众人士{
这个人=人;
}
}
---如果你能在我做错的地方帮助我,我将不胜感激。。
短暂性脑缺血发作
因此,我们在每个其他操作中实例化会话对象
对吧?
一点也不,我们只是从ServletActionContext检索它
如何进行会话
ServletActionContext.getContext().getSession().put("softuser", someUserObject);
ServletActionContext.getContext().getSession().get("softuser");
如何从会话中检索
ServletActionContext.getContext().getSession().put("softuser", someUserObject);
ServletActionContext.getContext().getSession().get("softuser");
因为如果我想在动作之间传递数据,对于从数据库中获取的ex data,我需要使用sesionMap,并从另一个动作中使用类似getAttribute的东西,通过在另一个动作中实例化会话,例如HttpSession session=(session)HttpServletContext.getActionServlet.getAttribute(),类似于这样的东西,我的代码并不完全正确,所以我们在每个动作中实例化会话对象,对吗?是否有解决方法。Map parameters=this.getSession();我如何从前端访问它然后>你能给我举个例子或者给我举个例子吗?简化
SessionAware
是更好的方法。