SSH配置详细步骤及异常处理

Technorati 标签: SSH, hibernate, struts, spring

 

SSH配置详细步骤及异常处理
该文章详细介绍了SSH的配置步骤与工程代码。
配置步骤见:http://blog.csdn.net/sipsir/archive/2009/10/23/4721526.aspx
代码下载:http://sipsir.download.csdn.net/

本文word格式:http://download.csdn.net/source/1764763

 

1 环境介绍

Jdk:1.5s

服务器:tomcat5.5

开发工具:myeclipse 6.5 ga

数据库工具:oracle 10g(确定有class12.jar或带有oracle驱动的jar包)

开发技术:Spring2.0,struts1.3,hibernate3.1,jsp

好了,进行SSH的开发。

 

 

2 新建web project

新建web项目(使用j2ee 5.0),项目名称为guestbook2,如图:

SSH配置详细步骤及异常处理_第1张图片

(图一)

第二步:为项目创建一个文件夹lib(用来将来存放相应的jar包,在添加相应的SSH支持后,要把lib里面的jar通过configure build-path—add jar的方式将其加入),

--可以采用系统默认的lib库位置,目录为WebRoot/WEB-INF/lib(Add by Michael)

如图:

SSH配置详细步骤及异常处理_第2张图片

(图二)

3 配置MyEclipse数据库(Add by Michael)

打开Hibernate视图

SSH配置详细步骤及异常处理_第3张图片

new一个

SSH配置详细步骤及异常处理_第4张图片

配置数据库,其中要手动指定Class12.jar的目录,如下图

SSH配置详细步骤及异常处理_第5张图片

4 添加hibernate支持

第1步:为项目添加hibernate 支持,如图:

SSH配置详细步骤及异常处理_第6张图片

(图三)

如下图,我们添加hibernate3.1的核心库而且采用:copy checked library jars to project folder and add to build-path 的方式把包添加至我们刚刚新建的lib文件夹处。完成后,点击”next”.

hibe

SSH配置详细步骤及异常处理_第7张图片

接着,他会询问是否创建hibernate的配置文件:hibernate.cfg.xml,我们不需要发动,直接点”next”。

SSH配置详细步骤及异常处理_第8张图片

我们需要配置项目中要应用的数据库的配置信息:

SSH配置详细步骤及异常处理_第9张图片

在上图中,我使用了名为DB Driver 为Linkoracle10g的连接方式(可使用myeclipse的myeclipse database explorer方式来创建与oracle10g的连接),相应地,myeclipse会使项目具有与oracle数据库连接的能力了。

接着点”next”,会看见如下图:

SSH配置详细步骤及异常处理_第10张图片

默认是挑选了“create SessionFactory class”的,在这里,它想为我们创建一个sessionfactory的类,但我们不创建sessionfactory,因为我将来使用spring来完成这步操作,使用spring ,可以帮助我们可以生成一个能获得hibernate session对象的一个类。

点击”finish”完成的hibernate的支持。

5 添加Spring支持

第1步:为项目添加Spring 支持,如图:

SSH配置详细步骤及异常处理_第11张图片

在这里,我使用spring2.0的支持,把相应的四个选项选中:

clip_image024

第四个为:

clip_image025

--选择了spring2.0,如何选择sping2.5的jar?实际情况是我没有选择spring2.5也能完成这个测试(Add by Michael)

而且,我们采用:copy checked library jars to project folder and add to build-path 的方式把包添加至我们刚刚新建的lib文件夹处。完成后,如图:

SSH配置详细步骤及异常处理_第12张图片

完成后,点击”next”.会看到如下图:(Myeclipse会为我们创建spring的配置文件,我们确定创建)

SSH配置详细步骤及异常处理_第13张图片

点击”next”.进入下一步。这时会看到,如图:

SSH配置详细步骤及异常处理_第14张图片

在上图中,他会创建一个能获得hibernate session 对象的一个sessionFactory 类型的对象,他被设置在了applicationContext.xml文件中。

点击“finish”,完成Spring 的支持了。

备注:打开applicationContext.xml文件,源码如下:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

value="classpath:hibernate.cfg.xml">

在这里,我们发现设置了一个id为sessionFactory类型的一个对象,他的类型是 org.springframework.orm.hibernate3.LocalSessionFactoryBean,当中还有属性configLocation,value="classpath:hibernate.cfg.xml,这些配置信息呢。实际上可以这样理解:

设定了一个id为sessionFactory 类型的对象,它的类型是:org.springframework.orm.hibernate3.LocalSessionFactoryBean的,通过这个对象就能获取hibernate 的session 对象,进行完成对数据的添加、删除、修改的操作。也就是说这个对象是spring 帮我们提供的一个支持.

6 开发持久层的这些类和接口

6.1 oracle表SQL

增加了hibernate ,spring的支持后,我们就可以开发持久层的这些类和接口了。首先,我们的项目要用到了guestbook、admin两个表,所以要使用oracle来创建这两个表,表的创建的sql提供给大家,如下所示:

create table ADMIN

(

ID NUMBER not null,

USERNAME VARCHAR2(20),

PASSWORD VARCHAR2(20)

);

alter table ADMIN add constraint ADMIN_PK primary key (ID);

create table GUESTBOOK

