首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

第一次做myeclipse6.5 + struts2遇到的有关问题

2012-08-25 
第一次做myeclipse6.5 + struts2遇到的问题? 由于myeclipse7.0没有集成struts2,只好自己建了个xml文件结果

第一次做myeclipse6.5 + struts2遇到的问题

? 由于myeclipse7.0没有集成struts2,只好自己建了个xml文件结果格式与标准的struts配置文件有区别,除了<xml></xml>并加上了<struts></struts>,?there is no action mapped for namespace and action name *?. unknown location 查了不少资料发现struts2的配置文件不是放在WEB-INF下了而是放在WEB-INF/class下,即创建时放在src下。可我的错误还有,结果错误为

2009-11-5 15:31:14 org.apache.catalina.core.AprLifecycleListener init
信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:/Program Files/Java/jre1.5.0/bin;C:/Program Files/MyEclipse 7.0M1/eclipse/dropins/myeclipse/eclipse/plugins/com.genuitec.eclipse.easie.tomcat.myeclipse_6.9.100.zmyeclipse69100200808/tomcat/bin
2009-11-5 15:31:14 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2009-11-5 15:31:14 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1613 ms
2009-11-5 15:31:15 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2009-11-5 15:31:15 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.13
2009-11-5 15:31:18 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Parsing configuration file [struts-default.xml]
2009-11-5 15:31:18 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Unable to locate configuration files of the name struts-plugin.xml, skipping
2009-11-5 15:31:18 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Parsing configuration file [struts-plugin.xml]
2009-11-5 15:31:18 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error
严重: Document is invalid: no grammar found. at (null:3:8)
org.xml.sax.SAXParseException: Document is invalid: no grammar found.
?at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
?at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
?at javax.xml.parsers.SAXParser.parse(Unknown Source)
?at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:113)
?at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:885)
?at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:144)
?at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:111)
?at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:164)
?at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
?at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360)
?at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403)
?at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)
?at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
?at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
?at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
?at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3693)
?at org.apache.catalina.core.StandardContext.start(StandardContext.java:4340)
?at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
?at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
?at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
?at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
?at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
?at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
?at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
?at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
?at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
?at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
?at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
?at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
?at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
?at org.apache.catalina.core.StandardService.start(StandardService.java:516)
?at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
?at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
?at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
?at java.lang.reflect.Method.invoke(Unknown Source)
?at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
?at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-11-5 15:31:18 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
Unable to load configuration. - file:/E:/workspaces/.metadata/.plugins/com.genuitec.eclipse.easie.tomcat.myeclipse/tomcat/webapps/struts2/WEB-INF/classes/struts.xml:3:8
?at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
?at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360)
?at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403)
?at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)
?at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
?at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
?at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
?at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3693)
?at org.apache.catalina.core.StandardContext.start(StandardContext.java:4340)
?at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
?at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
?at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
?at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
?at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
?at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
?at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
?at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
?at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
?at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
?at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
?at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
?at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
?at org.apache.catalina.core.StandardService.start(StandardService.java:516)
?at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
?at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
?at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
?at java.lang.reflect.Method.invoke(Unknown Source)
?at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
?at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: Unable to load file:/E:/workspaces/.metadata/.plugins/com.genuitec.eclipse.easie.tomcat.myeclipse/tomcat/webapps/struts2/WEB-INF/classes/struts.xml - file:/E:/workspaces/.metadata/.plugins/com.genuitec.eclipse.easie.tomcat.myeclipse/tomcat/webapps/struts2/WEB-INF/classes/struts.xml:3:8
?at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:890)
?at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:144)
?at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:111)
?at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:164)
?at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
?... 30 more
Caused by: Document is invalid: no grammar found. - file:/E:/workspaces/.metadata/.plugins/com.genuitec.eclipse.easie.tomcat.myeclipse/tomcat/webapps/struts2/WEB-INF/classes/struts.xml:3:8
?at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)
?at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:885)
?... 34 more
Caused by: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
?at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
?at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
?at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
?at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
?at javax.xml.parsers.SAXParser.parse(Unknown Source)
?at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:113)
?... 35 more
2009-11-5 15:31:18 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2009-11-5 15:31:18 org.apache.catalina.core.StandardContext start
严重: Context [/struts2] startup failed due to previous errors

?

我突然想起可能是struts.xml出问题了,找了一个struts1的配置文件一对比原来struts.xml 少了

?

<!DOCTYPE struts PUBLIC
??? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
??? "http://struts.apache.org/dtds/struts-2.0.dtd"> 加上一切都ok,

