我是struts初学者,做了个登录,可怎么也运行不了。以下是目录结构:
TryStruts
| src
| app
| RegisterForm.java
| RegisterAction.java
| TryStrus
| WEB-INF
|success.html
|failure.html
|struts-config.xml
|struts-html.tld
|web.xml
| Register.jsp开发工具:MyEclipse, Tomcat5.5, jdk6.0
Register.jsp源代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib uri="WEB-INF/struts-html.tld" prefix="html"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:form action="/Register.do">
rUsername<html:text property="username"/><br>
enter password<html:password property="password1"/><br>
re-enter password<html:password property="password1"/><br>
<html:submit value="Register"/>
</html:form>
Struts-config.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans>
<form-bean name="registerForm" type="app.RegisterForm"/>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/Register" type="app.RegisterForm" name="registerForm">
<forward name="success" path="/success.html"/>
<forward name="failure" path="/failure.html"/>
</action>
</action-mappings>
<message-resources parameter="ly.ApplicationResources" />
</struts-config>
RegisterAction.java代码如下:
package app;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.io.*;public class RegisterAction extends Action {
public ActionForward perform (ActionMapping mapping,ActionForm form,HttpServlet request,HttpServlet response) {
RegisterForm rf = (RegisterForm)form;
String username = rf.getUsername();
String password1 = rf.getPassword1();
String password2 = rf.getPassword2();
if(password1.equals(password2)) {
return mapping.findForward("success");
}
return mapping.findForward("failure");
}
}
RegisterForm.java代码如下:
package app;
import org.apache.struts.action.*;
public class RegisterForm extends ActionForm {
String username;
String password1;
String password2;
public RegisterForm (String username,String password1,String password2) {
this.username = username;
this.password1 = password1;
this.password2 = password2;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword1(String password1) {
this.password1 = password1;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public String getUsername() {
return this.username;
}
public String getPassword1() {
return this.password1;
}
public String getPassword2() {
return this.password2;
}
}
其中web.xml中部分代码:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>Register.jsp</welcome-file>
</welcome-file-list>
我在浏览器中输入: http://localhost:8080/TryStruts/试了好几遍,出错如下:
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: Exception in JSP: /Register.jsp:107:
8: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
9:
10: <html:form action="/Register.do">
11: rUsername<html:text property="username"/><br>
12: enter password<html:password property="password1"/><br>
13: re-enter password<html:password property="password1"/><br>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
javax.servlet.ServletException: Cannot retrieve mapping for action /Register
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.Register_jsp._jspService(Register_jsp.java:88)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Register
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:810)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
org.apache.jsp.Register_jsp._jspx_meth_html_005fform_005f0(Register_jsp.java:104)
org.apache.jsp.Register_jsp._jspService(Register_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.
________________________________________
Apache Tomcat/5.5.23
TryStruts
| src
| app
| RegisterForm.java
| RegisterAction.java
| TryStrus
| WEB-INF
|success.html
|failure.html
|struts-config.xml
|struts-html.tld
|web.xml
| Register.jsp开发工具:MyEclipse, Tomcat5.5, jdk6.0
Register.jsp源代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib uri="WEB-INF/struts-html.tld" prefix="html"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html:form action="/Register.do">
rUsername<html:text property="username"/><br>
enter password<html:password property="password1"/><br>
re-enter password<html:password property="password1"/><br>
<html:submit value="Register"/>
</html:form>
Struts-config.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans>
<form-bean name="registerForm" type="app.RegisterForm"/>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/Register" type="app.RegisterForm" name="registerForm">
<forward name="success" path="/success.html"/>
<forward name="failure" path="/failure.html"/>
</action>
</action-mappings>
<message-resources parameter="ly.ApplicationResources" />
</struts-config>
RegisterAction.java代码如下:
package app;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import java.io.*;public class RegisterAction extends Action {
public ActionForward perform (ActionMapping mapping,ActionForm form,HttpServlet request,HttpServlet response) {
RegisterForm rf = (RegisterForm)form;
String username = rf.getUsername();
String password1 = rf.getPassword1();
String password2 = rf.getPassword2();
if(password1.equals(password2)) {
return mapping.findForward("success");
}
return mapping.findForward("failure");
}
}
RegisterForm.java代码如下:
package app;
import org.apache.struts.action.*;
public class RegisterForm extends ActionForm {
String username;
String password1;
String password2;
public RegisterForm (String username,String password1,String password2) {
this.username = username;
this.password1 = password1;
this.password2 = password2;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword1(String password1) {
this.password1 = password1;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public String getUsername() {
return this.username;
}
public String getPassword1() {
return this.password1;
}
public String getPassword2() {
return this.password2;
}
}
其中web.xml中部分代码:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>Register.jsp</welcome-file>
</welcome-file-list>
我在浏览器中输入: http://localhost:8080/TryStruts/试了好几遍,出错如下:
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: Exception in JSP: /Register.jsp:107:
8: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
9:
10: <html:form action="/Register.do">
11: rUsername<html:text property="username"/><br>
12: enter password<html:password property="password1"/><br>
13: re-enter password<html:password property="password1"/><br>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
javax.servlet.ServletException: Cannot retrieve mapping for action /Register
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.Register_jsp._jspService(Register_jsp.java:88)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Register
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:810)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
org.apache.jsp.Register_jsp._jspx_meth_html_005fform_005f0(Register_jsp.java:104)
org.apache.jsp.Register_jsp._jspService(Register_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.
________________________________________
Apache Tomcat/5.5.23
解决方案 »
- struts2.0中 如何动态控制<s:textfield>readonly 属性
- Servlet资料
- session和验证码不同步的问题,高手指点下,
- 格式化数据 急
- session里保存的对象 的某个属性已经改变 如何在不退出访问的情况下 ,重新取出session里保存的对象值
- 简单的路径问题
- 为什么JSP文件报错但是还是可以执行啊?
- 求救:JSP中的out.println的错误
- 将JSP与SQL2000的连接写在javabean中该如何写呢?
- 请教 java ajax get数据解析,请问解析了放在页面上
- 用poi如何生成不规则的excel表?
- jsp从客户端导入文本文件至sqlserver数据库
提示告诉你了 acation=""里的do去掉 因为你在xml里的PATH属性不一样 我感觉是这样 好久没用struts 不过错误提示告诉你很详细了
<action path="/Register" type="app.RegisterForm" name="registerForm">
表示配置了一个action的映射路径为/Register,而你在JSP里写的路径是/Register.do,这样不匹配所以出错了。
你写成 type="app.RegisterForm"
这句有问题, type指的是action类的全名,不是form的全名,你好好看看例子吧
tomcat报错如下:
严重: Parsing error processing resource path
java.net.UnknownHostException: struts.apache.org
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:382)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:509)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:231)
at sun.net.www.http.HttpClient.New(HttpClient.java:304)
at sun.net.www.http.HttpClient.New(HttpClient.java:316)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:813)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:765)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:690)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:934)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:973)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:905)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:872)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:282)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(XMLDocumentScannerImpl.java:1021)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at org.apache.commons.digester.Digester.parse(Digester.java:1548)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:1006)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:955)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:470)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
re-enter password<html:password property="password1"/><br/>
这个地方是不是设计的有问题?
http://localhost:8080/呢呀,是这样的吧?是Deploy的原因吗?Deploy到底有什么用呢