Spring MVC 框架搭建及详解

合集下载

spring mvc框架介绍

spring mvc框架介绍

spring mvc 框架介绍
Spring MVC 简介
Spring MVC 框架是有一个MVC 框架,通过实现Model-View- Controller 模式来很好地将数据、业务与展现进行分离。

从这样一个角度来
说,Spring MVC 和Struts、Struts2 非常类似。

Spring MVC 的设计是围绕DispatcherServlet 展开的,DispatcherServlet 负责将请求派发到特定的handler。

通过可配置的handler mappings、view resoluTIon、locale 以及theme resoluTIon 来处理请求并且转到对应的视图。

Spring MVC 请求处理的整体流
程如图:
Spring3.x 中定义一个控制器类,必须以@Controller 注解标记。

当控
制器类接收到一个请求时,它会在自己内部寻找一个合适的处理方法来处理
请求。

使用@RequestMapping 注解将方法映射到一些请求上,以便让该方法
处理那些请求。

这种方法就像一般的类中的方法,方法名参数列表和返回值
并不像Struts2 之类的框架有很强的限制。

方法参数列表具体以及返回值具体
都有哪些,这里先不细说。

这篇博客的目的在于简单介绍如何快速上手使用Spring MVC 框架。

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。

另外spring的aop,事务管理等等都是我们经常⽤到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。

mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。

mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。

在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。

使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。

spring MVC原理及配置

spring MVC原理及配置

spring MVC原理及配置springmvc原理及配置springmvc原理及配置1.springmvc详述:springmvc就是spring提供更多的一个强悍而有效率的web框架。

借助注释,springmvc提供更多了几乎就是pojo的研发模式,使控制器的研发和测试更加直观。

这些控制器通常不轻易处置命令,而是将其委托给spring上下文中的其他bean,通过spring的倚赖转化成功能,这些bean被转化成至控制器中。

springmvc主要由dispatcherservlet、处理器映射、处理器(控制器)、视图解析器、视图组成。

他的两个核心是两个核心:处理器映射:选择使用哪个控制器来处理请求视图解析器:选择结果应该如何渲染通过以上两点,springmvc确保了如何挑选掌控处置命令和如何挑选视图展现出输入之间的松耦合。

2.springmvc运行原理这里写图片描述(2)找寻处理器:由dispatcherservlet控制器查阅一个或多个handlermapping,找出处置命令的controller。

(3)调用处理器:dispatcherservlet将请求提交到controller。

(4)(5)调用业务处置和回到结果:controller调用业务逻辑处置后,回到modelandview。

3.springmvc接口解释(1)dispatcherservlet接口:spring提供的前端控制器,所有的请求都有经过它来统一分发。

在dispatcherservlet将请求分发给springcontroller 之前,需要借助于spring提供的handlermapping定位到具体的controller。

(2)handlermappingUSB:能够完成客户请求到controller映射。

(3)controller接口:须要为mammalian用户处置上述命令,因此同时实现controllerUSB时,必须确保线程安全并且可以器重。

最全最经典spring_mvc教程

最全最经典spring_mvc教程

spring mvc学习教程(一)-入门实例引言1.MVC:Model-View-Control框架性质的C层要完成的主要工作:封装web请求为一个数据对象、调用业务逻辑层来处理数据对象、返回处理数据结果及相应的视图给用户。

2.简要概述springmvcSpring C 层框架的核心是DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即使用了一种被称为Front Controller 的模式(后面对此模式有简要说明)。

Spring 的C 层框架使用了后端控制器来、映射处理器和视图解析器来共同完成C 层框架的主要工作。

并且spring 的C 层框架还真正地把业务层处理的数据结果和相应的视图拼成一个对象,即我们后面会经常用到的ModelAndView 对象。

一、入门实例1. 搭建环境在spring的官方API文档中,给出所有包的作用概述,现列举常用的包及相关作用:org.springframework.aop-3.0.5.RELEASE.jar:与Aop编程相关的包org.springframework.beans-3.0.5.RELEASE.jar:提供了简捷操作bean的接口org.springframework.context-3.0.5.RELEASE.jar:构建在beans包基础上,用来处理资源文件及国际化。

org.springframework.core-3.0.5.RELEASE.jar:spring核心包org.springframework.web-3.0.5.RELEASE.jar:web核心包,提供了web层接口org.springframework.web.servlet-3.0.5.RELEASE.jar:web 层的一个具体实包,DispatcherServlet也位于此包中。

后文全部在spring3.0 版本中进行,为了方便,建议在搭建环境中导入spring3.0 的所有jar 包(所有jar 包位于dist 目录下)。

springmvc框架搭建之xml配置说明(spring4+hibernate4)

springmvc框架搭建之xml配置说明(spring4+hibernate4)