(

ID NUMBER not null,

NAME VARCHAR2(40),

EMAIL VARCHAR2(60),

URL VARCHAR2(60),

TITLE VARCHAR2(200),

CONTENT VARCHAR2(2000),

TIME VARCHAR2(40)

);

alter table GUESTBOOK add constraint GBOOK_PK primary key (ID);

insert into ADMIN (ID, USERNAME, PASSWORD)

values (1, 'liuwei', '123456');

commit;

insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)

values (100026, '刘伟', '[email protected]', 'http://www.v512.com', '欢迎大家观看我的视频', '感谢大家对我们的支持,请持续关注我们的网站。更多内容,更多视频,尽在www.v512.com。', '2007-16-14 02:12:51');

insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)

values (1000072, '开发工具与软件', null, 'http://news.sina.com.cn', '我们爱大家', '开发工具与软件开发工具与软件开发工具与软件开发工具与软件,我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家。', '2007-42-20 01:12:17');

insert into GUESTBOOK (ID, NAME, EMAIL, URL, TITLE, CONTENT, TIME)

values (1000074, '开发工具与软件', '[email protected]', 'http://news.sina.com.cn', '我们爱大家', '开发工具与软件开发工具与软件开发工具与软件开发工具与软件,我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家我们爱大家。', '2007-50-20 02:12:52');

commit;

而且还应该在oracle10g中创建名为gb_seq的序列,sql语句为:(有问题,在哪里创建sequence的?)

我只用了一个创建sequence的SQL,如下:

create sequence GB_SEQ

minvalue 1

maxvalue 99999999

start with 1

increment by 1

cache 20;

以下是原作者关于sequence的sql,我都没有使用因为不知道在哪里create。

-- Alter sequence

alter sequence gb_seq

nominvalue

nomaxvalue

nocache;

-- Modify the last number

alter sequence gb_seq increment by -20 nocache;

select gb_seq.nextval from dual;

alter sequence gb_seq increment by 1 nocache;

declare

LastValue integer;

begin

loop

select gb_seq.currval into LastValue from dual;

exit when LastValue >= 100000 - 1;

select gb_seq.nextval into LastValue from dual;

end loop;

end;

/

alter sequence gb_seq increment by 1 nocache;

(备注:在创建数据库的表时,我是使用了PLSQLDeveloper工具来创建的,这样更方便快捷些,要使用这个工具,请自行下载。)

好了,接着做下去。

6.2 生成Admin,guestbook表model

首先,我们打开myeclipse database explorer 视图,在这里,我们进行逆向工程的操作,如图:

SSH配置详细步骤及异常处理_第15张图片

这样就打开了逆向工程的操作的界面了。

接着,我们会看到如下的操作界面,如图:

SSH配置详细步骤及异常处理_第16张图片

使用如上图的设置,com.v512.guestbook.model存放的是映射文件和相应的实体类(POJO),再点击”next”.

这时,会出现操作界面,如下图:

SSH配置详细步骤及异常处理_第17张图片

在这一步,他设置了主键的生成方式,我使用了native,其它不用改变。最后点击”finish”.

同理,添加guestbook表。(add by Michael)

再查看目录结构,会显示如下的目录结构,如图:

SSH配置详细步骤及异常处理_第18张图片

里面针对两个表生成了相应的.hbm.xml的映射文件和相应的两个类。查看hibernate.cfg.xml,其源码如下:

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

scott

jdbc:oracle:thin:@localhost:1521:ora10g

org.hibernate.dialect.Oracle9Dialect

Linkoracle10g

tiger

oracle.jdbc.driver.OracleDriver

执行上面的操作后,接着往下做。呵呵。

6.3 数据库接口

6.3.1 GuestbookDao接口

我们为项目新建一个包,包名称为:com.v512.guestbook.dao,它用来存放对底层数据库进行的操作的一系列接口。接着在包中新建一个接口,名为:GuestbookDao,如图:

SSH配置详细步骤及异常处理_第19张图片

在接口中,我们定义了几个方法,如下:

package com.v512.guestbook.dao;

import java.util.*;

import com.v512.guestbook.model.Guestbook;

//DAO指的是能对底层数据训进行怎样的操作,通常是增删改查的操作

public interface GuestbookDao {

public void save(Guestbook g);

public void delete(Long id);

public List getGuestbooks();

public Guestbook getGuestbook(Long id);

}

6.3.2 GuestbookDao接口的实现类GuestbookDaoHibernate

紧接着我们创建一个包,包名为:com.v512.guestbook.dao.hibernate,这个包存放的是实现了上面定义的dao接口的类,而这些类当中都是通过使用Hibernate 的技术来执行相应的操作的。

在该包中,我创建了一个类,类的名称为:GuestbookDaoHibernate,它要实现上面定义的GuestbookDao接口,并且继承于HibernateDaoSupport.类的完整的源码是:

package com.v512.guestbook.dao.hibernate;

//这个包存放的实现了dao接口的一些类,而这些类都是通过Hibernate的技术来执行相应的操作

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.v512.guestbook.dao.GuestbookDao;

import com.v512.guestbook.model.Guestbook;

