一个小小的springMVC项目,看着简单,其实折腾的还是有点苦逼,仅作备忘.
环境要求:maven3.x,spring3.x,velocity1.7,mybatis3.2.x
项目样板,参见附件.如下为注意事项:
1) pom.xml:
在maven3.x之后,不再支持profile.xml方式配置参数,而是改成将profile信息直接包含在pom.xml中.
2) velocity-tool:
在velocity中使用tool时需要注意,在velocity-tool 2.0之后,xml文件的格式发生的变化,如果xml格式不正确,将导致tool无法被使用.参考:
<toolbox> <tool> <key>stringUtils</key> <scope>application</scope> <class>org.apache.commons.lang.StringUtils</class> </tool> <tool> <key>dateFormatUtils</key> <scope>application</scope> <class>org.apache.commons.lang.time.DateFormatUtils</class> </tool> <tool> <key>escapeUtils</key> <scope>application</scope> <class>org.apache.commons.lang.StringEscapeUtils</class> </tool> </toolbox>
3) 在springMVC中解决请求乱码问题,在web.xml配置.
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>qipa-statistic web portal</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-context.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-velocity.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.jhtml</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.html</welcome-file> </welcome-file-list> </web-app>
4) mybatis配置文件:文件中各个标签的顺序需要一致,否则会在解析式报错.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="lazyLoadingEnabled" value="false" /> </settings> <typeAliases> <typeAlias type="com.test.sample.domain.TestDO" alias="TestDO" /> </typeAliases> <mappers> <mapper resource="sqlmap/Test.xml" /> </mappers> </configuration>
5) mybatis中insert时返回主键的值,这个和ibatis2.x已经不一样了.
<insert id="insert" keyProperty="id"> <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID(); </selectKey> insert into test(name) value(#{name}) </insert>
public Integer insert(TestDO test) { sqlSession.insert("Test.insert",test); return test.getId(); }
项目骨架,参见附件.