读书人

【】struts例子 找了好几天就是找不到

发布时间: 2012-01-03 22:16:06 作者: rapoo

【求助】struts例子 找了好几天就是找不到错误
login.jsp

<%@ page contentType= "text/html;charset=GBK "%>

<%@ taglib uri= "/WEB-INF/tlds/struts-html.tld " prefix= "html "%>
<html:html>
<head> <title> login </title> </head>
<body>
<html:form action= "/login.do " method= "post ">
<table>
<tr>
<td> 用户名: </td> <td> <html:text property= "userName "/> </td>
</tr>
<tr>
<td> 密 码: </td> <td> <html:password property= "userPwd "/> </td>
</tr>
<tr>
<td> <html:submit value= "登 录 "/> </td> <td> <html:reset value= "重 置 "/> </td>
</tr>
</table>
</html:form>
</body>
</html:html>


web.xml
<?xml version= "1.0 " ?>
<web-app xmlns= "http://java.sun.com/xml/ns/j2ee " xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation= "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " version= "2.4 ">

<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>
<load-on-startup> 1 </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name> action </servlet-name>
<url-pattern> *.do </url-pattern>
</servlet-mapping>
</web-app>

struts-config.xml
<?xml version= "1.0 " ?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN " "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd ">
<struts-config>
<form-beans>
<form-bean name= "loginForm " type= "org.huoshan.struts.test1.form.LoginForm " />
</form-beans>
<action-mappings>
<action name= "loginForm " path= "/login.do " type= "org.huoshan.struts.test1.action.LoginAction ">
<forward name= "success " path= "/success.jsp " />


<forward name= "failure " path= "/failure.jsp " />
</action>
</action-mappings>
</struts-config>


LoginAction.java

package org.huoshan.struts.test1.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 org.huoshan.struts.test1.form.LoginForm;

public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
LoginForm loginForm=(LoginForm)form;
String userName=loginForm.getUserName();
String userPwd=loginForm.getUserPwd();
if( "huoshan ".equals(userName) && "121212 ".equals(userPwd))
{
return mapping.findForward( "success ");
}else
{
return mapping.findForward( "failure ");
}
}


}

LoginForm.java

package org.huoshan.struts.test1.form;

import org.apache.struts.action.ActionForm;

public class LoginForm extends ActionForm {
/**
* define id;
*/
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}




}

文件结构是这样的
根目录 WebRoot
这里不能发图片
大家可以到这里看看http://bbs.dlu.edu.cn/wForum/bbscon.php?bid=59&id=8023&ap=212 我画的目录结构


将非常非常感谢大家

访问login.jsp时出现下面错误
org.apache.jasper.JasperException: Cannot find ActionMappings or ActionFormBeans collection



[解决办法]
web.xml里面没有对标签定义
[解决办法]
你没有INPUT,你应该把INPUT= "/LOGIN.JSP " 在ACTION中设置
[解决办法]
<action name= "loginForm " path= "/login.do " type= "org.huoshan.struts.test1.action.LoginAction ">
把path= "/login.do "
改成这样path= "/login "
你在web.xml里面已经定义了*.do由ACTIONSERVLET处理吧?


Cannot find ActionMappings or ActionFormBeans collection这种错误还有可能是 包不全或是版本不对(struts的) 也可能是CLASS不存在

建议JSP <html:form action= "/login.do " method= "post ">
action要不写成login.do要不就写成/your webapp name/login.do
[解决办法]
<action name= "loginForm " path= "/login.do " type= "org.huoshan.struts.test1.action.LoginAction "> 加个 propety= "loginForm "试试
[解决办法]
流浪的猴子) 说的可能就是问题的所在 struts-config中不需要再加。do的
[解决办法]
/login.do后面的.do不要,
[解决办法]
<action name= "loginForm " path= "/login.do "

<action name= "loginForm " path= "/login "
[解决办法]
<%@ taglib uri= "/WEB-INF/tlds/struts-html.tld " prefix= "html "%>
是指的在/WEB-INF/tlds/这里去找tld文件,这个路径是个逻辑路径,而这个路径没有在web.xml中定义。
有两种解决方法
1、在web.xml中添加
<taglib>
<taglib-uri> /WEB-INF/tlds/struts-html.tld </taglib-uri>
<taglib-location> /WEB-INF/tlds/struts-html.tld </taglib-location>
</taglib>
将逻辑路径映射为物理路径,虽然写的一样,但意思不同。
2、使用tld文件中的uri
<taglib>
<tlib-version> 1.3 </tlib-version>
<jsp-version> 1.2 </jsp-version>
<short-name> logic </short-name>
<uri> http://struts.apache.org/tags-logic </uri>
<description>
......
</taglib>
因为struts的包中都包含tld文件,即tld文件已经在classpath中了,因此只要引用的uri正确的就没问题。不过需要注意版本,不同版本的uri是不一样的。如struts1.1就是http://jakarta.apache.org/struts/tags-html。

[解决办法]
配置没什么问题,你的配置文件是不是myeclipse自动生成的?

读书人网 >Java Web开发

热点推荐