我自己建了一个web工程,采用struts框架,就想把页面提交的内容在另外一个页面显示出来,下面是一部分代码:
1.JSP页面(sendMessage.jsp)
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>模拟发送短信</title>
</head>
<body>
<p align=center><font size=5>请填写短信相关内容</font>
<hr color=blue>
<br>
<br>
<p align=center>
<form method="post" action="/myproject/send.do">
请输入短信内容:<input type=text name="content" value="CL;XY001"><br>
<br>
请输入收件人号码:<input type=text name="destId"><br>
<br>
请输入发件人号码:<input type=text name="srcId"><br>
<br>
<input type=reset value=重新填写> <input type=submit value=发送短信>
</form>
</body>
</html>success.jsp<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>反馈信息</title>
</head>
<body>
<p align=center><font size=5>您的短信已经发送成功!</font><br><hr><br><br>
${RESPONSE }
</body>
</html>2.web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping></web-app>3.struts-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<form-beans>
<form-bean name="MessageForm"
type="com.neusoft.form.MessageForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/send" name="MessageForm"
type="com.neusoft.action.MessageAction" scope="request" input="/sendMessage.jsp">
<forward name="success" path="/success.jsp" />
</action>
</action-mappings>
</struts-config>4.MessageForm类
package com.neusoft.form;import org.apache.struts.action.ActionForm;public class MessageForm extends ActionForm {
/**
 * 
 */
private static final long serialVersionUID = 1L; private String content;
private String destId;
private String srcId; public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} public String getSrcId() {
return srcId;
} public void setSrcId(String srcId) {
this.srcId = srcId;
} public String getDestId() {
return destId;
} public void setDestId(String destId) {
this.destId = destId;
}}5.MessageAction类package com.neusoft.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 com.neusoft.form.MessageForm;
import com.neusoft.model.Message;//import com.neusoft.model.MessageHandler;
//import com.neusoft.model.response.Response;public class MessageAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { MessageForm messageForm = (MessageForm) form; System.out.println(messageForm.getDestId()); String s = messageForm.getDestId(); request.setAttribute("RESPONSE", s); return mapping.findForward("success");
}}

解决方案 »

  1.   

    下面是错误提示内容:
    警告: Unhandled exception
    java.lang.NullPointerException
    at com.neusoft.action.MessageAction.execute(MessageAction.java:25)
    at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
    2008-5-28 11:39:33 org.apache.struts.chain.commands.ExceptionCatcher postprocess
    警告: Exception from exceptionCommand 'servlet-exception'
    java.lang.NullPointerException
    at com.neusoft.action.MessageAction.execute(MessageAction.java:25)
    at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
    2008-5-28 11:39:33 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet action threw exception
    java.lang.NullPointerException
    at com.neusoft.action.MessageAction.execute(MessageAction.java:25)
    at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
    该导入的包都已经导入了,用的struts1.3.8版本,不知道是哪出的错,好象是根本没有读取到struts-config.xml文件内容
    ,希望大家帮忙看下,解决下,谢谢了!
      

  2.   

    怎么了,楼主,找不到action吧?
      

  3.   

    at com.neusoft.action.MessageAction.execute(MessageAction.java:25) 25行是哪一句?
      

  4.   

    MessageAction.java:25
    空指针异常
    该处应该是没有取到值
      

  5.   

    貌似你的form没有得到!
    试试这样得到数据:
    request.getParameter("destId");
    request.getParameter("srcId");
    看能得到不?
      

  6.   

    根本就没执行action!!
    到底是怎么回事啊?大家帮忙看一下啊
      

  7.   


    就是找不到action啊,为什么?
      

  8.   

    改成这样:
    <form method="post" action="send.do"> 
      

  9.   


    这两句写在execute()里吗?
      

  10.   


    这样也不行,我试过了.
    我觉得有可能是web.xml有错,好像没有读取里面的内容,这个文件到底是在什么时候读取的?要读取它需要什么包吗?
    还是它是由tomcat读取的?
      

  11.   

    楼主 <form method="post" action="/myproject/send.do"> 
    这个中的路径有错,与你的path="/send"不匹配,你要改成:
    <form method="post" action="send.do"> 你的Action执行了,但在Action的25行出错了:
    at com.neusoft.action.MessageAction.execute(MessageAction.java:25)
    25行代码是什么啊?
      

  12.   

    记住改完Action代码和Struts-config.xml文件后要重新部署一下工程,再运行,负责是不起作用的!
      

  13.   

    <form method="post" action="/myproject/send.do"> 改成
    <form method="post" action="myproject/send.do">
    重新部署。
      

  14.   

    <form method="post" action="/myproject/send.do"> 改成<form method="post" action="send.do">
      

  15.   


    25行是:System.out.println(messageForm.getDestId());
      

  16.   

    我觉得没有执行action,因为我在execute()里第一句加上打印语句System.out.pringln("ok");运行并没有打出来
      

  17.   

    路径都不对,怎么执行action呢?
    改成这样
    <form method="post" action="/send.do">
    还有你的页面没有使用html:form这种方式,那么后台MessageForm messageForm = (MessageForm) form;
    这样是得不到参数的,后台只能通过request.getParameter()来获得参数内容。
      

  18.   


    改成<form method="post" action="/send.do">也不行.
    不用struts的标签应该也可以吧,只要能找到action,就能从struts-config.xml中找到相应的form,就能得到参数内容!
      

  19.   

    在form中action调用错误
    你仔细看下:
    你的action path=/send
    你在web.xml中说了,调用action要使用*.do
    所以在你调用的时候直接使用<form method="post" action="/send"> 
      

  20.   

    如果你不是在form中使用,而是在别的地方
    比如说按钮的onclick 
    这时候你需要使用send.do?method=*
    这样来实现
    当你写完action时,你可以在地址拦中输入
    http://localhost/工程名/action.do开查看action的执行
    我用80端口,你把端口写上