spring入门几个问题及解决

作者: ldsea 分类: 程序生活 发布时间: 2008-06-15 00:30

1.
[code]<bean id="helloworld" class="org.andyny.action.helloworld">
<constructor-arg index="0"> //注意: index="引号+数字"
<value>hi,hahahaha</value>
</constructor-arg>
</bean>[/code]
2.spring配置文件

applicationcontext.xml配置文件放在本项目的工作目录下,即是:springmvc应用程序下。或者web项目的web-inf目录下

3.web.xml,config.xml等各配置文件中,若批处理命令中参数(如:web-app 2.2/web-app 2.4版本不匹配问题及encoding编码与平台的默认编码不符合问题)都会显示错误

[code]<?xml version="1.0" encoding="iso-8859-1"?>
<!doctype web-app
public "-//sun microsystems, inc.//dtd web application 2.2//en"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">[/code]

4.
[code]java.lang.illegalstateexception: no webapplicationcontext found: no contextloaderlistener
registered?
at
org.springframework.web.servlet.support.requestcontextutils.getwebapplicationcontext(requestc
o
ntextutils.java:84)
at
org.springframework.web.servlet.support.requestcontext.initcontext(requestcontext.java:206)
at
org.springframework.web.servlet.support.jspawarerequestcontext.initcontext(jspawarerequestcon
t[/code]…………

解决办法:

[code]<context-param>
<param-name>contextconfiglocation</param-name>
<param-value>
/web-inf/applicationcontext.xml
</param-value>
</context-param>

<listener>
<listener-class>
org.springframework.web.context.contextloaderlistener
</listener-class>
</listener>[/code]

将上述的代码添加到web.xml文件,注意是:标签之前。

5.配置taglib

[code]<?xml version="1.0" encoding="iso-8859-1"?>
<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">[/code]

[code]<jsp-config> [color=#FF0000]// 注意:此版本需要<jsp-config>, web-app_2_2.xsd则不要。[/color]<taglib>
<taglib-uri>
/spring
</taglib-uri>
<taglib-location>
/web-inf/spring.tld
</taglib-location>
</taglib>
</jsp-config>[/code]

6.listiterator

注意:void remove()

从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

iterator和listiterator的不同使用方法

我们在使用list,set的时候,为了实现对其数据的遍历,我们经常使用到了iterator(跌代器)。使用跌代器,你不需要干涉其遍历的过程,只需要每次取出一个你想要的数据进行处理就可以了。

但是在使用的时候也是有不同的。list和set都有iterator()来取得其迭代器。对list来说,你也可以通过listiterator()取得其迭代器,两种迭代器在有些时候是不能通用的,iterator和listiterator主要区别在以下方面:

1. listiterator有add()方法,可以向list中添加对象,而iterator不能

2. listiterator和iterator都有hasnext()和next()方法,可以实现顺序向后遍历,但是listiterator有hasprevious()和previous()方法,可以实现逆向(顺序向前)遍历。iterator就不可以。

3. listiterator可以定位当前的索引位置,nextindex()和previousindex()可以实现。iterator没有此功能。

4. 都可实现删除对象,但是listiterator可以实现对象的修改,set()方法可以实现。iierator仅能遍历,不能修改。因为listiterator的这些功能,可以实现对linkedlist等list数据结构的操作。其实,数组对象也可以用迭代器来实现。

org.apache.commons.collections.iterators.arrayiterator就可以实现此功能。一般情况下,我们使用iterator就可以了,如果你需要进行记录的前后反复检索的话,你就可以使用listiterator来扩展你的功能,(有点象jdbc中的滚动结果集)。

7.spring mvc中关于数据绑定功能:

[code]++++++++++++++login.jsp+++++++++++++++++

<form name="user" action="/spring/login.do" method="post">
<spring:bind path="command.username">
<spring:message code="username"/><input type="text" name="${status.expression}"
value="${status.value}"/><br>
<font color="red"><b>${status.errormessage}</b></font><br>
</spring:bind>

+++++++++++++applicationcontext.xml++++++++++++++

<bean id="urlmapping" class="org.springframework.web.servlet.handler.simpleurlhandlermapping">
<property name="mappings">
<props>
<prop key="login.do">logination</prop>
</props>
</property>
</bean>

+++++++++++++++++action类的配置代码片段+++++++++++++++

<bean id="logination" class="com.gc.action.login">
<property name="commandclass"> //++++++++++++注入command类,即是form表单的映射对象bean
<value>com.gc.action.user</value>
</property>
<property name="validator">
<ref bean="uservalidator"/>
</property>
<property name="formview">
<value>login</value>
</property>
<property name="successview">
<value>success</value>
</property>
</bean>[/code]那么必须从action类中定向到login.jsp,而不能直接打开login.jsp页面。

否则,
标签中的command对象取不到,会报如下错误:

neither errors instance nor plain target object for bean name ’command’ available as request
attribute

8.关于web.xml文件中配置 dispatcherservlet-servlet.xml

++++++++++++++++++++++++++++++++方式一+++++++++++++++++++++++++++++++++

注意:此中方式中,param-name一定要是contextconfiglocation,而方式二则没有什么限制。

[code]<context-param>
<param-name>contextconfiglocation</param-name>
<param-value>
/web-inf/dispatcherservlet-servlet.xml
</param-value>
</context-param>

<listener>
<listener-class>
org.springframework.web.context.contextloaderlistener
</listener-class>
</listener>

<servlet>
<servlet-name>dispatcherservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>

<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>dispatcherservlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>[/code]

+++++++++++++++++++++++++方式2+++++++++++++++++++++++

[code]<servlet>
<servlet-name>dispatcherservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>

<init-param>
<param-name>contextconfiglocation</param-name>
<param-value>/web-inf/dispatcherservlet-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>dispatcherservlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>[/code]

发表回复

您的电子邮箱地址不会被公开。