SpringMVC 入门教程知识

SpringMVC 入门知识

一、SpringMVC入门介绍

  springMVC代替struts2去整合hibernate实现功能的框架。使用springMVC有两个配置文件需要配置,一 个是applicationContext.xml、另一个是web.xml,在applicationContext.xml里面配置事务管理器以及属性注入等。web.xml里面要添加一个springMVC的servlet的注册和映射(DispatcherServlet),这个servlet是 springMVC的核心控制器,专门处理各个请求的,然后根据相应的参数分发给相应的业务控制器处理,业务控制器处理完之后就会返回一字符串给核心控制 器,核心控制器再根据该字符串重定向或者转发到相应的页面。还必须给该核心控制器建一个配置文件,其形式为:核心控制器servlet名-servlet.xml,如springMVC-servlet.xml.该配置文件放在WEB-INF下面。

  HandlerMapping接口 -- 处理请求的映射。由于HandlerMapping接口的实现类有两种方式:

SimpleUrlHandlerMapping ——通过配置文件,把一个URL映射到Controller;

DefaultAnnotationHandlerMapping ——通过注解,把一个URL映射到Controller类上

  所以,springMVC的实现由两种方式:配置文件和注解两种方式。

springMVC与struts2的区别:
  1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。

  2. 性能:spring会稍微比struts快。spring
mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个  action都会被注入属性,而spring基于方法,
粒度更细,但要小心把握像在servlet控制数据一样。spring3
mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数  据注入进去,在spring3
mvc中,一个方法对应一个request上下文。而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter、getter方法把request中的数据注入;struts2实际上是通过setter
getter方法与request打交道的;struts2中,一个Action对象对应一个request上下文。

    注:下面用到的实例以用户的登录为简单模型来解释。用户的字段有id、loginName、passwd。该小实例提供链接MySQL数据库的注册  和登录的功能。

二、SpringMVC与Hibernate整合

1.搭建环境

  导入SSH的jar包和数据库驱动的jar包,即将必须的jar包拷贝到webRoot/WEB-INF/lib文件中,会自动加载到该项目中。

2.搭配spring环境

  src目录下自动生成applicationContext.xml的spring配置文件。此外还得再web.xml中配置spring容器实例化的监听器。关键代码如下:

<context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
      </context-param>     
      <listener>
           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

注:在这里可以不用配置spring容器实例化的监听器。

3.搭建Hibernate环境

  a.搭建的步
骤:Hibernate的配置文件选择spring configuration
file(applicationContext.xml),在选择Existing spring configuration
file,其他默认。接着选择数据库,注意修改当前项目数据库名。接着,create SessionFactory class?勾选掉。

  b.搭建成功结果:

  在applicationContext.xml文件中生成dataSource的bean和sessionFactory的bean。参考代码如下

<!-- 注入数据源 -->

<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/该项目所在数据库名"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>

<!-- 注入SessionFactory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQLDialect
                </prop>
            </props>
        </property>

<!-- 引入映射文件 -->

  ....(略)
    </bean>

  4.web.xml文件的配置

    springMVC的servlet的注册和映射(DispatcherServlet)。这个servlet是 springMVC的核心控制器,专门处理各个请求的,然后根据  相应的参数分发给相应的业务控制器处理,业务控制器处理完之后就会返回一字符串给核心控制 器,核心控制器再根据该字符串重定向或者  转发到相应的页面。还必须给该核心控制器建一个配置文件,其形式为:核心控制器servlet名-servlet.xml,如springMVC-servlet.xml.该  配置文件放在WEB-INF下面。

<!-- springMVC的servlet的注册和映射(DispatcherServlet) -->
    <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/classes/web-config.xml,/WEB-INF/classes/applicationContext.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>

  5.SpringMVC的配置文件

    SpringMVC的配置文件这里为web-config.xml(和上面DispatcherServlet里的初始化文件名相同)。他的配置代码参考如下:

    a.注解方式的配置:

<?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:p="http://www.springframework.org/schema/p"
    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/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    
    <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
    <context:component-scan base-package="(基本包如:cn.com)"/>

<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
    
    <!-- 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="/"></property>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

    b.配置文件的方式(每种方法必须一个Controller即两个bean):

<?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="/"></property>
             <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/regist.do">userRegistController</prop>
                <prop key="user/login.do">userLoginController</prop>
            </props>
        </property>
    </bean>
  
    <bean id="userRegistController" class="(包名).UserRegistController">
        <property name="userService">
            <ref bean="userService" />
        </property>
    </bean>
    
    <bean id="userLoginController" class="(包名).UserLoginController">
        <property name="userService">
            <ref bean="userService" />
        </property>
    </bean>
</beans>   

三、SpringMVC两种方法实现登录和注册的功能的映射使用区别

1.注解的方式

@Controller  //把当前JavaBean当做Controller
@RequestMapping("/user.do") //给该控制器设定访问URL
public class UserController {
    @Resource //注入
    private UserService userService;

public void setUserService(UserService userService) {
        this.userService = userService;
    }

@RequestMapping(params="method=regist")
    public String regist(String loginName,String passwd){
        User user = new User(loginName, passwd);
        if(userService.regist(user)){
            return "index";
        }else{
            return "regist";
        }
        
    }

@RequestMapping(params="method=login")
    public String login(User user,HttpSession session){
        User loginUser = userService.login(user.getLoginName(), user.getPasswd());
        if(user!=null){
            session.setAttribute("user", loginUser);
            //return "success";
            return "redirect:success.jsp";
        }else{
            return "index";
        }
    }
}

2.配置文件的方式

a.UserLoginController文件

