• Spring MVC框架实例


    Spring  MVC 背景介绍

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

     下载源代码:Spring MVC框架实例

    常见MVC框架比較

    执行性能上:

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

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

    Struts2的性能低的原因是由于OGNL和值栈造成的。

    所以,假设你的系统并发量高,能够使用freemaker进行显示,而不是採用OGNL和值栈。这样。在性能上会有相当大得提高。

    基于spring2.5的採用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映射列表,全部控制层Controllerservlet在这里定义 -->

        <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.xsd

    http://www.springframework.org/schema/tx

    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

    http://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. 建立相关类和包结构,例如以下图所看到的:

    9. 各类代码例如以下: 

    package com.sxt.po;

    import javax.persistence.Entity;

    import javax.persistence.GeneratedValue;

    import javax.persistence.GenerationType;

    import javax.persistence.Id;

    @Entity

    public 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;

    }

    }

    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;

    }

    }

    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;

    }

    }

    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;

    @Override

    public 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;

    }

    }

    10. 执行測试:

    http://locahost:8080/springmvc01/user.do?

    uname=zhangsan

    结果:数据库中添加zhangsan的记录。页面跳转到index.jsp上,显示:

     下载源代码:Spring MVC框架实例

  • 相关阅读:
    Python三维绘图--Matplotlib colorbar生成
    Python三维绘图--Matplotlib
    VIM剪切板的使用
    三维点云网络PointNet——模型及代码分析
    ECCV2018--点云匹配
    hdu 1905 小数化分数2
    hdu 1755 A Number Puzzle
    hdu 1796 How many integers can you find
    hdu 1452 Happy 2004
    hdu 2837 Calculation
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6973041.html
Copyright © 2020-2023  润新知