SpringMVC框架搭建说明Spring4.1.4 + hibernate4.3.81、web.xml配置程序运行时从web.xml开始,加载顺序为:context-param -> listener -> filter ->structs (如果使用structs的话)-> servlet如下为web.xml的配置说明<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><!—-显示项目名称--><display-name>bmymis2</display-name><!-- 指定配置文件位置,contextConfigLocation是ContextLoaderListener中的一个参数,通过该参数在ContextLoaderListener中加载applicationContext-*.xml,并装配ApplicationContext --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-*.xml</param-value></context-param><!-- 定义SPRING监听器,启动Web容器时,自动装配ApplicationContext的配置信息--><listener><listener-class>org.springframework.web.context.ContextLoaderListener </listener-class></listener><!—-字符编码过滤器,解决中文乱码问题--><filter><filter-name>encodingFilter</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><!—- springmvc配置--><servlet><servlet-name>springServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup> //容器启动时首先初始化该servlet </servlet><servlet-mapping><servlet-name>springServlet</servlet-name><url-pattern>/</url-pattern> //表示所有页面都由springmvc处理</servlet-mapping><!—-浏览器输入到项目名,默认打开如下配置页面--><welcome-file-list><welcome-file>/web/login.jsp</welcome-file></welcome-file-list><!—-错误跳转页面--><error-page><error-code>404</error-code><location>/404.html</location></error-page></web-app>2、applicationContext-common.xml配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:xsi="/2001/XMLSchema-instance"xmlns:tx="/schema/tx"xmlns:aop="/schema/aop"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd"><!-- 加载资源文件其中包含变量信息,必须在Spring配置文件的最前面加载,即第一个加载--><context:property-placeholder location="classpath:application.properties"/><!—-扫描包路径选项,使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入,有了该配置,那么<context:annotation-config/>这个配置就可以省略(以下配置包含了<context:annotation-config/>配置)--><context:component-scan base-package="xxx.xxx.xxx"/><!-- 数据源配置,使用应用内的DBCP数据库连接池 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><!-- 定义数据库连接池数据源bean destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用--><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/></bean><!—Hibernate的注解配置 --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="hibernateProperties"><props><prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop><prop key="hibernate.dialect">${hibernate.dialect}</prop><prop key="hibernate.show_sql">${hibernate.show_sql}</prop></props></property><property name="packagesToScan" value="xxx.xxx.xxx.model" /></bean><!-- 配置Hibernate事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/></bean><!-- 配置事务异常封装 --><bean id="persistenceExceptionTranslationPostProcessor"class="org.springframework.dao.annotation.PersistenceExceptionTranslationPost Processor"/><!-- 声明式容器事务管理 ,transaction-manager指定事务管理器为transactionManager --> <tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED"/><tx:method name="get*" propagation="REQUIRED"/><tx:method name="*" read-only="true"/></tx:attributes></tx:advice><aop:config expose-proxy="true"><!-- 只对业务逻辑层实施事务 --><aop:pointcut id="txPointcut"expression="execution(*xxx.xxx.xxx.service..*.*(..))"/><!-- Advisor定义,切入点和通知分别为txPointcut、txAdvice --><aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/> </aop:config></beans>3、application.properties配置jdbc.driverClassName=org.postgresql.Driverjdbc.url=jdbc:postgresql://ip:5432/数据库名ername=postgresjdbc.password=123hibernate.dialect=org.hibernate.dialect.PostgreSQLDialecthibernate.show_sql=truehibernate.format_sql=false4、spring-mvc.xml配置<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xmlns:p="/schema/p"xmlns:xsi="/2001/XMLSchema-instance"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd/schema/mvc/schema/mvc/spring-mvc-3.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd"><!-- 启用spring mvc 注解 --><mvc:annotation-driven><!-- 自动扫描且只扫描@Controller --><context:component-scan base-package="xxx.xxx.xxx "use-default-filters="false"></context:component-scan><!-- 定义JSP文件的位置 --><beanclass="org.springframework.web.servlet.view.InternalResourceView Resolver"><property name="prefix"value="/jsp/"/><property name="suffix"value=".jsp"/></bean><!-- 容器默认的DefaultServletHandler处理所有静态内容与无RequestMapping处理的URL--> <mvc:default-servlet-handler/><!-- 定义无需Controller的url<->view直接映射 --><mvc:view-controller path="/"view-name="login"/></beans>。

SpringMVC框架搭建流程(完整详细版)

SpringMVC框架搭建流程(完整详细版)

SpringMVC框架搭建流程(完整详细版)SpringMVC框架搭建流程开发过程1)配置DispatcherServlet前端控制器2)开发处理具体业务逻辑的Handler(@Controller、 @RequestMapping)3) xml配置⽂件配置controller扫描,配置springmvc三⼤件4)将xml⽂件路径告诉springmvc(DispatcherServlet)详细流程:创建⽬录新建maven项⽬,注意选择webapp⾻架。

创建成功之后会发现没有src等⽬录,这些需要我们⼿动创建:在src下⾯新建main,main下⾯新建java⽬录,选择java⽬录,右键,在main下⾯继续新建resource⽬录,选择resource⽬录,右键,pom.xmlpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId></groupId><artifactId>springmvc-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>11</piler.source><piler.target>11</piler.target></properties><dependencies><!--引⼊spring webmvc的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/</path></configuration></plugin></plugins></build></project>注意Tomcat7插件是⽤来运⾏项⽬的,右侧运⾏:springmvc相关配置main⽂件夹下⾯新建webapp⽂件夹,webapp下⾯新建WEB-INF,下⾯新建web.xml<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><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:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><!--⽅式⼀:带后缀,⽐如*.action *.do *.aaa该种⽅式⽐较精确、⽅便,在以前和现在企业中都有很⼤的使⽤⽐例⽅式⼆:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)为什么配置为/ 会拦截静态资源因为tomcat容器中有⼀个web.xml(⽗),你的项⽬中也有⼀个web.xml(⼦),是⼀个继承关系⽗web.xml中有⼀个DefaultServlet, url-pattern 是⼀个 /此时我们⾃⼰的web.xml中也配置了⼀个 / ,覆写了⽗web.xml的配置为什么不拦截.jsp呢?因为⽗web.xml中有⼀个JspServlet,这个servlet拦截.jsp⽂件,⽽我们并没有覆写这个配置,所以springmvc此时不拦截jsp,jsp的处理交给了tomcat如何解决/拦截静态资源这件事?⽅式三:/* 拦截所有,包括.jsp--><!--拦截匹配规则的url请求,进⼊springmvc框架处理--><url-pattern>/</url-pattern></servlet-mapping></web-app>⾥⾯配置了springmvc相关的配置,引⼊了springmvc.xml:在resource⽬录下新建springmvc.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beanshttps:///schema/beans/spring-beans.xsd/schema/contexthttps:///schema/context/spring-context.xsd/schema/mvchttps:///schema/mvc/spring-mvc.xsd"><!--开启controller扫描--><context:component-scan base-package=".controller"/><!--配置springmvc的视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--⾃动注册最合适的处理器映射器,处理器适配器(调⽤handler⽅法)--><mvc:annotation-driven/></beans>在java⽬录下新建包.controller,下⾯新建DemoController:package .controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.Date;/*** @author lyj* @Title: DemoController* @ProjectName springmvc-demo* @Description: TODO* @date 2020/6/9 21:21*/@Controller@RequestMapping("/demo")public class DemoController {/*** http://localhost:8080/demo/handle01*/@RequestMapping("/handle01")public ModelAndView handle01(){Date date=new Date();ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("date",date);modelAndView.setViewName("success");return modelAndView;}}在WEB-INF下⾯新建jsp⽂件夹,下⾯新建success.jsp:<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>当前时间 ${date}</body></html>完毕后整个项⽬结构如下:测试:浏览器访问:。

SpringMVC框架详解

SpringMVC框架详解

SpringMVC框架详解随着Web应用程序变得越来越复杂,使用适当的框架变得越来越重要。

SpringMVC是一个流行的Java Web框架,它提供了许多功能,使开发Web应用程序更容易和更快速。

本文将对SpringMVC框架进行详细介绍,包括其架构、工作流程、控制器、视图和模型等方面的内容。

1. SpringMVC架构SpringMVC框架基于Model-View-Controller(MVC)架构。