?

可在启动tomcat是出 Source not found for Class <T>.getDeclaredConstructors0(boolean) line: not available [native method]
原来窜出debug调试 工具 ,不是错误 要是程序不执行了,你可以按下F8。

?

总结一下Struts2.0的配置:

在WebRoot/WEB/INF/lib目录下添加Struts2所需jar包。(尽量不要图简单把所有的jar都拷贝进来,这样工程冗余笨重,还会遇到一些不必要的麻烦的)??

?? struts2-core-2.1.6.jar

?? xwork-2.1.2.jar

?? freemarker-2.3.13.jar

?? ognl-2.6.11.jar

?? commons-logging-1.0.4.jar

按照以前的教程上只添加以下五个jar包的时候会出现Unable to load configuration 的错误,这个时候还需要把commons-fileupload-1.2.1 ,commons-io.jar 也一起放进来,总共七个jar。

各个jar包的作用介绍

ognl-2.6.11.jar

OGNL它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。

commons-logging-1.0.4.jar:包含了日志功能,必须使用的jar包。

?

struts2-core-2.1.6.jar :Struts标签库定义文件

Struts的struts.xml配置说明

struts.xml放在src目录下

<?xml version="1.0" encoding="GBK" ?>

<!DOCTYPE struts PUBLIC

??? "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

??? "http://struts.apache.org/dtds/struts-2.0.dtd">??

<struts>

<!-- package的name可以随便起,也可以用包名 -->

??? <package name="struts2" extends="struts-default">

?????? <action name="login" class="com.demo.LoginAction">

?????????? <result name="success">/welcome.jsp</result>

?????????? <result name="error">/error.jsp</result>??????????

<!—有些类似于Struts1中的<forward name="loginsuccess" path="/index.jsp"/>?? -->?????? </action>???

??? </package>?

</struts>

?

?

Struts的web.xml配置说明

?

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

??? 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_2_5.xsd">

? <filter>

<filter-name>struts2</filter-name>???????? <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

?</filter>

<filter-mapping>

<!-- 定义Struts2的核心过滤器 -->

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

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

<!—-客户端发送过来的所有请求都由此过滤器接收处理,也可以更换为/.action表示处理所有以.action结尾的请求,类似Struts1中的.do -->

??? </filter-mapping>

? <welcome-file-list>

??? <welcome-file>login.jsp</welcome-file>

? </welcome-file-list>

</web-app>

?

?

页面的配置

login.jsp

<form action="login.action">

用户名:<input type="text" name="username" /></td>

密??码:<input type="text" name="password" /></td>

<input type="submit" value="登陆"/>

<input type="reset" value="重填"/>

</form>

页面代码解析:

页面的form表单提交请求后被filter拦截,根据login.action中的login确定应该由struts-config.xml中name为login的Action处理,转交给login对应的com.oristand.demo.LoginAction。

?

LoginAction中代码:

?

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import org.apache.struts2.ServletActionContext;

public class LoginAction implements Action{

??? private String username;

??? private String password;

??? public String getUsername() {

?????? return username;

??? }

??? public void setUsername(String username) {

?????? this.username = username;

??? }

??? public String getPassword() {

?????? return password;? }

??? public void setPassword(String password) {

?????? this.password = password;

??? }

public String execute(){

??? if(getUsername().equals("scott") && tPassword().equals("tiger")){????????

//将拿到的username存放到session作用域中

ActionContext.getContext().getSession().put("user", getUsername());

?????????? return SUCCESS;

?????? }else{

?????????? return ERROR;

?????? }

??? }

}

这个类中因为继承了Action类,Action中有属性:

public static final String SUCCESS=”success”;

所以可以直接使用return SUCCESS。继承Action后简化了execute方法的返回值,也使达到了标准化。但是如果不继承Action的话也可以直接return ”success”;

?

? 根据对应login请求的result结果,我们还需要建立welcome.jsp和error.jsp这两个页面。

返回SUCCESS时转去welcome.jsp页面,页面用${sessionScope.user}拿到session作用域中的用户名,显示出来。

也可以用<%=session.getParameter("user") %>拿到。

通过设置Action属性值,?当Action设置了某个属性值后,?struts2将这些属性值全部封装在一个叫做struts.valueStack的请求属性里。详见页面迭代显示部分。? ??

另外,Action类中的成员属性不一定用于封装用户的请求参数,也可能是封装了Action需要传入下一个JSP页面的信息。

?

做到这里已经可以完成一个页面的简单登陆了

热点排行