struts2 直接访问sevlet API 的问题,求助!

猿带码 2016-01-19 03:09:20
小弟初学javaweb,用的《轻松学java web开发》,按照书上案例做的,但是从jsp传递到action中的参数是空值。
无论用IOC方式还是非IOC方式输出都是空值

Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.i18n.encoding" value="gb2312" />
<package name="default" extends="struts-default">
<action name="noiocAction" class="action.NoIoCAction">
<result name="success">/addSuccess.jsp</result>
</action>

</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>
</web-app>


NoIoCAction.action




package action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;


public class NoIoCAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String bookName="123";
private double bookPrice;
private String bookPress;

//省略属性的setXXX()和getXXX()方法

public String execute() {
HttpServletRequest request = ServletActionContext.getRequest();
//request.getParameter("bookname");

HttpSession session = request.getSession();
session.setAttribute("bookName",this.bookName);
session.setAttribute("bookPrice",this.bookPrice);
session.setAttribute("bookPress",this.bookPress);
return SUCCESS;
}
}


<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>添加图书</title>
</head>
<body>
<center>
<s:form action="noiocAction" method="post">
<s:textfield name="bookName" label="书名"/>
<s:textfield name="bookPrice" label="价格"/>
<s:textfield name="bookPress" label="出版社"/>
<s:submit value="提交"/>
</s:form>
</center>
</body>
</html>



<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>添加成功</title>
</head>
<body>

读取session中的内容,您添加的图书信息为:
<br><br>
书名:<s:property value="#session.bookName"/> <br><br>
价格:<s:property value="#session.bookPrice"/> <br><br>
出版社:<s:property value="#session.bookPress"/>
</body>
</html>

为什么在DEBUG里bookName、bookPrice、bookPress都是空的呢。。。我不是从jsp post到了action里么 求助
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
猿带码 2016-01-22
  • 打赏
  • 举报
回复
引用 2 楼 shixitong 的回复:
代码看不出啥问题,你这个又不是转发,可以不用发到session里面,直接从requst里取 DEBUG里bookName、bookPrice、bookPress都是空的呢,这个具体啥意思
没设置 setXXX。。。所以空的...
猿带码 2016-01-22
  • 打赏
  • 举报
回复
引用 3 楼 a510835147 的回复:
好像没提供setter方法吧 action收集数据,需要用到setter方法的啊
正解 代码里写省略setXXX,我以为可以省略,原来是他懒得打了...
_追逐梦想_ 2016-01-20
  • 打赏
  • 举报
回复
好像没提供setter方法吧 action收集数据,需要用到setter方法的啊
shixitong 2016-01-20
  • 打赏
  • 举报
回复
代码看不出啥问题,你这个又不是转发,可以不用发到session里面,直接从requst里取 DEBUG里bookName、bookPrice、bookPress都是空的呢,这个具体啥意思
猿带码 2016-01-20
  • 打赏
  • 举报
回复
好像就是 在action中往request里添加值,添加不进去

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