在这种架构中,应用程序被分为三个组件,分别是:1. Model:负责管理数据的处理和存储。

2. View:负责呈现数据给用户的界面。

3. Controller:负责接收用户的请求和处理数据,控制应用程序的行为。

SpringMVC通过DispatcherServlet实现了这种MVC架构。

DispatcherServlet是一个前端控制器(Front Controller),它接收所有的客户端请求并将其分配给相应的处理程序。

2. SpringMVC的工作流程SpringMVC框架具有以下的工作流程:1. 用户发送请求到DispatcherServlet。

2. DispatcherServlet收到请求后,根据配置文件中的URL映射找到相应的Controller。

3. Controller接收请求,并将数据传递给Service层。

4. Service层对数据进行处理,并将处理结果返回给Controller。

5. Controller根据视图解析器的配置选择相应的视图,将处理结果传递给视图并渲染。

6. 视图呈现处理结果,并将其返回给客户端。

3. SpringMVC的控制器控制器是SpringMVC架构中最重要的组件之一。

它负责接收客户端请求,并根据请求的类型执行相应的逻辑。

SpringMVC提供了以下几种类型的控制器:1. @Controller:该注解标注的类被SpringMVC视为控制器。

2. @RestController:可以理解为@Controller和@ResponseBody的组合注解。

SpringMVC框架配置方法详解

SpringMVC框架配置方法详解

SpringMVC框架配置⽅法详解本⽂实例为⼤家分享了Spring MVC框架配置⽅法,供⼤家参考,具体内容如下1、概述 Spring MVC 作⽤:⽤来实现前端浏览器与后⾯程序的交互 Spring MVC 是基于Spring 的MVC框架,所谓MVC(model,controller,view) ,整个Spring MVC 作⽤就是,基于Spring 将model(数据)在controller(后台程序) ,view(前端浏览器)之间交互 ⾄于Spring MVC优点缺点,了解不深不作评价,2、引⽤的jar包 既然是基于Spring那么 Spring的核⼼jar包(beans,context,core,expression,commons-logging)是必须的;Spring MVC的相关Jar包有个(web,webmvc),特别包(aop)这个包不是必须,但如果基于注解,⽤以包扫描的时候就必需3、配置⽂件 配置⽂件,就是显式配置程序执⾏的初始化的⽂件。

配置⽂件如下:springmvc-config.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-4.3.xsd/schema/context/schema/context/spring-context-4.3.xsd/schema/mvc/schema/mvc/spring-mvc-4.3.xsd"><!--<context:component-scan base-package="com.itheima.controller"/>--><!-- 配置处理器Handle,映射“/firstController”请求 --><bean name="/firstController" class="com.itheima.controller.FirstController" /><!--<mvc:annotation-driven />--!><!-- 处理器映射器,将处理器Handle的name作为url进⾏查找 --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /><!-- 处理器适配器,配置对处理器中handleRequest()⽅法的调⽤--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean></beans>Web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd"version="3.1"><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:springmvc-config.xml</param-value></init-param><!-- 表⽰容器在启动时⽴即加载Servlet --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>图⽚来源()步骤:1、客户端发起访问,被Spring MVC的前端控制器拦截(DispatcherServlet ) 2、拦截器会找到映射器(handlerMapping),让映射器根据URL找到具体的bean,例如上⾯如果 URL"/firstController" 那么就找到了对应的Bean,并反馈给DispatcherServlet 3、DispatcherServlet将到找到的bean交给适配器(handlerAdapter),由适配器去调⽤对应的handler(执⾏bean中的⽅法) 4、执⾏完成后,将结果把返回给DispatcherServlet,然后由DispatcherServlet 交给视图解析器(ViewReslover) 5、视图解析完成后,再交给DispatcherServlet,然后交给view 渲染(⽐如 JSP)。

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SSI框架搭建SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6编号:SSI-SMVC3-S3-I3版本:V1.0级别:公开编写时间:2016-02-17目录1 导言 (1)1.1 目的 (1)1.2 范围 (1)1.3 说明 (1)2 搭建SpringMVC (2)2.1 搭建所需jar包 (2)2.2 其他依赖包 (3)2.3 搭建步骤 (4)2.3.1 创建项目 (4)2.3.2 导入jar包 (6)2.3.3 配置web.xml (7)2.3.4 配置spring-servlet.xml (9)2.3.5 配置applicationContext.xml (10)2.3.6 配置log4j.properties (10)3 整合mybatis (11)3.1 整合所需jar包 (11)3.2 其他依赖包 (11)3.3 整合步骤 (11)3.3.1 导入jar包 (11)3.3.2 配置config.properties (12)3.3.3 配置spring-dataSource.xml (12)3.3.4 配置applicationContext.xml (15)3.3.5 配置mybatis-config.xml (16)3.3.6 创建实体model (17)3.3.7 创建实例化dao (19)3.3.8 创建业务服务service (21)3.3.9 创建控制层controller (23)3.3.10 页面代码 (28)3.3.11 启动项目 (37)1导言1.1 目的本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。

1.2 范围本次框架搭建的版本是SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6,数据库采用的是mysql,在eclipse开发工具下搭建直接搭建的web项目,页面采用的是h5,ajax实现数据访问,如果页面为jsp等,则修改controller的返回类型即可。

Spring SpringMVC企业快速开发架构搭建解析

Spring SpringMVC企业快速开发架构搭建解析

Spring+SpringMVC企业快速开发架构搭建创建项目从2014年12月开始,一直在研究Spring的框架;并且在我们新的开发框架中得到应用;这篇文章记录了这段时间的成长记录,仅此先给共同成长的小白。