public class UserLoginController implements Controller {

private UserService userService;
    
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        String loginName = request.getParameter("loginName");
        String passwd = request.getParameter("passwd");
        User user = userService.login(loginName, passwd);
        if(user!=null){
            request.getSession().setAttribute("user", user);
            return new ModelAndView("redirect:/success.jsp");
        }else{
            return new ModelAndView("redirect:/index.jsp");
        }
    }

}

b.UserRegistController文件

public class UserRegistController implements Controller {

private UserService userService;
    
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        String loginName = request.getParameter("loginName");
        String passwd = request.getParameter("passwd");
        User user = new User(loginName, passwd);
        if(userService.regist(user)){
            // return new ModelAndView("index");
            //return new ModelAndView("/index.jsp");//转发
            /*
             * 有前缀和后缀
             *  url:prefix+index+suffix  == /index.jsp
             *  
             *  没有前缀和后缀
             *  ModelAndView("URL");
             */
            return new ModelAndView("redirect:/index.jsp");//重定向--一般不会使用前缀和后缀
        }else{
            return new ModelAndView("redirect:/regist.jsp");
        }
    }

}

四、其他文件的内容及配置

  其他都是按MVC框架进行的设计。参考代码,这里不再赘述。参考的工程项目源码见分享链接:http://pan.baidu.com/s/1qW9REPm。

时间: 2024-10-10 17:06:17

SpringMVC 入门教程知识的相关文章

springMvc入门教程1

springMvc简单入门 spring版本:spring-framework-4.3.8 jdk版本:1.7 tomact版本:8.0 项目结构图: 使用eclipse建立动态网站(Dynamic Web Project) 在WebContent/WEB-INF目录下建立web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org

springMvc入门教程2(集成mybatis和参数绑定)

源码地址:http://files.cnblogs.com/files/suzixuan/springMvcGuide.zip 数据库使用:mysql5.6 mybatis版本:mybatis-3.4.4 根据上次的项目,做了文件夹修改,整体目录如下: 1,修改spring-servlet.xml的文件目录,放在了Java Resources/resources下 web.xml文件内容修改,修改了spring-servlet.xml的加载目录 2,新添加jar包 mybatis-3.4.4.j

WCF入门教程:WCF基础知识问与答(转)

学习WCF已有近两年的时间,其间又翻译了Juval的大作<Programming WCF Services>,我仍然觉得WCF还有更多的内容值得探索与挖掘.学得越多,反而越发觉得自己所知太少,直到现在,我也认为自己不过是初窥WCF的门径而已. 学以致用”,如果仅仅是希望能够在项目中合理地应用WCF,那么对于程序员而言,可以有两种选择,一种是“知其然而不知其所以然”,只要掌握了WCF的基础知识,那么对于一般的应用就足够了.要做到这一点就很容易了,微软秉承了一贯的方式,将WCF这门技术优雅地呈现给

SpringMVC 基础教程 简单入门实例

SpringMVC 基础教程 简单入门实例 标签: Spring MVCspringmvcSpringMVC教程基础教程SpringMVC实例 2013-05-09 13:44 170403人阅读 评论(69) 收藏 举报  分类: Java(23)  Spring框架(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. spring MVC 入门教程二: 一个简单的入门实例教程 该实例的源码和实例中的jar 源码:http://download.csdn.net/detail/swi

【知识整理】这可能是最好的RxJava 2.x 入门教程(四)

这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2.x 入门教程(三) 这可能是最好的RxJava 2.x 入门教程(四) GitHub 代码同步更新:https://github.com/nanchen2251/RxJava2Examples 为了满足大家的饥渴难耐,GitHub将同步更新代码,主要包含基本的代码封装,RxJava 2.x所有操作符

四旋翼飞行器基本知识(四旋翼飞行器结构和原理+四轴飞行diy全套入门教程)

四旋翼飞行器结构和原理 1.结构形式       旋翼对称分布在机体的前后.左右四个方向,四个旋翼处于同一高度平面,且四个旋翼的结构和半径都相同,四个电机对称的安装在飞行器的支架端,支架中间空间安放飞行控制计算机和外部设备.结构形式如图 1.1所示. .工作原理 四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置.四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统. 四旋翼飞行器的电机 1和电机 3逆时

【知识整理】这可能是最好的RxJava 2.x 入门教程(五)

这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2.x 入门教程(三) 这可能是最好的RxJava 2.x 入门教程(四) 这可能是最好的RxJava 2.x 入门教程(五) GitHub 代码同步更新:https://github.com/nanchen2251/RxJava2Examples 为了满足大家的饥渴难耐,GitHub将同步更新代码,主

【知识整理】这可能是最好的RxJava 2.x 入门教程(三)

目录 一.前言 二.正题 7.distinct 8.Filter 9.buffer 10.timer 11.interval 12.doOnNext 13.skip 14.take 15.just 三.写在最后 正文 这可能是最好的RxJava 2.x入门教程系列专栏 文章链接: 这可能是最好的RxJava 2.x 入门教程(一) 这可能是最好的RxJava 2.x 入门教程(二) 这可能是最好的RxJava 2.x 入门教程(三) GitHub 代码同步更新:https://github.co

框架 day68 SpringMVC入门(框架原理,springmvc和mybatis整合)

第一天:注解开发基础(springmvc入门) springmvc框架原理(掌握) DispatcherServlet前端控制器.HandlerMapping处理器映射器.HandlerAdapter处理器适配器.ViewResolver视图解析器 springmvc入门程序 目标:加深对springmvc三大组件的认识 查询商品信息 重点掌握注解的HandlerMapping处理器映射器.HandlerAdapter处理器适配器(掌握) springmvc和mybatis整合(掌握) 通过一个