基于spring3.0的采用XML配置的spring MVC项目

来源:互联网 发布:淘宝手机端删除评价 编辑:程序博客网 时间:2024/04/29 01:53

Spring MVC 框架

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

常见MVC框架比较

运行性能上:

         Jsp+servlet>struts1>spring mvc>struts2+freemarker>>struts2,ognl,值栈。

开发效率上,基本正好相反。值得强调的是,spring mvc开发效率和struts2不相上下。

 Struts2的性能低的原因是因为OGNL和值栈造成的。所以,如果你的系统并发量高,可以使用freemaker进行显示,而不是采用OGNL和值栈。这样,在性能上会有相当大得提高。

基于spring3.0的采用XML配置的spring MVC项目

注:本项目全部基于XML配置。同时,集成了hibernate。采用的是:spring MVC+hibernate+spring的开发架构

1.  建立web项目

2.  导入jar(spring.jar, spring-webmvc.jar, commons-logging.jar。其他jar包为hibernate相关jar)

3. 修改web.xml如下:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">><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/hib-config.xml,/WEB-INF/web-config.xml,/WEB-INF/service-config.xml,/WEB-INF/dao-config.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></web-app>


4、 增加web-config.xml(这里包含spring mvc相关的相关配置)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"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.5.xsd"><!-- Controller方法调用规则定义 -->    <bean id="paraMethodResolver"        class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">        <property name="paramName" value="action"/>        <property name="defaultMethodName" value="list"/>    </bean>     <!-- 页面View层基本信息设定 -->    <bean id="viewResolver"          class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass"            value="org.springframework.web.servlet.view.JstlView"/>        <!--<property name="prefix" value="/myjsp/"/>-->        <property name="suffix" value=".jsp"/>    </bean><!-- servlet映射列表,所有控制层Controller的servlet在这里定义 -->    <bean id="urlMapping"          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">        <property name="mappings">            <props>                <prop key="user.do">userController</prop>            </props>        </property>    </bean><bean id="userController" class="com.sxt.action.UserController"><property name="userService" ref="userService"></property></bean></beans>


5、在WEB-INF下增加service-config.xml(这里包含service层类的相关配置)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"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.5.xsd"><bean id="userService" class="com.sxt.service.UserService"><property name="userDao" ref="userDao"></property></bean></beans>


6、在WEB-INF下增加hib-config.xml(这里包含spring集成hibernate相关的配置)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  http://www.springframework.org/schema/context      http://www.springframework.org/schema/context/spring-context-2.5.xsd"><context:component-scan  base-package="com.sxt"/>   <!-- 支持aop注解 --><aop:aspectj-autoproxy /><bean id="dataSource"              class="org.apache.commons.dbcp.BasicDataSource">              <property name="driverClassName"                  value="com.mysql.jdbc.Driver">              </property>              <property name="url" value="jdbc:mysql://localhost:3306/myhib"></property>              <property name="username" value="root"></property>              <property name="password" value="123456"></property>    </bean>     <bean id="sessionFactory"         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">             <property name="dataSource">                 <ref bean="dataSource" />             </property>           <property name="hibernateProperties">                 <props>                 <!-- key的名字前面都要加hibernate. -->                   <prop key="hibernate.dialect">                         org.hibernate.dialect.MySQLDialect                     </prop>                     <prop key="hibernate.show_sql">true</prop>                   <prop key="hibernate.hbm2ddl.auto">update</prop>               </props>           </property><property name="packagesToScan"><value>com.sxt.po</value></property>   </bean>  <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" ><property name="sessionFactory" ref="sessionFactory"></property></bean><!--配置一个JdbcTemplate实例-->  <bean id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate">        <property name="dataSource" ref="dataSource"/>   </bean>  <!-- 配置事务管理 --><bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" ><property name="sessionFactory" ref="sessionFactory"></property></bean><tx:annotation-driven transaction-manager="txManager" /><aop:config> <aop:pointcut expression="execution(public * com.sxt.service.impl.*.*(..))" id="businessService"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="businessService" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager" > <tx:attributes> <tx:method name="find*"  read-only="true" propagation="NOT_SUPPORTED"  /> <!-- get开头的方法不需要在事务中运行 。 有些情况是没有必要使用事务的,比如获取数据。开启事务本身对性能是有一定的影响的--> <tx:method name="*"/>    <!-- 其他方法在实务中运行 --> </tx:attributes> </tx:advice> </beans>


7、在WEB-INF下增加dao-config.xml(这里包含dao层类的相关配置)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"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.5.xsd"><bean id="userDao" class="com.sxt.dao.UserDao">  <property name="hibernateTemplate" ref="hibernateTemplate"></property></bean></beans>


8、javaBean类

package com.sxt.po;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class User {@Id@GeneratedValue(strategy=GenerationType.AUTO)private int id;private String uname;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}}


9、dao类

package com.sxt.dao;import org.springframework.orm.hibernate3.HibernateTemplate;import com.sxt.po.User;public class UserDao {private HibernateTemplate hibernateTemplate;public void add(User u){System.out.println("UserDao.add()");hibernateTemplate.save(u);}public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}}


10、service类

package com.sxt.service;import com.sxt.dao.UserDao;import com.sxt.po.User;public class UserService {private UserDao userDao;public void add(String uname){System.out.println("UserService.add()");User u = new User();u.setUname(uname);userDao.add(u);}public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}


11、control类

package com.sxt.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;import com.sxt.service.UserService;public class UserController implements Controller {private UserService userService;@Overridepublic ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse resp) throws Exception {System.out.println("HelloController.handleRequest()");req.setAttribute("a", "aaaa");userService.add(req.getParameter("uname")); return new ModelAndView("index");}public UserService getUserService() {return userService;}public void setUserService(UserService userService) {this.userService = userService;}}

好了,基于配置文件的spring MVC就算完成了,配置文件还真多,不过项目结构很清晰,有经验的朋友一看就懂。

 

 

 

 

原创粉丝点击