为了简单,我们选择使用maven来构建项目,通过maven可以控制引入jar的版本,大大简化了jar包的管理工作,废话不多说,创建一个项目一、创建一个新项目1、创建maven项目2、选择 maven-archetype-webapp3、填写groupId、artifactId、package项目目录:二、项目创建完成后修改默认的jdk、编译器等默认属性,我的项目选择的是jdk73、引入Spring的jarXml代码<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>3.2.12.RELEASE</spring.version><tddl.version>3.0.1.5.taobaocode-SNAPSHOT</tddl.version><druid.version>0.2.3</druid.version><cglib.version>2.1_3</cglib.version><aspectj.version>1.6.6</aspectj.version><jms.version>2.0</jms.version><jackson.version>1.9.5</jackson.version><poi.version>3.10.1</poi.version><mail.version>1.4.3</mail.version><atomikos.version>3.9.3</atomikos.version><mysql.version>5.1.34</mysql.version><redis.version>2.1.0</redis.version><jta.version>1.1</jta.version><activemq.version>5.10.0</activemq.version><servlet-api.version>5.5.23</servlet-api.version><fileupload.version>1.3.1</fileupload.version><fastjson.version>1.1.15</fastjson.version><json-lib.version>2.4</json-lib.version><jaxb-api.version>2.2.11</jaxb-api.version><jaxb-impl.version>2.1</jaxb-impl.version><woodstox.version>4.1.5</woodstox.version><activation.version>1.1.1</activation.version> <testng.version>6.8.13</testng.version><mockito.version>1.10.18</mockito.version> <unitils.version>3.4.2</unitils.version><java.version>1.7</java.version><jodd.version>3.3.8</jodd.version><jstl.version>1.2</jstl.version><file.encoding>utf-8</file.encoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- JSTL --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><!-- Spring --><dependency><groupId>org.springframework</groupId> <artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId> <version>${spring.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectj.version}</version></dependency><dependency><groupId>javax.jms</groupId><artifactId>javax.jms-api</artifactId><version>${jms.version}</version></dependency><dependency><groupId>javax.mail</groupId><artifactId>mailapi</artifactId><version>${mail.version}</version></dependency><!-- json --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>${json-lib.version}</version><classifier>jdk15</classifier></dependency><!-- MQ--><dependency><groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId><version>${activemq.version}</version></dependency><dependency><groupId>tomcat</groupId><artifactId>servlet-api</artifactId><version>${servlet-api.version}</version> </dependency><!-- 分布式事务处理 --><dependency><groupId>com.atomikos</groupId><artifactId>transactions-jta</artifactId> <version>${atomikos.version}</version> <optional>true</optional></dependency><dependency><groupId>com.atomikos</groupId><artifactId>transactions-jdbc</artifactId> <version>${atomikos.version}</version> <optional>true</optional></dependency><dependency><groupId>javax.transaction</groupId><artifactId>jta</artifactId><version>${jta.version}</version> <optional>true</optional></dependency><dependency><groupId>com.alibaba</groupId> <artifactId>druid</artifactId><version>1.0.9</version><optional>true</optional></dependency><!-- poi --><dependency><groupId>org.apache.poi</groupId> <artifactId>poi</artifactId><version>${poi.version}</version> </dependency><dependency><groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>${poi.version}</version> </dependency><!-- jackson --><dependency><groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>${jackson.version}</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib-nodep</artifactId> <version>${cglib.version}</version> </dependency><dependency><groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${fileupload.version}</version></dependency><dependency><groupId>org.jodd</groupId><artifactId>jodd</artifactId><version>${jodd.version}</version></dependency></dependencies>四、创建Spring的配置文件1、启动Spring需要在web.xml中配置监听,使用SpringMVC需要配置Spring的servlet Web.xml代码<?xml version="1.0" encoding="UTF-8"?><web-app><display-name>Archetype Created Web Application</display-name><error-page><exception-type>ng.Throwable</exception-type><location>/500.jsp</location></error-page><error-page><error-code>500</error-code><location>/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/404.jsp</location></error-page><!-- 装载spring 父上下文 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext*.xml</param-value></context-param><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener><!-- 支持MVC 装载子上下文 --><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><description>Spring MVC Configuration Location</description><param-name>contextConfigLocation</param-name><param-value>classpath:spring-*.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><filter><filter-name>encode</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>ssojcFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>2、Spring上下文配置文件ApplicationContext.xml用于配置Spring的通用配置Applicationcontext.xml代码<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="http://www.sprin /schema/p"xmlns:aop="/schema/aop" xmlns:tx="http://www.sprin /schema/tx"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd "><context:property-placeholder location="classpath:*.properties" /><!--dataSource--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="i nit" destroy-method="close"><!-- 基本属性 url、user、password --><property name="url" value="${jdbc.url}" /><property name="username" value="${erName}" /><property name="password" value="${jdbc.passWord}" /><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="${jdbc.initialSize}" /><property name="minIdle" value="${jdbc.minIdle}" /><property name="maxIdle" value="maxIdle" /><property name="maxActive" value="${jdbc.maxActive}" /><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="60000" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionR unsMillis}" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis} " /><property name="validationQuery" value="${jdbc.validationQuery}" /><property name="testWhileIdle" value="${jdbc.testWhileIdle}" /><property name="testOnBorrow" value="${jdbc.testOnBorrow}" /><property name="testOnReturn" value="${jdbc.testOnReturn}" /><property name="filters" value="${jdbc.filters}" /></bean><!--daoSupport--><bean id="jldaoSupport" class=".framework.dao.support.JLDeDaoSupport"><property name="dataSource" ref="dataSource"/></bean><bean id = "transactionManager" class="org.springframework.jdbc.datasource.DataSo urceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 声明式事务配置 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED" rollback-for="Throwable, Excepti on, RuntimeException"/><tx:method name="begin*" propagation="REQUIRED" rollback-for="Throwable, Exce ption, RuntimeException"/><tx:method name="end*" propagation="REQUIRED" rollback-for="Throwable, Excepti on, RuntimeException"/><tx:method name="update*" propagation="REQUIRED" rollback-for="Throwable, Exc eption, RuntimeException"/><tx:method name="del*" propagation="REQUIRED" rollback-for="Throwable, Excepti on, RuntimeException"/><tx:method name="do*" propagation="REQUIRED" rollback-for="Throwable, Exceptio n, RuntimeException"/><tx:method name="save*" propagation="REQUIRED" rollback-for="Throwable, Except ion, RuntimeException"/><tx:method name="modify*" propagation="REQUIRED" rollback-for="Throwable, Exc eption, RuntimeException"/><tx:method name="query*" propagation="NOT_SUPPORTED"/><tx:method name="get*" propagation="NOT_SUPPORTED"/><tx:method name="load*" propagation="NOT_SUPPORTED"/><tx:method name="find*" propagation="NOT_SUPPORTED"/><tx:method name="*" read-only="true" propagation="SUPPORTS" /></tx:attributes></tx:advice><!-- 内部服务 --><aop:config><aop:pointcut expression="execution(* ..service.*.*(..))" id="pointCut" /><aop:advisor pointcut-ref="pointCut" advice-ref="txAdvice"/></aop:config><!-- 对外服务 --><aop:config><aop:pointcut expression="execution(* ..service.soa.*.*(..))" id="pointCut_s oa" /><aop:advisor pointcut-ref="pointCut_soa" advice-ref="txAdvice"/></aop:config><!-- JMS --><aop:config><aop:pointcut expression="execution(* ..service.jms.receiver.*.*(..))" id="po intCut_jms" /><aop:advisor pointcut-ref="pointCut_jms" advice-ref="txAdvice"/></aop:config><!-- 定义过滤器 --><bean id="encode" class=".framework.web.filter.JLEncoderFilter"><property name="encode" value="UTF-8" /></bean></beans>3、SpringMVC配置Springmmc.xml代码<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="http://www.sprin /schema/p"xmlns:mvc="/schema/mvc" xmlns:context="http://ww /schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/schema/mvc/spring-mvc.xsd"><context:component-scan base-package=".*.web.controller"/><!-- mvc --><context:annotation-config /><!-- 使用ConfigurableWebBindingInitializer注册conversionService --><bean id="conversionService" class=".framework.converter.suport.JLConversi onService" init-method="init"><property name="converters"><set><bean class=".framework.converter.JLStringToTimestampConverter "><property name="formarts"><props><prop key="^\\d{4}-\\d{1,2}$">yyyy-MM</prop><prop key="^\\d{4}-\\d{1,2}-\\d{1,2}$">yyyy-MM-dd</prop><prop key="^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$">yyyy-MM-d d hh-mm</prop><prop key="^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$">yy yy-MM-dd hh-mm-ss</prop></props></property></bean></set></property></bean><bean id="webBindingInitializer" class="org.springframework.web.bind.support.Confi gurableWebBindingInitializer"><property name="conversionService" ref="conversionService"/></bean><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappin gHandlerAdapter"><property name="webBindingInitializer" ref="webBindingInitializer"/></bean><!-- 根据后缀支持多视图处理器 --><!-- 根据客户端的不同的请求决定不同的view进行响应, 如/blog/1.json /blog/1.xml --><bean id="viewResolver" class="org.springframework.web.servlet.view.ContentNegotiat ingViewResolver"><!-- 设置为true以忽略对Accept Header的支持 --><property name="ignoreAcceptHeader" value="true" /><!-- 在没有扩展名时即: "/blog/1" 时的默认展现形式 --><property name="defaultContentType" value="application/json" /><!-- 扩展名至mimeType的映射,即 /blog.json => application/json --> <property name="mediaTypes"><map><entry key="html" value="text/html" /><entry key="jsp" value="text/html" /><entry key="pdf" value="application/pdf" /><entry key="xsl" value="application/vnd.ms-excel" /><entry key="xslx" value="application/vnd.ms-excel" /><entry key="xml" value="application/xml" /><entry key="json" value="application/json" /></map></property><!-- 用于开启 /blog/123?format=json 的支持 --><property name="favorParameter" value="true" /><!-- 视图解析器 --><property name="viewResolvers"><list><!-- jsp解析 --><ref bean="jspRseolver"/><ref bean="beanRseolver"/></property><property name="defaultViews"><list><!-- for application/json --><bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /></list></property></bean><!-- 声明视图解析的对象 --><bean id="beanRseolver" class="org.springframework.web.servlet.view.BeanNameView Resolver" /><bean id="multipartRseolver" class=" monsMultipartResolver"><property name="maxUploadSize" value="5000000" /></bean><bean id="jspRseolver" class="org.springframework.web.servlet.view.InternalResource ViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp"></property><!-- 转向异常处理页面 --><bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolve r"><!-- 定义默认的异常处理页面,当该异常类型的注册时使用 --><property name="defaultErrorView" value="error/error" /><!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception --><property name="exceptionAttribute" value="ex" /><!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常也页名作为值 --><property name="exceptionMappings"><props><!-- 这里还可以继续扩展对不同异常类型的处理 --><prop key=".framework.exception.ValidateException">/error/error </prop><prop key=".framework.exception.SessionException">/error/login< /prop></props></property></bean><!-- 输出对象转String支持 --><bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessa geConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value></list></property></bean><!-- 输出对象转JSON支持 --><bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJack sonHttpMessageConverter" /><bean id="byteArrayConverter" class="org.springframework.http.converter.ByteArrayHt tpMessageConverter" /><bean id="resourceConverter" class="org.springframework.http.converter.ResourceHttp MessageConverter" /><bean id="sourceConverter" class="org.springframework.http.converter.xml.SourceHttp MessageConverter" /><bean id="xmlAwareFormConverter" class="org.springframework.http.converter.xml.X mlAwareFormHttpMessageConverter" /><bean id="jaxb2RootElementConverter" class="org.springframework.http.converter.xml. Jaxb2RootElementHttpMessageConverter" /><bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandl erAdapter"><property name="messageConverters"><list><ref bean="stringConverter" /><ref bean="jsonConverter" /><ref bean="byteArrayConverter" /><ref bean="resourceConverter" /><ref bean="sourceConverter" /><ref bean="xmlAwareFormConverter" /><ref bean="jaxb2RootElementConverter" /></list></property></bean><!-- URL映射管理器 --><bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandl erMapping"><property name="order" value="0"/><property name="useDefaultSuffixPattern" value="true"/><!-- 拦截器 --><property name="interceptors"><list><!--会话管理的拦截器 --><ref bean="userInfoInterceptor"/></list></property></bean><bean id="userInfoInterceptor" class="erInfoI nterceptor" /><!--<mvc:interceptors><mvc:interceptor><mvc:mapping path="/*"/><ref bean="securityInterceptor"/></mvc:interceptor><mvc:interceptor><mvc:mapping path="/*"/><ref bean="userInfoInterceptor"/></mvc:interceptor></mvc:interceptors>--></beans>完成以上操作一个完整的SpringMVC项目就创建完成了!更多详情见请继续阅读下一页的精彩内容:/Linux/2015-0 9/122942p2.htm--------------------------------------分割线 --------------------------------------。