public class GuestbookDaoHibernate extends HibernateDaoSupport implements GuestbookDao {

public void delete(Long id) {

this.getHibernateTemplate().delete(getGuestbook(id));

}

public Guestbook getGuestbook(Long id) {

return (Guestbook)getHibernateTemplate().get(com.v512.guestbook.model.Guestbook.class, id);

}

public List getGuestbooks() {

return getHibernateTemplate().find("from Guestbook order by id desc");

}

public void save(Guestbook g) {

getHibernateTemplate().saveOrUpdate(g);

}

}

6.3.3 GuestbookManager接口

在上面操作完成后,我们开始编写服务层的接口和相应的接口实现类(可以理解为spring层)。

我们新建一个包,包的名称为com.v512.guestbook.service,接着我们在该包中定义了一个接口。完整的源如下:

package com.v512.guestbook.service;

import java.util.List;

import com.v512.guestbook.model.Guestbook;

public interface GuestbookManager {

public void save(Guestbook g);

public void delete(String id);

public Guestbook getGuestbook(String id);

public List getGuestbooks();

}

6.3.4 GuestbookManager接口的实现类GuestbookManagerImpl

到了这里,我们新建一个包,包名称为:com.v512.guestbook.service.impl,在包中,我定义了上面GuestbookManager的实现类,完整的源码如下:

package com.v512.guestbook.service.impl;

import java.util.List;

import com.v512.guestbook.dao.GuestbookDao;

import com.v512.guestbook.model.Guestbook;

import com.v512.guestbook.service.GuestbookManager;

public class GuestbookManagerImpl implements GuestbookManager {

private GuestbookDao dao;

public void setGuestbookDao(GuestbookDao dao) {

this.dao = dao;

}

public void delete(String id) {

dao.delete(new Long(id));

}

public Guestbook getGuestbook(String id) {

return dao.getGuestbook(new Long(id));

}

public List getGuestbooks() {

return dao.getGuestbooks();

}

public void save(Guestbook g) {

dao.save(g);

}

}

6.3.5 AdminDao接口

执行类似的操作,我们在com.v512.guestbook.dao中定义AdminDao的接口,代码如下:

package com.v512.guestbook.dao;

public interface AdminDao {

public boolean validate(String username,String password);

}

6.3.6 AdminDao接口的实现类AdminDaoHibernate

再创建AdminDao的实现类,类名称为AdminDaoHibernate,把它放置在com.v512.guestbook.dao.hibernate包中,完整的源码是:

package com.v512.guestbook.dao.hibernate;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.v512.guestbook.dao.AdminDao;

public class AdminDaoHibernate extends HibernateDaoSupport implements AdminDao {

public boolean validate(String username, String password) {

String param[]={username,password};

List list =getHibernateTemplate().find("from Admin where username=? and password=?",param);

return list.size()>0;

}

}

在上面操作完成后,我们开始编写服务层的接口和相应的接口实现类(可以理解为spring层)。

6.3.7 AdminManager接口

我们新建一个包,包的名称为com.v512.guestbook.service,接着我们在该包中定义了一个接口。完整的源如下:

package com.v512.guestbook.service;

public interface AdminManager{

public boolean validate(String username,String password);

}

6.3.8 AdminManager接口的实现类

到了这里,我们新建一个包,包名称为:com.v512.guestbook.service.impl,在包中,我定义了上面AdminManager的实现类,完整的源码如下:

package com.v512.guestbook.service.impl;

import com.v512.guestbook.dao.AdminDao;

import com.v512.guestbook.service.AdminManager;

public class AdminManagerImpl implements AdminManager {

private AdminDao dao;

public void setAdminDao(AdminDao dao){

this.dao=dao;

}

public boolean validate(String username, String password) {

return dao.validate(username, password);

}

}

6.4 在spring的配置文件配置数据源,舍弃hibernate.cfg.xml

紧接着,我们在执行完上面的操作后,我们去修改项目当中的配置文件。在applicationContext.xml中,我想把Hibernate 的配置信息也设置到applicationContext.xml 文件中去,这样的话,hibernate.cfg.xml文件就不需要了.

首先,打开applicationContext.xml,右键,我在当中创建一个dataSource的bean,如图:

SSH配置详细步骤及异常处理_第20张图片

接着会弹出这样一个操作界面,如图:

SSH配置详细步骤及异常处理_第21张图片

设置后,applicationContext.xml中便新增了名为dataSourece的bean。如图:

SSH配置详细步骤及异常处理_第22张图片

注意:这里会提示错误,因为project里没有commons-dbcp.jar把导致。到D:/MyEclipse 6.5/myeclipse/eclipse/plugins 的目录下搜索, copy到project lib目录下,再加到project的build path(add by Michael)

在增加了DataSource bean的设置后,再增加两个bean的设置,右键,在“Spring”---"New Bean" ,我们添加了guestbookDao和guestbookManager 两个bean,如图,

SSH配置详细步骤及异常处理_第23张图片

在上图中,要注意三点:

1)Bean id 指的是bean 的id;

2)Bean class :选择

clip_image051的”Browse”按钮,选择GuestbookDaoHibernate.

3)最重要的就是:Properties

SSH配置详细步骤及异常处理_第24张图片

在上图,表示guestbookDao要依赖注射一个sessionFactory的一个对象,添加玩后,如下图

clip_image055

