spring入门几个问题及解决
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页面。
否则,
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]