struts2.0.1的问题
由于本人初学struts,首先接触的是struts2.0.1,再网上找到《为Struts 2.0做好准备》
这篇文章来学习。感觉这篇文章不错,但是有些遇到的问题没有写出来。我把我
现在遇到的问题解决方法发出来,以求大家共同学习,探讨。
此代码是照搬那篇文章的代码。我的运行环境是jdk1.5,tomcat5.5.17,struts2.0.1
SayHello.jsp代码如下:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Say Hello</title>
</head>
<body>
<h3>Say "Hello" to: </h3>
<s:form action="HelloWorld">
Name: <s:textfield name="name" />
<s:submit />
</s:form>
</body>
</html>
这段代码不能运行:
tomcat错误提示如下:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:248)
root cause
java.lang.NullPointerException
org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:703)
org.apache.struts2.components.UIBean.end(UIBean.java:450)
org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:36)
org.apache.jsp.SayHello_jsp._jspx_meth_s_textfield_0(SayHello_jsp.java:139)
org.apache.jsp.SayHello_jsp._jspx_meth_s_form_0(SayHello_jsp.java:105)
org.apache.jsp.SayHello_jsp._jspService(SayHello_jsp.java:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:248)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.17
而直接在浏览器中直接输入同目录下的HelloWorld却能运行。
HelloWord.jsp代码如下:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Hello</title>
</head>
<body>
<h3><s:property value="name" /></h3>
</body>
</html>
这种情况下,我把WEB-INF/lib的jar包删掉,把struts2-blank-2.0.1.war里的jar包复制到这个WEB-INF/lib下,
重新启动tomcat,结果哪个SayHello.jsp文件能够运行。这个方法已经有人在网上说过,好象有些人没太注意。
大多人偏重于代码与配置上,我在这里再重复的告诉大家,这个也可能和struts2的不成熟有关吧,大多人现在
还在研究struts1.x。呵呵,jar包多了,也不见得是好事情啊,不知道这个是什么原因,我认为是加载jar包的
时候,加载错了jar包。
还有我在提一点,就是编译java文件的问题,把struts2-all-2.0.1.jar和xwork-2.0-beta-1.jar文件加到
环境变量里,来方便编译。这个问题是最基本的java的classpath问题,不懂的要再去学习一下哦。
(注意:struts2-all-2.0.1.jar和xwork-2.0-beta-1.jar不要放到tomcat的common/lib目录下,否则系统还会
产生错误,自己可以随便建个目录,加到系统环境变量,Everything is OK!)