(guestbookManager, adminDao, adminManager的添加与上类同,不再赘述。同理他也依赖于guestbookManager 依赖于(ref) guestbookDao;

adminDao 依赖于(ref) sessionFactory;

adminManager 依赖于(ref) adminDao;)。(add by Michael)

现在呢,我们想不再使用Hibernat.cfg.xml文件 ,这里,要修改一下这个applicationContext.xml文件。完整的applicationContext.xml代码如下:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

com/v512/guestbook/model/Admin.hbm.xml

com/v512/guestbook/model/Guestbook.hbm.xml

org.hibernate.dialect.Oracle9Dialect

class="org.apache.commons.dbcp.BasicDataSource">

value="oracle.jdbc.driver.OracleDriver">

value="jdbc:oracle:thin:@localhost:1521:ora10g">

class="com.v512.guestbook.dao.hibernate.GuestbookDaoHibernate"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

class="com.v512.guestbook.service.impl.GuestbookManagerImpl"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

class="com.v512.guestbook.dao.hibernate.AdminDaoHibernate"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

class="com.v512.guestbook.service.impl.AdminManagerImpl"

abstract="false" lazy-init="default" autowire="default"

dependency-check="default">

好了,我们现在应用的持久和服务层的实现类都编写好了,就到了web的开发了。

现在做2件事:(add by Michael)

1. src下的hibernate.cfg.xml要删除。

2. 把src的applicationContext.xml移到WebRoot/WEB-INF下,否则启动服务器时会报错找不到配置文件。

7 添加struts支持

为项目添加struts1.3的支持。包名为com.v512.guestbook.web,如图:

SSH配置详细步骤及异常处理_第25张图片

这时,项目结构发生了改变,如下图:

SSH配置详细步骤及异常处理_第26张图片

最后,我们修改配置文件,把struts和spring 结合起来。

修改配置文件web.xml文件,如下:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