SpringMVC框架知识点详解

SpringMVC框架知识点详解

SpringMVC框架知识点详解官⽅的下载⽹址是:⼀、Spring MVC简介1.1Spring MVC⼯作流程映射器:主要是根据浏览器上输⼊的url来映射所有满⾜要求的Handle(控制器类)适配器:主要是决定调⽤哪个Handler来实现具体的业务逻辑1.2Spring MVC VS Struts21)springmvc的⼊⼝是⼀个servlet,即前端控制器;struts2⼊⼝是⼀个filter过虑器,即前端过滤器,2)springmvc是基于⽅法开发(控制器类是单例的,不可能维护实体变量),传递参数是通过⽅法形参,可以设计为单例;struts2是基于类开发(维护⼀个实体变量),传递参数是通过类的属性,只能设计为多例3)springmvc通过参数解析器是将request对象内容进⾏解析成⽅法形参,将响应数据和页⾯封装成ModelAndView对象,最后⼜将模型数据通过request对象传输到页⾯;struts采⽤值栈存储请求和响应的数据,通过OGNL存取数据4)springmvc开发运⾏速度快于struts2⼆、Spring MVC⼯程搭建(xml)2.1导⼊springioc,springweb , springmvc相关的jar包2.2在/WEB-INF/ web.xml⽂件配置SpringMVC的前端控制器DispatcherServlet(前端控制器)<!-- 注册springmvc核⼼控制器 --><servlet><!-- servlet-name名字随便写 --><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 通知DispatcherServlet去指定的⽬录下加载springmvc.xml配置⽂件classpath:是在⼯程的src路径下寻找如果不配置init-param的话,控制器会⾃动寻找/WEB-INF/<servlet-name>-servlet.xml⽂件--><init-param><!-- 值是固定的,相当于键值对 --><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>*.action</url-pattern>//拦截请求</servlet-mapping>注:在默认情况下:springmvc框架的配置⽂件必须叫<servlet-name>-servlet.xml且必须放在/WEB-INF/⽬录下,我们可以在web.xml⽂件中,为DispatcherServlet配置⼀个初始化参数,让它去我们指定的⽬录下加载springmvc.xml配置⽂件2.3配置springmvc.xml注:该配置⽂件的命名规则遵循web.xml⽂件中核⼼控制器配置。

