一、web.xml
<!-- 通过上下文参数指定spring配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
二、数据源beans.xml
<!-- 注解驱动 -->
<mvc:annotation-driven/>
<!-- 组件扫描 -->
<context:component-scan base-package="com.hcm.controller"></context:component-scan>
<!-- 定义数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost/springmvc" />
<property name="user" value="root" />
<property name="password" value="root" />
<property name="initialPoolSize" value="10"/>
<property name="maxPoolSize" value="50"/>
<property name="minPoolSize" value="10"/>
</bean>
<bean id="sf" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- hibernate映射文件的位置 -->
<property name="mappingDirectoryLocations">
<value>classpath:com/hcm/domain/</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.Dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl">update</prop>
</props>
</property>
</bean>
<!-- 事务管理器 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sf"></property>
</bean>
<!-- 配置事物的传播特性 (事物通知)-->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* com.hcm.service.*.*(..))" advice-ref="txAdvice"/>
</aop:config>
三、mvc模型解析器springmvc.xml
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsps/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
四、自定义controller:
package com.hcm.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import com.hcm.domain.Person; @Controller @RequestMapping(value="/home") public class HomeController { @RequestMapping(value="/hello.action", method=RequestMethod.GET) public String hello(String id, String name, String address, Map<String, Object> model) { model.put("id", id); model.put("name", name); model.put("address", address); return "hello"; } @RequestMapping(value="/person.action") public String person(Person person, Map<String, Object> model) { model.put("person", person); return "person"; } /** * 加上@RequestParam会出现HTTP ERROR 400的报错 * @param uid * @param uname * @param address * @param model * @return */ @RequestMapping(value="/helloH.action") public String hello2(@RequestParam(value="id") String uid, @RequestParam(value="name") String uname, String address, HttpServletRequest req) { req.setAttribute("id", uid); req.setAttribute("name", uname); req.setAttribute("address", address); return "hello2"; } }
五、代码下载:
链接:http://pan.baidu.com/s/1eQ3vAOq 密码:wihz