/*

contextConfigLocation

/WEB-INF/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

action

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

debug

3

detail

3

0

action

*.do

input.jsp

紧接着,struts-config.xml中我们要创建相应的Form,action,jsp页面,创建方式如图:

SSH配置详细步骤及异常处理_第27张图片

在此之后,详细的请参见所提供的源码的struts-config.xml文件,通过这个方式,就创建了相应的action,form,在完成这些操作后,SSH的配置就完成了。

(注:读者如果觉得看不懂的话,可以依照着源码重新做一次,文档写的不是很详细)

最后部署项目至tomcat容器下,就能够通过这个地址访问了:

http://localhost:8080/guestbook2/ .

原作者说到此结束,如果对于一个新手来说要把这个project运行起来可以还会有不少的困难。

8 运行project

8.1 copy相关文件到project

JSP文件:admin.jsp,display.jsp,edit.jsp,index.jsp,input.jsp,login.jsp,loginfail.jsp到WebRoot。

目录:css,images到WebRoot。

配置文件: action-servlet.xml,spring.tld,spring-form.tld,validations.xml到WebRoot/WEB-INF。

8.2 配置tomcat的log4j

目的是跟踪可能出现的异常,实践证明log能够快速的发现问题。另外很多新手的确也出现很多的问题,也包括我。

1. commons-logging-1.0.4.jar,log4j-1.2.11.jar copy到project的lib下。

2. 在Project的WebRoot下建目录logs。

clip_image063

3. 在src下新建log4j.properties文件,内容如下

log4j.rootLogger=info,Console,R

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH/:mm/:ss} %5p %c{1}/:%L - %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R.File=D://Tomcat5.5// logs//tomcat.txt

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH/:mm/:ss} %5p %c{1}(%L)/:? %m%n

log4j.logger.org.apache=info, R

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R

log4j.logger.org.apache.catalina.core=info, R

log4j.logger.org.apache.catalina.session=info, R

log4j.appender.R.File要修改成你的log目录。

8.3 配置tomcat

Windows->preference

SSH配置详细步骤及异常处理_第28张图片

8.4 Deploy project

点击Deploy按钮,如下图

clip_image067

SSH配置详细步骤及异常处理_第29张图片

SSH配置详细步骤及异常处理_第30张图片

SSH配置详细步骤及异常处理_第31张图片

8.5 运行服务器tomcat

SSH配置详细步骤及异常处理_第32张图片

在你的IE里输入http://localhost:8080/guestbook2/。

此时如果你认为已经结束就太乐观了,大问题在后头呢。我第一次运行时被Error listenerStart搞的晕头。

9 服务器异常处理

9.1 服务器启动异常1

现象:

09-10-23 21:07:10 ERROR [/guestbook]:667 - action: null

java.lang.ClassNotFoundException: org.springframework.web.struts.ContextLoaderPlugIn

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)

解决:

到D:/MyEclipse 6.5/myeclipse搜索spring-web.jar,加到project的lib下.重新部署Redeploy,再启动。

又遇到了下面的异常。

9.2 服务器启动异常2

现象:

2009.10.23 21:22:47 ERROR [/guestbook2](3678):? Error configuring application listener of class com.sun.faces.config.ConfigureListener

java.lang.NoClassDefFoundError: org/apache/commons/digester/RuleSet

at java.lang.Class.getDeclaredConstructors0(Native Method)

解决:

到D:/MyEclipse 6.5/myeclipse搜索commons-pool.jar,jsf-impl,加到project的lib下.重新部署Redeploy,再启动。

至此,问题已经解决。

9.3 可能的其他异常供参考(从网上找的)

9.3.1 JSF--整合spring

使用JSF-Spring整合
一、下载
进官方网站http://jsf-spring.sourceforge.net,下载lib
二、参考quickstart配置相应文件
http://jsf-spring.sourceforge.net/quickstart.shtml
最终配置结果如下
web.xml

clip_image076
clip_image076[1]clip_image076[2]    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
clip_image076[3]    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
clip_image076[4]
clip_image076[5] javax.faces.CONFIG_FILES
clip_image076[6]
clip_image076[7]            /WEB-INF/classes/faces/faces-config.xml, 
clip_image076[8]            /WEB-INF/classes/faces/faces-config-beans.xml
clip_image076[9]

clip_image076[10]

clip_image076[11]
clip_image076[12] contextConfigLocation
clip_image076[13]
clip_image076[14]            classpath*:spring/applicationContext-*.xml
clip_image076[15]

clip_image076[16]

clip_image076[17]
clip_image076[18]
clip_image076[19] Faces Servlet
clip_image076[20] javax.faces.webapp.FacesServlet
clip_image076[21] 0
clip_image076[22]

clip_image076[23]
clip_image076[24] Faces Servlet
clip_image076[25] *.faces
clip_image076[26]

clip_image076[27]
clip_image076[28]
clip_image076[29]            org.springframework.web.context.request.RequestContextListener
clip_image076[30]

clip_image076[31]

clip_image076[32]
clip_image076[33]
clip_image076[34]            org.springframework.web.context.ContextLoaderListener
clip_image076[35]

clip_image076[36]

clip_image076[37]
clip_image076[38] de.mindmatters.faces.spring.context.ContextLoaderListener
clip_image076[39]

clip_image076[40]
clip_image076[41]

clip_image076[42]
clip_image076[43]

请注意以上listener的顺序,如果位置不同可能出现找不到在spring中定义的bean。请按以上顺序配置即可。
根据quitstart配置完之后可能还有如下异常:
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: de.mindmatters.faces.spring.factory.BeansEvaluationException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uiBean': Scope 'request' is not active; nested exception is java.lang.IllegalStateException: No thread-bound request: use RequestContextFilter
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
de.mindmatters.faces.lifecycle.RenderResponsePhase.executePhase(RenderResponsePhase.java:45)
de.mindmatters.faces.lifecycle.AbstractPhase.execute(AbstractPhase.java:37)
de.mindmatters.faces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:166)
de.mindmatters.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:226)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
然后再把这个listener加上

  org.springframework.web.context.request.RequestContextListener

就ok了。
可选
如果还有问题,在faces-config.xml中添加

    
      org.springframework.web.jsf.DelegatingVariableResolver
    

  com.sun.facelets.FaceletViewHandler

posted on 2007-04-26 16:18 风人园 阅读(2936) 评论(3) 编辑 收藏 所属分类: JSF

clip_image077

评论

# re: JSF--整合spring  回复 更多评论

我按照你的配置修改后,后台老提示
严重: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3677)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:608)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:535)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:470)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1112)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
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:275)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
请问什么原因?我该如何解决? 急啊!
老大

2007-07-16 12:04 | zzb

# re: JSF--整合spring  回复 更多评论

我的也是这个问题
严重: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener

2007-09-27 17:02 | wxyhibernate

# re: JSF--整合spring 回复 更多评论

com.sun.faces.config.ConfigureListener在jsf的sun参考实现jsf-impl.jar中。
如果你使用的是apache的myfaces实现的话可以去掉这个listener。

2007-12-04 15:18 | KimmKing

9.3.2 严重: Exception sending context initialized event to listener instance

clip_image078已解决提问者:smallbqxy_062 - 二副 十一级

严重: Exception sending context initialized event to listener instance o

悬赏分:clip_image079100 解决时间:2008-12-25 12:29

用 myeclipse 做 spring+hibernate+struts2 时报错,不知为什么,可能是spring包有问题 ,说是asm..之类的我都弄了也不行,如有知道请告诉一下。
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/springframework/context/support/AbstractRefreshableConfigApplicationContext
2008-12-6 16:08:39 org.apache.catalina.core.StandardContext start
严重: Context [/t8] startup failed due to previous errors

clip_image080最佳答案

clip_image0817481086_582 - 二副 十一级

你可能把不要的包也导进去了或是哪个必需的包没导入,以下是必需包:
Spring包(9个): 
commons-dbcp.jar、commons-pool.jar、spring.jar、spring-beans.jar、
spring-context.jar、spring-core.jar、spring-dao.jar、
spring-hibernate3.jar、spring-web.jar。
struts2.0包(6个):commons-logging-api-1.1.jar、freemarker-2.3.8.jar 
ognl-2.6.11.jar、struts2-core-2.0.8.jar、
struts2-spring-plugin-2.0.11.2.jar、xwork-2.0.3.jar 
hibernate包:myeclipse工具自动添加生成导入。
还有就是数据库驱动包。
如果还有什么问题加:QQ 274339969

回答采纳率达:27%(440个被采纳)

评价已经被关闭 目前有 0 个人评论

好不好

0% (0)0% (0)

相关问题

  • ·我这个配置能玩魔兽世界吗 内存2GB 显卡9400GT 主板主板 To be filled by O.E.M. To be filled by O.E.M.
  • ·AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ 主板 To be filled by O.E.M. To be filled by O.E.M.
  • ·开机显示:The CPU was previously shutdown due to a thermal event(overtheting)
  • ·当After Effects出现了Faled to share context-monitor color depth must be 32该怎么办
  • ·⊙O1⊙O2内切于A,⊙O1⊙O2的半径为3、2,P是除A外⊙O1上任一点,PA交⊙O2于C,PB与⊙O2相切于B,PB比PC=
  • ·[+to-v][+v-ing][+wh-][O1][O2]等相关问题,急!!!在线等·~~

其它回答 (2)

clip_image081[1]xuan6325293_706 - 二副 十一级

别的我不多说,我只告诉你些配置Spring的问题所报出的这种错误
你这问题如果是启动Tomcat出的问题报错解决方法很简单如下:
需要加载的包(必须):commons-dbcp.jar和commons-pool.jar
需要删除的包(必须):asm-2.2.3.jar 
如果按照此方法,必定解除你的错误 如果这加载包没有 我给你!

回答采纳率达:30%(472个被采纳)

clip_image081[2]89B2A3604_868 - 二副 十一级

java.lang.NoClassDefFoundError: 
你在配置文件里定义的某个类,没有找到,估计是包名没有写对,把报错信息再仔细地看一看

回答采纳率达:29%(453个被采纳)

9.3.3 严重: Error listenerStart

最近关于SPRING的配置的问题一启动TOMCAT就出现"严重: Error listenerStart",通过BAIDU和GOOLGE查找了差不多两天,没有找一个有建设性的意见.都是一些转载,我真的想问问他们有没有真真的去面对过,和测试过,就在这里乱说!出现这种错误的主要原因是由于WEB.XML配置SPRING的时候出错的:
org.springframework.web.context.ContextLoaderListener

现在我认为有必要说说我解决的方面了:要考虑的方面有:

1、web.xml的配置有没有问题!

2、一些必要的JAR文件,有没有多余JAR文件,是不是版本问题

3、是不是JDK和TOMCAT的版本问题

4、最重要的是在这里了:SPRING配置文件是不是有配置BEAN有错误!

补充:还一个更绝的方法:通过TOMCAT的LOG来解决这个问题,更方便,更简单.不过要配置TOMCAT的LOG

首先在TOMCAT目录下找到common下的lib,在这个目录下加入两个JAR文件,分别是commons-logging-1.0.4.jar和log4j-1.2.9.jar,同时还需要在common下的classes目录下加入log4j.properties文件,

我的log4j.properties文件配置如下:

log4j.rootLogger=info, A1 , R
log4j.appender.A1=org.apache.log4j.ConsoleAppender
#log4j.appender.A1.layout=org.apache.log4j.HTMLLayout
#log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${myappfuse.root}/WEB-INF/classes/log/log4j.log
log4j.appender.R.MaxFileSize=200KB
log4j.appender.R.MaxBackupIndex=100
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.R.layout.ConversionPattern=%p -thread: %t - %l - %c - %m%n
log4j.appender.R.layout.ConversionPattern=%p -%-d{yyyy-MM-dd HH:mm:ss} %l - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL#
log4j.logger.org.hibernate.SQL=INFO
#log4j.logger.java.sql.PreparedStatement=DEBUG

### log JDBC bind parameters ###
#log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
#log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=info

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

9.3.4 使用spring中,出现深恶痛绝的Error listenerStart!!

使用spring,出现深恶痛绝的Error listenerStart!!

楼主syhgxyhzb(剑雨飞花)2006-09-30 22:10:24 在 Java / 框架、开源 提问

web.xml:
    
                      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
    
  contextConfigLocation  
  classpath:applicationContext.xml  
 
                
    
  org.springframework.web.context.ContextLoaderListener  
 
  
    
  applicationContext.xml在src下:
    
    
    
    class="org.apache.commons.dbcp.BasicDataSource">  
    
    
    
    
    
    class="org.springframework.orm.hibernate.LocalSessionFactoryBean">  
    
    
    
  /org/study/domain/hbm/Test1.hbm.xml  
  /org/study/domain/hbm/Test2.hbm.xml  
 
  
    
    
 
  
这样的话,启动tomcat便出现熟悉的:
  2006-9-30   21:50:30   org.apache.catalina.core.StandardContext   start  
严重:   Error   listenerStart  
  2006-9-30   21:50:30   org.apache.catalina.core.StandardContext   start  
严重:   Context   [/yumen]   startup   failed   due   to   previous   errors  
如果将applicationContext当中的:
    
    
  /org/study/domain/hbm/Test1.hbm.xml  
  /org/study/domain/hbm/Test2.hbm.xml  
 
  
    
去掉就没有问题了,但是我确信目录没有错。
请问这是怎么回事??
问题点数:100、回复次数:10Top

1 kinsey0514(春天的老黄牛)回复于 2006-09-30 22:59:37 得分 0

upTop

2 timtin0361(究极奥义)回复于 2006-10-01 11:32:11 得分 0

/org/study/domain/hbm/Test1.hbm.xml  
第一个/   要吗Top

3 syhgxyhzb(剑雨飞花)回复于 2006-10-01 12:25:06 得分 0

无论要不要,都照样出错。Top

4 jrwx()回复于 2006-10-01 19:00:49 得分 0

可能Test2.hbm.xml,Test1.hbm.xml的格式不对,读不出里面的内容 你转一下本地编码格式试试Top

5 syhgxyhzb(剑雨飞花)回复于 2006-10-01 19:27:18 得分 0

什么叫本地编码格式呢?Top

6 zqpsswh(似水无痕)回复于 2006-10-03 17:27:35 得分 0

明显格式不对 仔细检查吧
是否DTD错误?Top

7 syhgxyhzb(剑雨飞花)回复于 2006-10-04 08:38:51 得分 0

什么叫明显格式不对呢?  
好多书上,网上都是这样写的,那这么明显,您看出来了?Top

8 Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2006-10-04 11:46:20 得分 100

运行一下
  new   ClassPathXmlApplicationContext("applicationContext.xml").getBean("sessionFactory");  
看看报什么异常。Top

9 syhgxyhzb(剑雨飞花)回复于 2006-10-04 21:13:17 得分 0

按照Saro的方法找到了错误,原来是hibernate2和hibernate3的版本问题.解决了.  
Top

10 syhgxyhzb(剑雨飞花)回复于 2006-10-04 21:15:37 得分 0

贴子回复次数大于跟给分次数   ,是什么意思,不能给分

9.3.5 开发异常的解决方法

2009年04月09日 00时00分

1、java.lang.NoSuchMethodError: sun.rmi.transport.ObjectTable.getStub(Ljava/rmi/Remote;)Ljava/rmi/server/RemoteStub

问题描述:当集成JOTM 2.0.13到Tomcat 5.5.27时出现。

解决方法:修改carol.properties文件中的carol.jvm.rmi.local.call属性为true。

2、java.lang.NoSuchMethodError: org.springframework.util.Assert.noNullElements([Ljava/lang/Object;Ljava/lang/String;)V

解决方法:不能将Spring 2.0和Spring 2.5中的spring.jar与spring-[modules].jar混合使用。

9.3.6 Tomcat严重错误,日志里出现: java.lang.NoClassDefFoundError: javax/el/ExpressionFactory

发布工程时,抛出以下异常:
java.lang.NoClassDefFoundError: javax/el/ExpressionFactory
Apache Tomcat/5.0.28
则将javaee.jar包再copy一份放在tomcat目录的common/lib下就不会了。
关于用到的javaee.jar、jsf-api.jar、jsf-impl.jar、jstl-1.2.jar这四个包可以通过myeclipse中获得,这四个包的所在的目录是:
D:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5

posted on 2008-08-29 19:39 Documents 阅读(1370) 评论(0) 编辑 收藏 所属分类: Tomcat

clip_image077[1]

IT新闻 新用户注册 刷新评论列表

9.3.7 tomcat启动时出现的 严重: Error listenerStart

最近看《WebWork.Spring.Hibernate整合开发网络书城》视频教程,自己按照教程上说的做练习,在启动tomcat时总是出一个错误:

  2007-5-31 14:27:13 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
      2007-5-31 14:27:13 org.apache.catalina.core.StandardContext start
严重: Context [/testWSH] startup failed due to previous errors
教程的作者在录制教程时也遇到了此问题,但是他删了一个jar包后就没事了,可是我的一直无法正常启动,从昨天到现在一天的时间都在研究这个问题,也“百 度”到了很多有关此问题的信息,但是都没有很明确的解决方案。现在此问题已经解决,而且基本肯定问题所在,所以将解决方案写出来以供参考。
有一种解决方案是把web.xml文件中的

       org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
改为
  
        SpringContextServletservlet-name>
       
            org.springframework.web.context.ContextLoaderServlet
        servlet-class>
        1load-on-startup>
    servlet>

但这种方法可能会出现其他问题(网上又说会导致其他文件无法打开)。
   

我的最终解决方案如下:
我用的是tomcat5.5,配置了日志之后打印出下列信息:
   ERROR main org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
Caused by:
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
    at java.lang.Class.getDeclaredConstructors0(Native Method)
  at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
    at java.lang.Class.getConstructor0(Class.java:2640)
    at java.lang.Class.getDeclaredConstructor(Class.java:1953)
    ……
从日志信息看问题已经很明显了,是 applicationContext.xml dataSource 问题。


改为

之后问题得到解决。

出现"Error listenerStart"一般是applicationContext.xml中的bean加载有问题。在用eclipse做webwork + spring + hibernate 的项目时一般都是用Myeclipse自动生成那些配置文件,而有些相关的jar或者文件并没有加载在至项目中,以至引出奇怪的问题,又因为是自动生成的东西所以往往会忽略一些文件,而问题确恰恰是这些生成的文件所致,所以自动化的东西也未必一定是正确的,呵呵……

    org.springframework.jdbc.datasource.DriverManagerDataSource 不可以使用连接池。org.apache.commons.dbcp.BasicDataSource作为注入的DataSource源,为了使用 DBCP的功能,必须要将commons-dbcp.jar加入CLASSPATH中,另外还需要commons-pool.jar和commons- collections.jar,这些都可以在Spring的lib目录下找到。
org.springframework.jdbc.datasource.DriverManagerDataSource并没有提供连接池的功能,只能作作简单的单机连接测试。
使用org.apache.commons.dbcp.BasicDataSource时缺少commons-pool.jar所以会出现如题的问题。

再次修正:

昨天又遇到此问题,解决的办法是删除无用的jar。

工程是 spring+hibernate+tomcat5.5.25,jar都是用eclipse自动加载的,很多jar明显的用不到,例如:ibatis,toplink等。将无用的jar删除后问题解决。

  • 15:06
  • 浏览 (27818)
  • 论坛浏览 (10360)
  • 评论 (12)
  • 分类: 技术空间
  • 相关推荐

评论

12 楼 shudikoo 2008-05-21   引用

我也遇到了这个问题,研究了3天,最后知道是少了几个spring的包。去官网下载spring的最新包。就ok了。具体的文件配置在http://user.qzone.qq.com/3470537/blog/1211351181

11 楼 摆渡人 2008-04-07   引用

怪事,偶也是报这个错误,发现没加入spring.jar包,加了之后.tomcat6启动就OK了

10 楼 richardlovejob 2007-10-26   引用

谢谢你的提示帮助!

9 楼 danielchen19 2007-09-01   引用

我也曾经试过这样可以过一次,但现在又出现这种情况,原因是在web.xml 删了

org.springframework.web.context.ContextLoaderListener

就可以了, 正常情况是可以的,不知是什么原因,请高手解答一下。

8 楼 xj4150 2007-08-23   引用

danielchen19 写道

我也是将它变成这样

        SpringContextServlet
           
          1
   

但是还是出现严重: Error listenerStart
2007-8-12 8:37:30 org.apache.catalina.core.StandardContext start
严重: Context [/ConnectNote] startup failed due to previous errors, 请问是什么原因??

ybbtgvusr 写道

我也遇到了楼主说的情况,按你说的解决方法试过了。但没有用呀,还是出现Error listenerStart错误!!

先看看日志吧,看看报什么异常

7 楼 danielchen19 2007-08-12   引用

我也是将它变成这样

        SpringContextServlet
           
          1
   

但是还是出现严重: Error listenerStart
2007-8-12 8:37:30 org.apache.catalina.core.StandardContext start
严重: Context [/ConnectNote] startup failed due to previous errors, 请问是什么原因??

6 楼 ybbtgvusr 2007-07-05   引用

我也遇到了楼主说的情况,按你说的解决方法试过了。但没有用呀,还是出现Error listenerStart错误!!

5 楼 hcconquer 2007-06-15   引用

楼上说的很对,commons-dbcp.jar、commons-pool.jar和commons- collections.jar都加到lib就好了
我现在报sessionFactory不能创建,请问要加那几个包啊

4 楼 aimama_1314 2007-06-04   引用

在这里搜到你的帖`~  XJ~~
我又遇见这样的问题了``
估计是刚才applicationContext.XML 加bean的时候加错了``555
泪``继续改错``

3 楼 xj4150 2007-06-01   引用

使用org.apache.commons.dbcp.BasicDataSource时缺少commons-pool.jar所以会出现如题的问题。

2 楼 xj4150 2007-05-31   引用

org.springframework.jdbc.datasource.DriverManagerDataSource并没有提供连接池的功能,只能作作简单的单机连接测试。

1 楼 xj4150 2007-05-31   引用

不可以使用连接池。org.apache.commons.dbcp.BasicDataSource作为注入的DataSource源,为了使用DBCP的功能,必须要将commons-dbcp.jar加入CLASSPATH中,另外还需要commons-pool.jar和commons- collections.jar,这些都可以在Spring的lib目录下找到。

9.3.8 在部署Struts时,出现如下404错误信息

struts常见问题1:HTTP Status 404 - Servlet action is not available 收藏

在部署Struts时,出现如下错误信息:

HTTP Status 404 - Servlet action is not available

--------------------------------------------------------------------------------

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.

问题原因:

1.、web.xml文件中未配置ActionServlet。

2、struts-config.xml文件未配置你要访问的Action。

3、你的jsp文件form标记中action属性的路径名称错误。

4、非以上三种情况。

针对以上4种情况相应的解决方案如下:

1、在web.xml文件中加上ActionServlet的配置信息

clip_image083

2、在struts-config.xml文件检查你要访问的Action配置文件。

3、检查jsp文件form标记中action属性的路径名称是否与struts-config.xml文件中action标记的path属性的路径名称一致。

4、非以上情况的解决办法就是检查web容器的log日志,如果时tomcat则检查下logs目录下的localhost_log文件,看里边是否记录有错误信息,然后根据错误信息提示将其纠正。

发表于 @ 2008年06月27日 10:53:00 | 评论( 0 ) | 编辑| 举报| 收藏

旧一篇:java遇到的错误 | 新一篇:Acegi学习一

本文来自CSDN博客,转载请标明出处:file:///D:/DOC/SSH/struts常见问题1:HTTP%20Status%20404%20-%20Servlet%20action%20is%20not%20available%20-%20xu_zh_h的专栏%20-%20CSDN博客.htm

你可能感兴趣的:(Web)