springmvc教程

springmvc教程

springmvc教程Spring MVC是一种基于Java的Web应用开发框架,它是Spring框架的一部分,广泛应用于企业级的Java开发中。

相比于其他的Web框架,Spring MVC具有灵活性高、易于维护、测试和扩展等优势。

本篇文章将为大家介绍Spring MVC的基本概念、核心特性以及使用方法。

首先,我们需要了解Spring MVC的基本概念。

Spring MVC使用了经典的MVC(Model-View-Controller)设计模式,将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。

模型表示封装了业务数据的Java对象,视图负责显示用户界面,控制器起到了调度和协调的作用。

Spring MVC的核心特性包括:1. 基于注解的处理器映射:Spring MVC使用注解来标注处理请求的方法,简化了URL到处理器的映射配置。

2. 强大的数据绑定支持:Spring MVC提供了丰富的数据绑定功能,可以将请求参数绑定到方法参数、表单对象或者JavaBean中,并支持数据校验。

3. 灵活的视图解析:Spring MVC支持多种视图技术,包括JSP、Freemarker、Thymeleaf等,而且可以根据请求的内容类型动态选择视图。

4. 高效的请求处理流程:Spring MVC采用了前端控制器模式,将请求的处理流程交给统一的调度器(DispatcherServlet)来管理,通过HandlerMapping匹配处理器,然后由HandlerAdapter调用方法处理请求,最后由ViewResolver解析视图并返回给客户端。

5. 可扩展性强:Spring MVC提供了丰富的可扩展点,如拦截器、处理器适配器和视图解析器等,可以通过自定义实现来满足不同的需求。

接下来,我们将通过一个简单的例子来演示Spring MVC的使用方法。

首先,我们需要在Maven中添加相关依赖,如spring-webmvc、javax.servlet-api等。

springMVC配置(XML配置详解)

springMVC配置(XML配置详解)

springMVC配置(XML配置详解)原⽂出⾃:web.xml配置:servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><description>加载/WEB-INF/spring-mvc/⽬录下的所有XML作为Spring MVC的配置⽂件</description><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-mvc/*.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>*.htm</url-pattern></servlet-mapping>这样,所有的.htm的请求,都会被DispatcherServlet处理;初始化 DispatcherServlet 时,该框架在 web 应⽤程序WEB-INF ⽬录中寻找⼀个名为[servlet-名称]-servlet.xml的⽂件,并在那⾥定义相关的Beans,重写在全局中定义的任何Beans,像上⾯的web.xml中的代码,对应的是dispatcher-servlet.xml;当然也可以使⽤<init-param>元素,⼿动指定配置⽂件的路径;dispatcher-servlet.xml 配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:mvc="/schema/mvc"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd/schema/aop/schema/aop/spring-aop-3.0.xsd/schema/tx/schema/tx/spring-tx-3.0.xsd/schema/mvc/schema/mvc/spring-mvc-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd"><!--使Spring⽀持⾃动检测组件,如注解的Controller--><context:component-scan base-package="com.minx.crm.web.controller"/><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/jsp/"p:suffix=".jsp" /></beans>第⼀个Controller:package com.minx.crm.web.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class IndexController {@RequestMapping("/index")public String index() {return "index";}}@Controller注解标识⼀个控制器,@RequestMapping注解标记⼀个访问的路径(/index.htm),return "index"标记返回视图(index.jsp);注:如果@RequestMapping注解在类级别上,则表⽰⼀相对路径,在⽅法级别上,则标记访问的路径;从@RequestMapping注解标记的访问路径中获取参数:Spring MVC ⽀持RESTful风格的URL参数,如:@Controllerpublic class IndexController {@RequestMapping("/index/{username}")public String index(@PathVariable("username") String username) {System.out.print(username);return "index";}}在@RequestMapping中定义访问页⾯的URL模版,使⽤{}传⼊页⾯参数,使⽤@PathVariable 获取传⼊参数,即可通过地址:http://localhost:8080/crm/index/tanqimin.htm 访问;根据不同的Web请求⽅法,映射到不同的处理⽅法:使⽤登陆页⾯作⽰例,定义两个⽅法分辨对使⽤GET请求和使⽤POST请求访问login.htm时的响应。

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。

之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。

以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。

这次,先说说三大框架整合过程。

个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助。

不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。

实践出真知。

(可通过图片水印查看博客地址)1、基本概念1.1、SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。

它是为了解决企业应用开发的复杂性而创建的。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

然而,Spring的用途不仅限于服务器端的开发。

从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、SpringMVCSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。

Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、MyBatisMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

SpringMVC详细流程(一)

SpringMVC详细流程(一)

SpringMVC详细流程(⼀) Spring Web MVC是⼀种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使⽤了MVC架构模式的思想,将web层进⾏职责解耦,基于请求驱动指的就是使⽤请求-响应模型,框架的⽬的就是帮助我们简化开发,Spring Web MVC也是要简化我们⽇常Web开发的。

与之相反的是基于组件的、事件驱动的Web框架,如Tapestry、JSF等。

Spring Web MVC也是服务到⼯作者模式的实现,但进⾏可优化。

前端控制器是DispatcherServlet;应⽤控制器其实拆为处理器映射器(Handler Mapping)进⾏处理器管理和视图解析器(View Resolver)进⾏视图管理;页⾯控制器/动作/处理器为Controller接⼝(仅包含ModelAndView handleRequest(request, response) ⽅法)的实现(也可以是任何的POJO类);⽀持本地化(Locale)解析、主题(Theme)解析及⽂件上传等;提供了⾮常灵活的数据验证、格式化和数据绑定机制;提供了强⼤的约定⼤于配置(惯例优先原则)的契约式编程⽀持。

SpringMVC在Web应⽤中充当控制层(Controller)的⾓⾊,对请求进⾏分发处理。

1. 整体流程具体步骤:⾸先⽤户发送请求到前端控制器,前端控制器根据请求信息(如URL)来决定选择哪⼀个页⾯控制器进⾏处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;页⾯控制器接收到请求后,进⾏功能处理,⾸先需要收集和绑定请求参数到⼀个对象,这个对象在Spring Web MVC 中叫命令对象,并进⾏验证,然后将命令对象委托给业务对象进⾏处理;处理完毕后返回⼀个 ModelAndView(模型数据和逻辑视图名);图中的 3、4、5 步骤;前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进⾏渲染,并把模型数据传⼊以便视图渲染;图中的步骤6、7;前端控制器再次收回控制权,将响应返回给⽤户,图中的步骤 8;⾄此整个结束。

使用Maven创建spring MVC项目详解

使用Maven创建spring MVC项目详解

使用Maven创建spring MVC项目详解上一篇讲解了Maven入门及如何与Eclipse集成使用,本篇将讲述如何使用Maven创建一个spring MVC项目。

一配置Maven项目1.1新建Maven项目选择Maven Project选中默认工作空间位置选择webapp project填写项目信息新建后的项目结构1.2项目配置新建后的项目结构从直观上看是少了一些文件夹,应该有src/main/java和src/test/java,打开项目构建路径窗口,提示少了两项构建路径条目,此时我们可以通过更换项目执行环境(JRE)来解决。

选中缺省jre我们选中缺省的jre后,点击完成,再查看下项目结构。

此时,src/main/java和src/test/java已经显示出来了。

我们再新建一个src/test/resources源文件夹,再打开构建路径窗口做如下配置。

此时,一个Maven Web项目算是搭建起来了,接下来进行开发配置。

二项目配置文件2.1 配置POM下面的配置是创建spring MVC项目的POM配置,Maven会自动帮我们下载相应的jar包至本地仓库,主要内容如下。

2.2 其他配置接下来还要新建spring的配置文件:applicationContext-beans.xml 和springMVC.xml文件,之后配置web.xml,这些过程和之前非Maven 项目配置内容一致。

applicationContext-beans.xml文件内容大抵如下springMVC.xml文件内容大抵如下web.xml文件内容大抵如下三验证配置3.1 新建业务类WEB-INF文件夹下新建jsp文件夹,然后创建test.jsp文件,内容如下3.2 发布项目右键项目属性,在弹出的属性窗口中点击Project Facets,选中Dynamic Web Module,然后配置Web Module,再点击Runtimes选项卡,选择部署的应用服务器。

Spring MVC 框架

Spring MVC 框架

我介绍 Spring MVC 框架。

就像在以前的文章中一样,我用银行示例介绍如何建模和构建简单的应用程序。

示例应用程序包含了已经学过的一些技术(例如依赖注入),但是主要演示 Spring MVC 的特性。

在开始之前,请下载这篇文章的源代码。

请参阅参考资料访问 Spring 框架和 Tomcat 5.0,运行示例需要它们。

Spring MVC 框架Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。

使用 Spring 可插入的 MVC架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。

通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。

Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。

Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

Spring 的 Web MVC 框架是围绕DispatcherServlet设计的,它把请求分派给处理程序,同时带有可配置的处理程序映射、视图解析、本地语言、主题解析以及上载文件支持。

默认的处理程序是非常简单的Controller接口,只有一个方法ModelAndView handleRequest(request, response)。

Spring 提供了一个控制器层次结构,可以派生子类。

如果应用程序需要处理用户输入表单,那么可以继承AbstractFormController。

如果需要把多页输入处理到一个表单,那么可以继承AbstractWizardFormController。

示例应用程序有助于直观地学习这些特性。

银行应用程序允许用户检索他们的帐户信息。

在构建银行应用程序的过程中,可以学到如何配置 Spring MVC 框架和实现框架的视图层,视图层包括 JSTL 标记(用于显示输出的数据)和JavaServer Pages 技术。

使用Maven搭建SpringMVC项目的步骤(图文教程)

使用Maven搭建SpringMVC项目的步骤(图文教程)

使⽤Maven搭建SpringMVC项⽬的步骤(图⽂教程)约定电脑都安装了eclipse,且已配置好Maven以及eclipse插件。

1.Eclipse 2.maven1、新建⼀个Maven Project2、选择⼯作空间3、搭建Web⼯程,我们选择maven-archetype-webapp类型4、填写项⽬参数,如图5、以上步骤完成时的⼯程结构⽬录6、可以查看或修改发布⽬录7、确保勾选上Dynamic Web Module和Java8、完成以上步骤,我们的⼯程就是⼀个Web项⽬了,接着我们赋予⼯程的springmvc特性,配置web.xml,使其具有springmvc 特性,主要配置两处,⼀个是ContextLoaderListener,⼀个是DispatcherServlet。

代码如下:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><!-- 配置web.xml,使其具有springmvc特性,主要配置两处,⼀个是ContextLoaderListener,⼀个是DispatcherServlet --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><!-- 配置ContextLoaderListener表⽰,该⼯程要以spring的⽅式启动。

01-SpringMVC、三层架构、组件、请求参数绑定、常用注解

01-SpringMVC、三层架构、组件、请求参数绑定、常用注解

01-SpringMVC、三层架构、组件、请求参数绑定、常⽤注解⼀、SpringMVC的基本概念1.1、关于三层架构和MVC1.1.1、三层架构开发架构⼀般都是基于两种形式,⼀种是 C/S 架构,也就是客户端/服务器,另⼀种是 B/S 架构,也就 是浏览器服务器。

在 JavaEE 开发中,⼏乎全都是基于 B/S架构的开发。

那么在 B/S架构中,系统标准的三层架构 包括:表现层、业务层、持久层。

三层架构在实际开发中使⽤的⾮常多。

三层架构中:表现层:也就是我们常说的web层。

它负责接收客户端请求,向客户端响应结果,通常客户端使⽤http协议请求 web 层,web 需要接收 http 请求,完成 http 响应。

表现层包括展⽰层和控制层:控制层负责接收请求,展⽰层负责结果的展⽰。

表现层业务层:也就是我们常说的 service 层。

它负责业务逻辑处理,和我们开发项⽬的需求息息相关。

web 层依赖业务层,但是业务层不依赖 web 层。

业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务⼀致性。

(也就是我们说持久层:也就是我们是常说的 dao 层。

负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进⾏持久化的载体,数据访问层是业务层和持久层交互的接⼝,业务层需要通过数据访问层将数据持久化到数据库中。

通俗的讲,持久层就1.1.2、MVC模型MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写, 是⼀种⽤于设计创建 Web 应⽤程序表现层的模式。

MVC 中每个部分各司其职:Model(模型): 通常指的就是我们的数据模型。

作⽤⼀般情况下⽤于封装数据。

View(视图): 通常指的就是我们的 jsp 或者 html。

作⽤⼀般就是展⽰数据的。

通常视图是依据模型数据创建的。

Controller(控制器): 是应⽤程序中处理⽤户交互的部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spring MVC 环境搭建及详解一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)1. jar包引入Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-nodep-2.1_3.jarHibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.GA.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar包2. web.xml配置(部分)<!-- Spring MVC配置 --><!-- ====================================== --><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</se rvlet-class><!--可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml<init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-servlet.xml</param-value> 默认</init-param>--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><!-- Spring配置 --><!-- ====================================== --><listener><listener-class>org.springframework.web.context.ContextLoaderListene r</listener-class></listener><!--指定Spring Bean的配置文件所在目录。

默认配置在WEB-INF目录下 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:config/applicationContext.xml</param-value> </context-param>3. spring-servlet.xml配置spring-servlet这个名字是因为上面web.xml中<servlet-name>标签配的值为spring(<servlet-name>spring</servlet-name>),再加上“-servlet”后缀而形成的spring-servlet.xml文件名,如果改为springMVC,对应的文件名则为springMVC-servlet.xml。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd/schema/aop/schema/aop/spring-aop-3.0.xsd/schema/tx/schema/tx/spring-tx-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd"><!--启用spring mvc注解 --><context:annotation-config /><!--设置使用注解的类所在的jar包 --><context:component-scanbase-package="controller"></context:component-scan><!--完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandle rAdapter" /><!--对转向页面的路径解析。

prefix:前缀, suffix:后缀 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" /></beans>4. applicationContext.xml配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.5.xsd/schema/aop/schema/aop/spring-aop-2.5.xsd/schema/tx/schema/tx/spring-tx-2.5.xsd"><!--采用hibernate.cfg.xml方式配置数据源 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation"><value>classpath:config/hibernate.cfg.xml</value> </property></bean><!--将事务与Hibernate关联 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!--事务(注解)--><tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/><!--测试Service --><bean id="loginService" class="service.LoginService"></bean><!--测试Dao --><bean id="hibernateDao" class="dao.HibernateDao"><property name="sessionFactory"ref="sessionFactory"></property></bean></beans>二、详解Spring MVC与Struts从原理上很相似(都是基于MVC架构),都有一个控制页面请求的Servlet,处理完后跳转页面。

看如下代码(注解):package controller;importjavax.servlet.http.HttpServletRequest;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;er;@Controller //类似Struts的Actionpublic class TestController {@RequestMapping("test/login.do") // 请求url地址映射,类似Struts的action-mappingpublic String testLogin(@RequestParam(value="username")String username, String password, HttpServletRequest request) {// @RequestParam是指请求url地址映射中必须含有的参数(除非属性required=false)// @RequestParam可简写为:@RequestParam("username")if (!"admin".equals(username) || !"admin".equals(password)) {return "loginError"; // 跳转页面路径(默认为转发),该路径不需要包含spring-servlet配置文件中配置的前缀和后缀}return "loginSuccess";}@RequestMapping("/test/login2.do")publicModelAndView testLogin2(String username, String password, int age){// request和response不必非要出现在方法中,如果用不上的话可以去掉// 参数的名称是与页面控件的name相匹配,参数类型会自动被转换if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {return new ModelAndView("loginError"); // 手动实例化ModelAndView完成跳转页面(转发),效果等同于上面的方法返回字符串}return new ModelAndView(new RedirectView("../index.jsp")); // 采用重定向方式跳转页面// 重定向还有一种简单写法// return new ModelAndView("redirect:../index.jsp");}@RequestMapping("/test/login3.do")publicModelAndView testLogin3(User user) {// 同样支持参数为表单对象,类似于Struts的ActionForm,User不需要任何配置,直接写即可String username = user.getUsername();String password = user.getPassword();int age = user.getAge();if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {return new ModelAndView("loginError");}return new ModelAndView("loginSuccess");}@Resource(name = "loginService") // 获取applicationContext.xml中bean 的id为loginService的,并注入private LoginServiceloginService; //等价于spring传统注入方式写get和set 方法,这样的好处是简洁工整,省去了不必要得代码@RequestMapping("/test/login4.do")public String testLogin4(User user) {if (loginService.login(user) == false) {return "loginError";}return "loginSuccess";}}以上4个方法示例,是一个Controller里含有不同的请求url,也可以采用一个url访问,通过url参数来区分访问不同的方法,代码如下:package controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;@Controller@RequestMapping("/test2/login.do") // 指定唯一一个*.do请求关联到该Controller public class TestController2 {@RequestMappingpublic String testLogin(String username, String password, int age) { // 如果不加任何参数,则在请求/test2/login.do时,便默认执行该方法if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {return "loginError";}return "loginSuccess";}@RequestMapping(params = "method=1", method=RequestMethod.POST)public String testLogin2(String username, String password) {// 依据params的参数method的值来区分不同的调用方法// 可以指定页面请求方式的类型,默认为get请求if (!"admin".equals(username) || !"admin".equals(password)) {return "loginError";}return "loginSuccess";}@RequestMapping(params = "method=2")public String testLogin3(String username, String password, int age) { if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {return "loginError";}return "loginSuccess";}}其实RequestMapping在Class上,可看做是父Request请求url,而RequestMapping 在方法上的可看做是子Request请求url,父子请求url最终会拼起来与页面请求url进行匹配,因此RequestMapping也可以这么写:package controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("/test3/*") // 父request请求urlpublic class TestController3 {@RequestMapping("login.do") // 子request请求url,拼接后等价于/test3/login.dopublic String testLogin(String username, String password, int age) { if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {return "loginError";}return "loginSuccess";}}。

相关文档
最新文档