学习SpringMVC系列教程(一)Spring MVC入门

学习SpringMVC系列教程(一)Spring MVC入门
学习SpringMVC系列教程(一)Spring MVC入门

2.1、Spring Web MVC是什么

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)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

2.2、Spring Web MVC能帮我们做什么

√让我们能非常简单的设计出干净的Web层和薄薄的Web层;

√进行更简洁的Web层的开发;

√天生与Spring框架集成(如IoC容器、AOP等);

√提供强大的约定大于配置的契约式编程支持;

√能简单的进行Web层的单元测试;

√支持灵活的URL到页面控制器的映射;

√非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用);

√非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;

√提供一套强大的JSP标签库,简化JSP开发;

√支持灵活的本地化、主题等解析;

√更加简单的异常处理;

√对静态资源的支持;

√支持Restful风格。

2.3、Spring Web MVC架构

Spring Web MVC框架也是一个基于请求驱动的Web框架,并且也使用了前端控制器模式来进行设计,再根据请求映射规则分发给相应的页面控制器(动作/处理器)进行处理。首先让我们整体看一下Spring Web MVC处理请求的流程:

2.3.1、Spring Web MVC处理请求的流程

如图2-1

图2-1

具体执行步骤如下:

1、首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图2-1中的1、2步骤;

2、页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图2-1中的

3、

4、5步骤;

3、前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;

4、前端控制器再次收回控制权,将响应返回给用户,图2-1中的步骤8;至此整个结束。

问题:

1、请求如何给前端控制器?

2、前端控制器如何根据请求信息选择页面控制器进行功能处理?

3、如何支持多种页面控制器呢?

4、如何页面控制器如何使用业务对象?

5、页面控制器如何返回模型数据?

6、前端控制器如何根据页面控制器返回的逻辑视图名选择具体的视图进行渲染?

7、不同的视图技术如何使用相应的模型数据?

首先我们知道有如上问题,那这些问题如何解决呢?请让我们先继续,在后边依次回答。

2.3.2、Spring Web MVC架构

1、Spring Web MVC核心架构图,如图2-2

图2-2

架构图对应的DispatcherServlet核心代码如下:

Java Code复制内容到剪贴板

1.//前端控制器分派方法

2.protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {

3. HttpServletRequest processedRequest = request;

4. HandlerExecutionChain mappedHandler = null;

5.int interceptorIndex = -1;

6.

7.try {

8. ModelAndView mv;

9.boolean errorView = false;

10.

11.try {

12.//检查是否是请求是否是multipart(如文件上传),如果是将通过MultipartResolver解析

13. processedRequest = checkMultipart(request);

14.//步骤2、请求到处理器(页面控制器)的映射,通过HandlerMapping进行映射

15. mappedHandler = getHandler(processedRequest, false);

16.if (mappedHandler == null || mappedHandler.getHandler() == null) {

17. noHandlerFound(processedRequest, response);

18.return;

19. }

20.//步骤3、处理器适配,即将我们的处理器包装成相应的适配器(从而支持多种类型的处理器)

21. HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());

22.

23.// 304 Not Modified缓存支持

24.//此处省略具体代码

25.

26.// 执行处理器相关的拦截器的预处理(HandlerInterceptor.preHandle)

27.//此处省略具体代码

28.

29.// 步骤4、由适配器执行处理器(调用处理器相应功能处理方法)

30. mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

31.

32.// Do we need view name translation?

33.if (mv != null && !mv.hasView()) {

34. mv.setViewName(getDefaultViewName(request));

35. }

36.

37.// 执行处理器相关的拦截器的后处理(HandlerInterceptor.postHandle)

38.//此处省略具体代码

39. }

40.catch (ModelAndViewDefiningException ex) {

41. logger.debug("ModelAndViewDefiningException encountered", ex);

42. mv = ex.getModelAndView();

43. }

44.catch (Exception ex) {

45. Object handler = (mappedHandler != null ? mappedHandler.getHandler() : null);

46. mv = processHandlerException(processedRequest, response, handler, ex);

47. errorView = (mv != null);

48. }

49.

50.//步骤5 步骤6、解析视图并进行视图的渲染

51.//步骤5 由ViewResolver解析View(viewResolver.resolveViewName(viewName, locale))

52.//步骤6 视图在渲染时会把Model传入(view.render(mv.getModelInternal(), request, response);)

53.if (mv != null && !mv.wasCleared()) {

54. render(mv, processedRequest, response);

55.if (errorView) {

56. WebUtils.clearErrorRequestAttributes(request);

57. }

58. }

59.else {

60.if (logger.isDebugEnabled()) {

61. logger.debug("Null ModelAndView returned to DispatcherServlet with name '" + getServletName() +

62."': assuming HandlerAdapter completed request handling");

63. }

64. }

65.

66.// 执行处理器相关的拦截器的完成后处理(HandlerInterceptor.afterCompletion)

67.//此处省略具体代码

68.

69.

70.catch (Exception ex) {

71.// Trigger after-completion for thrown exception.

72. triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);

73.throw ex;

74. }

75.catch (Error err) {

76. ServletException ex = new NestedServletException("Handler processing failed", err);

77.// Trigger after-completion for thrown exception.

78. triggerAfterCompletion(mappedHandler, interceptorIndex, processedRequest, response, ex);

79.throw ex;

80. }

81.

82.finally {

83.// Clean up any resources used by a multipart request.

84.if (processedRequest != request) {

85. cleanupMultipart(processedRequest);

86. }

87. }

88. }

核心架构的具体流程步骤如下:

1、首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制;

2、DispatcherServlet——>HandlerMapping,HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;

3、DispatcherServlet——>HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;

4、HandlerAdapter——>处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);

5、ModelAndView的逻辑视图名——> ViewResolver,ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;

6、View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;

7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

此处我们只是讲了核心流程,没有考虑拦截器、本地解析、文件上传解析等,后边再细述。

到此,再来看我们前边提出的问题:

1、请求如何给前端控制器?这个应该在web.xml中进行部署描述,在HelloWorld中详细讲解。

2、前端控制器如何根据请求信息选择页面控制器进行功能处理?我们需要配置HandlerMapping进行映射

3、如何支持多种页面控制器呢?配置HandlerAdapter从而支持多种类型的页面控制器

4、如何页面控制器如何使用业务对象?可以预料到,肯定利用Spring IoC容器的依赖注入功能

5、页面控制器如何返回模型数据?使用ModelAndView返回

6、前端控制器如何根据页面控制器返回的逻辑视图名选择具体的视图进行渲染?使用ViewResolver进行解析

7、不同的视图技术如何使用相应的模型数据?因为Model是一个Map数据结构,很容易支持其他视图技术

在此我们可以看出具体的核心开发步骤:

1、DispatcherServlet在web.xml中的部署描述,从而拦截请求到Spring Web MVC

2、HandlerMapping的配置,从而将请求映射到处理器

3、HandlerAdapter的配置,从而支持多种类型的处理器

4、ViewResolver的配置,从而将逻辑视图名解析为具体视图技术

5、处理器(页面控制器)的配置,从而进行功能处理

上边的开发步骤我们会在Hello World中详细验证。

2.4、Spring Web MVC优势

1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器(Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。

2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要;

3、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;

4、和Spring 其他框架无缝集成,是其它Web框架所不具备的;

5、可适配,通过HandlerAdapter可以支持任意的类作为处理器;

6、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;

7、功能强大的数据验证、格式化、绑定机制;

8、利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;

9、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。

10、强大的JSP标签库,使JSP编写更容易。

………………还有比如RESTful风格的支持、简单的文件上传、约定大于配置的契约式编程支持、基于注解的零配置支持等等。

到此我们已经简单的了解了Spring Web MVC,接下来让我们来个实例来具体使用下这个框架。

2.5、Hello World入门

2.5.1、准备开发环境和运行环境:

☆开发工具:eclipse

☆运行环境:tomcat6.0.20

☆工程:动态web工程(springmvc-chapter2)

☆spring框架下载:

spring-framework-3.1.1.RELEASE-with-docs.zip

☆依赖jar包:

1、Spring框架jar包:

为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB-INF/lib目录下;

2、Spring框架依赖的jar包:

需要添加Apache commons logging日志,此处使用的是commons.logging-1.1.1.jar;需要添加jstl标签库支持,此处使用的是jstl-1.1.2.jar和standard-1.1.2.jar;

2.5.2、前端控制器的配置

在我们的web.xml中添加如下配置:

XML/HTML Code复制内容到剪贴板

1.

2.chapter2

3.org.springframework.web.servlet.DispatcherServlet

4.1

5.

6.

7.chapter2

8./

9.

load-on-startup:表示启动容器时初始化该Servlet;

url-pattern:表示哪些请求交给Spring Web MVC处理,“/”是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。

自此请求已交给Spring Web MVC框架处理,因此我们需要配置Spring的配置文件,默认DispatcherServlet会加载WEB-INF/[DispatcherServlet 的Servlet名字]-servlet.xml配置文件。本示例为WEB-INF/ chapter2-servlet.xml。

2.5.3、在Spring配置文件中配置HandlerMapping、HandlerAdapter

具体配置在WEB-INF/ chapter2-servlet.xml文件中:

XML/HTML Code复制内容到剪贴板

1.

第一个SpringMVC例子

第23章 Spring的Web架构 同Struts 2框架一样,Spring也可以给Web开发者提供一个MVC框架。虽然Web框架只是Spring的一个模块,但是它却应用的非常广泛。本章结合实例分析Spring Web框架的使用方法、各个组件的作用。本章内容包括: 第一个Spring MVC例子; Spring MVC的控制器; Spring MVC的视图; 使用拦截器; Sping MVC框架的数据验证; Spring和Struts 2整合。 通过本章的学习,相信读者会对如何使用Spring进行MVC开发有很深入的了解。 23.1 第一个Spring MVC例子 在讲解Spring的MVC框架的各个组件之前,先通过一个例子来体会一下其流程。 【示例23-1】该示例先讲解如何在Eclipse环境下实现Spring MVC框架,然后讲解如何在Ant环境下实现。 说明:首先按照22.3.3节所讲的步骤在Eclipse中创建一个工程ch23,然后按照下面的步骤添加文件。 23.1.1 配置web.xml文件 在ch23的WEB-INF目录下创建web.xml。在使用Struts 2时,需要在web.xml文件配置FilterDispatcher,在使用Spring的MVC框架时,也需要配置web.xml文件,代码如下。 1. 2.

黑马程序员springmvc教程第一天:controller方法的返回值和参数详解

controller方法的返回值 ?返回ModelAndView 需要方法结束时,定义ModelAndView,将model和view分别进行设置。 ?返回string 如果controller方法返回string, 1、表示返回逻辑视图名。 真正视图(jsp路径)=前缀+逻辑视图名+后缀 2、redirect重定向 商品修改提交后,重定向到商品查询列表。 redirect重定向特点:浏览器地址栏中的url会变化。修改提交的request数据无法传到重定向的地址。因为重定向后重新进行request(request无法共享) 3、forward页面转发 通过forward进行页面转发,浏览器地址栏url不变,request可以共享。 ?返回void 在controller方法形参上可以定义request和response,使用request或response指定响应结果: 1、使用request转向页面,如下: request.getRequestDispatcher("页面路径").forward(request, response); 2、也可以通过response页面重定向:

response.sendRedirect("url") 3、也可以通过response指定响应结果,例如响应json数据如下: response.setCharacterEncoding("utf-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter().write("json串"); 参数绑定 spring参数绑定过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。 springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller 类定义成员变更接收!!!!

用Spring MVC实现用户登录的完整实例

用Spring MVC实现用户登录的完整实例 关键字: 用spring mvc实现用户登录的完整实例 用Spring MVC实现用户登录的完整实例本例子是再Eclipse中建立一个Tomcat工程,来讲解Spring MVC 的全过程,实例代码如下: <一>编写日记文件放在myMVC/WEB-INF/src下 #指定日志输入文件的大小 log4j.appender.stdout.MaxFileSize=500KB log4j.appender.stdout.MaxBackupIndex=50 log4j.appender.stdout.Append=true https://www.360docs.net/doc/17833554.html,yout=org.apache.log4j.PatternLayout https://www.360docs.net/doc/17833554.html,yout.ConversionPattern=[%-5p]%d{yyyy-MM-ddHH: mm:ss}%c-%m%n #定义log4j的显示方式 log4j.appender.A1=org.apache.log4j.RollingFileAppender #指定日志输入文件的名称 log4j.appender.A1.File=org.log #指定日志输入文件的大小 log4j.appender.A1.MaxFileSize=500KB log4j.appender.A1.MaxBackupIndex=50 log4j.appender.A1.Append=true https://www.360docs.net/doc/17833554.html,yout=org.apache.log4j.PatternLayout https://www.360docs.net/doc/17833554.html,yout.ConversionPattern=%d{ISO8601}-[%P][%C{1}]-%m %n #定义log4j的显示方式

学习SpringMVC系列教程(一)Spring MVC入门

2.1、Spring Web MVC是什么 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)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。 2.2、Spring Web MVC能帮我们做什么 √让我们能非常简单的设计出干净的Web层和薄薄的Web层; √进行更简洁的Web层的开发;

√天生与Spring框架集成(如IoC容器、AOP等); √提供强大的约定大于配置的契约式编程支持; √能简单的进行Web层的单元测试; √支持灵活的URL到页面控制器的映射; √非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用); √非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API; √提供一套强大的JSP标签库,简化JSP开发; √支持灵活的本地化、主题等解析; √更加简单的异常处理; √对静态资源的支持; √支持Restful风格。 2.3、Spring Web MVC架构

最全最经典spring_mvc教程

spring mvc学习教程(一)-入门实例 引言 1.MVC:Model-View-Control 框架性质的C层要完成的主要工作:封装web请求为一个数据对象、调用业务逻辑层来处理数据对象、返回处理数据结果及相应的视图给用户。 2.简要概述springmvc Spring 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 目录下)。 2.编写HelloWorld实例 步骤一、建立名为springMVC_01_helloword,并导入上面列出的jar 包。 步骤二、编写web.xml配置文件,代码如下: spring

黑马程序员springmvc教程第二天:包装类型pojo参数绑定和集合类型绑定

包装类型pojo参数绑定 需求 商品查询controller方法中实现商品查询条件传入。 实现方法 第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参数。 第二种方法:在形参中让包装类型的pojo接收查询条件参数。 分析: 页面传参数的特点:复杂,多样性。条件包括:用户账号、商品编号、订单信息。。。 如果将用户账号、商品编号、订单信息等放在简单pojo(属性是简单类型)中,pojo类属性比较多,比较乱。 建议使用包装类型的pojo,pojo中属性是pojo。 页面参数和controller方法形参定义 页面参数: 商品名称: 注意:itemsCustom和包装pojo中的属性一致即可。 controller方法形参: public ModelAndView queryItems(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception

集合类型绑定 数组绑定 需求 商品批量删除,用户在页面选择多个商品,批量删除。 表现层实现 关键:将页面选择(多选)的商品id,传到controller方法的形参,方法形参使用数组接收页面请求的多个商品id。 controller方法定义: 页面定义:

list绑定 需求 通常在需要批量提交数据时,将提交的数据绑定到list中,比如:成绩录入(录入多门课成绩,批量提交), 本例子需求:批量商品修改,在页面输入多个商品信息,将多个商品信息提交到controller方法中。 表现层实现 controller方法定义: 1、进入批量商品修改页面(页面样式参考商品列表实现) 2、批量修改商品提交 使用List接收页面提交的批量数据,通过包装pojo接收,在包装pojo中定义list属性 页面定义:

Java Web高级教程SpringMVC的运用(提纲)

MBP上海第一事业部 Java Web高级教程 SpringMVC的运用 开发教育 邵华 2011/2/8 Version 0(教案) 本文是用来在MBP内部进行JAVA开发的培训教程。本文档属于社内密,请勿将本文档带离公司,请勿散播本文档。

目录 一、MVC框架的运用 (3) 二、Controller层 (3) 三、View层 (3) 四、Model层(form) (4) 五、REST应用、从url中接收数据 (4) 六、JSR-303 (4) 七、spring bean (4) 八、JPA (5)

一、MVC框架的运用 ?什么是MVC,为什么要用MVC ?spring MVC简介 \\172.16.64.101\share\referance\spring\spring-framework-reference.pdf ?开发环境配置 \\172.16.64.101\share\project_trans\develop.7z解压缩到c:\develop\ 切换workspace到C:\develop\project_sample\workspace ?Controller层:掌握Controller、RequestMapping的用法、会利用ModelMap来传递数据到View上 ?Service层:掌握Service、Autowired用法,学会从类抽出接口的办法,掌握Service注入的方法 ?View层:学会使用${}从ModelMap中读出数据,掌握标签用法 ?JPA层:学会利用ibatis保存sql信息,学会使用JpaNativeSqlRunner运行SQL。 如出现以下情况则判定为不及格: ?Controller中new了Service ?Service中new了JpaNativeSqlRunner或者EntityManager ?代码编译不通过 ?程序不能达到既定目标,表没有按照要求建立、缺少显示的字段、没有使用表格显示数据,一次运行就出错。 二、Controller层 ?掌握url的定义方法 ?用@Controller定义控制器 ?用@RequestMapping定义处理的url和请求的方法(method) ?用@RequestParam接受request参数(value) ?用ModelMap把数据传递到view上 ?用处理函数返回的字符串作为view的标识符 三、View层 ?用来输出数据,好处是防止html代码注入

springMVC 个人学习笔记

第一、二课 所需jar包,本次使用版本是spring3.2.3 Ps:spring的文件用上面的基本够了,但是整个过程可能需要很多的commons 软件,如fileupload,io,lang包 SpringMVC demo案例 1、加入相关jar包 2、web.xml配置 springMVC org.springframework.web.servlet.DispatcherServlet 1 springMVC /这里一定要写成这样,如果写成 /* 输入地址总是No mapping found for HTTP request with URI Ps:springMVC 也有个默认的xml配置文件,类似struts2的struts.xml 该文件可以指定,即上面紫色注释掉部分。 默认路径是/WEB-INF/springMVC-servlet.xml

3、springMVC-servlet.xml 4、编写controller 该controller类似struts2的action,编写的controller 要实现org.springframework.web.servlet.mvc.Controller接口 第三课 springMVC的传值 通过modelandview 传值 1、

SpringMVC入门之普通配置篇

首先是Web.xml 01 02 07 08 09 10 11 12 contextConfigLocation 13 /WEB-INF/springmvc-servlet.xml, classpath:applicationContext-*.xml 14 15 16 17 18 19 20 21 springmvc 2 org.springframework.web.servlet.DispatcherSer

2vlet 23 1 24 25 26 springmvc 27 *.htm 28 29 30 31 32 33 3 4 org.springframework.web.context.ContextLoade rListener 35 36 37 38 index.jsp 39 40 接下来是SpringMVC的配置文件springmvc-servlet.xml 01 02 实际开发使用:mvc:annotation-driven 视图解析器配置前缀和后缀: 程序中不用指定前缀和后缀: 出师表 两汉:诸葛亮 先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。

Spring+SpringMVC+MyBatis的整合

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) 最近在学习Spring+SpringMVC+MyBatis的整合。以下是参考网上的资料自己实践操作的详细步骤。 1、基本概念 1.1、Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1.2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在 Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 1.3、MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由 apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis 是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和 Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口 和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

《JavaEE企业级应用开发教程(Spring+SpringMVC+MyBatis)》_课后习题

第一章 【思考题】 1、请简述Spring框架的优点。 2、请简述什么是Spring的IoC和DI。。 【答案】 1、Spring框架的优点如下: (1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。 (2)方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。 (3)支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。 (4)支持声明式事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。 (5)方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring程序。 (6)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。 (7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API(如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。。 2、IoC的全称是Inversion of Control,中文名称为控制反转。控制反转就是指在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用代码转移到了Spring容器,控制权发生了反转。 DI的全称是Dependency Injection,中文称之为依赖注入。它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。从Spring容器的角度来看,Spring 容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。

MyBaits Spring MVC JSP零基础搭建Web开发框架(注解模式)

MyBaits Spring MVC JSP零基础搭建Web开发框架(注解模式) 搭建开发环境: Netbeans8.0.2 + MySql5.6 + JDK1.7 + tomcat8.0.15 本次采用的Spring MVC Jar包如下: spring-aop-4.1.3.RELEASE.jar spring-beans-4.1.3.RELEASE.jar spring-context-4.1.3.RELEASE.jar spring-context-support-4.1.3.RELEASE.jar spring-core-4.1.3.RELEASE.jar spring-expression-4.1.3.RELEASE.jar spring-jdbc-4.1.3.RELEASE.jar spring-oxm-4.1.3.RELEASE.jar spring-tx-4.1.3.RELEASE.jar spring-web-4.1.3.RELEASE.jar spring-webmvc-4.1.3.RELEASE.jar 当然还有其他的依赖jar,如有需要请留下邮箱~! 1.首先创建Web项目 web.mvc 2.引入所有的jar文件 3.配置web.xml 做web开发的都知道,web.xml是项目的入口,我们既然使用spring那么当然要添加Spring 的支持啦! spring默认加载的是applicationContext.xml,由于我们需要集成MyBatis 所以我把Spring的配置文件强制指定名称,并与MyBatis一起配置,减少配置文件数量先指定spring配置文件名名称与路径 [html]view plaincopyprint?

Spring视频教程 Spring MVC开发实例-基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站

Spring视频教程Spring MVC开发实例 —基于SpringMVC、MyBatis、FreeMarker架构实战CMS大型门户网站 课程讲师:伍老师 课程分类:Java 适合人群:中级 课时数量:80课时 用到技术:SpringMCV、MyBatis、FreeMarker 涉及项目:CMS大型门户网站 更新程度:完毕 Spring视频教程原文地址:https://www.360docs.net/doc/17833554.html,/goods-296.html 一、课程来源: 华智经纬CMS是一套基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点,支持mysql、oracle、sqlserver等数据库。强大、灵活的标签,用户自定义显示内容和显示方式完全生成全站静态页面,可自定义路径结构,全面提高页面访问速度基于目前流行的SpringMVC 及性能较Hibernate高的MyBatis 二、课程适合的对象: Spring视频教程适合想要提升开发技能的Java开发人员,想要使用MyBatis+springMVC+Freemarker 三、课程培养目标: 1 熟练掌握并精通springMVC+MyBatis技术。 2 加强开发的内功修炼。 3 深入理解大型门户网站开发技术 4 提供软件设计能力和软件开发能力,并在一定程度上增加项目管理经验。 6 掌握多个技术点,能够独立开发基于MyBatis+springMVC的大型门户网站 四、培训定位: Spring视频教程适合于各个层次的Java开发人员,对于初级程序员来说,可以在短时间内迅速提高开发能力,掌握流行的技术,把握技术的发展脉络。对于中高级程序员来说,本Spring视频教程可以在短时间内快速提升个人的开发能力,后期的架构和性能的课程,更是能够提升程序员的内功修炼,从而具有向架构师发展的能力。

《Java EE框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)》教学大纲

《Java EE框架整合开发》课程教学大纲 【课程编号】 【课程名称】 【课程类型】专业必修课 【授课对象】 【学时学分】周学时8,共96学时,6学分 【课程概况】 《Java EE框架整合开发》是基于SSM框架的理论与实践相结合的课程,是软件工程专业的一门专业必修课程。主要讲解Spring、Spring MVC和MyBatis三大框架(SSM)的基础知识和实际应用。具体内容包括4部分:第1部分,主要讲解了Spring框架的相关知识,内容包括Spring IoC、Spring Bean、Spring AOP以及Spring的事务管理;第2部分,主要讲解了MyBatis的相关知识,内容包括映射器以及动态SQL;第3部分,主要讲解了Spring MVC的相关知识,内容包括Controller、类型转换和格式化、数据绑定和表单标签库、拦截器、数据验证、国际化、统一异常处理、文件的上传和下载以及EL与JSTL;第4部分,主要讲解了SSM框架整合的基本思想与实践开发,内容包括SSM框架整合、基于SSM框架的电子商务平台、邮件管理系统以及人事管理系统的设计与实现。 【课程目标】 通过本课程的学习,学生应首先认识和了解SSM框架的基础知识;其次掌握SSM框架整合的基本思想与实践开发;最终,能够独立设计并开发一个基于SSM框架的企业级应用系统。

【课程要求与成绩评定】

【使用教材及教学参考书】 使用教材:《Java EE框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)》.陈恒、楼偶俊、张立杰编著.清华大学出版社,2018.08 教学参考书:《Java EE互联网轻量级框架整合开发——SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》.杨开振等著.电子工业出版社,2017.07

springMVC基础面试题

简单的谈一下SpringMVC的工作流程? 1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、DispatcherServlet调用HandlerAdapter处理器适配器 5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 6、Controller执行完成返回ModelAndView 7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器 9、ViewReslover解析后返回具体View 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 11、DispatcherServlet响应用户 SpringMVC与Struts2的主要区别? ①springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。 ②springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。 ③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。Jsp视图解析器默认使用jstl。 说一说Servlet生命周期 Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX (doGet或者doPost)方法。 销毁:服务结束,web容器会调用servlet的distroy()方法销毁servlet。 get提交和post提交有何区别 (1)get一般用于从服务器上获取数据,post一般用于向服务器传送数据 (2)请求的时候参数的位置有区别,get的参数是拼接在url后面,用户在浏览器地址栏可以看到。post是放在http包的包体中。 比如说用户注册,你不能把用户提交的注册信息用get的方式吧,那不是说把用户的注册信息都显示在Url上了吗,是不安全的。 (3)能提交的数据有区别,get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不仅可以提交文本还有二进制文件。

springMVC入门

核心控制器DispatcherServlet 它类似于struts中的ActionServlet,WebWork中的ServletDispacher. 负责拦截主求,将请求参数封装成对象,然后根据处理器映射策略,将请求转发给不同的业务控制器。DispatcherServlet应该配置成load- on-startup Servlet 方式,它不仅负责处理请求,而且负责创建ApplicationContext,核心控制器启动时加载,在web.xml配置如下。 作为一个J2EE的开发者,我们基本上是开发基于WEB的应用系统。事实上,工作流,状态管理以及验证都是需要解决的重要功能。而HTTP协议的无状态性决定了这些功能都不容易实现。Spring的WEB框架就是来帮助我们解决这些问题的。使用Spring,我们可以让WEB框架自动将传递进来的请求参数填充到模型对象中,同时提供验证和错误处理。还可以管理用户在WEB表单中创建的对象的状态。在了解SpringMVC之前,我们先来复习下MVC. MVC从逻辑上把应用分为模型组件,视图组件和控制器组件。其中控制器组件又可以细分为:前端控制器组件和后端控制器组件。 我们来看一下MVC的基本工作流程: 首先是客户端(通常是浏览器)发出一个请求。第一个接受这个请求的组件一般是一个前端控制器。它将不同的请求交给不同的后端控制器来处理,而在后端控制器里面又可以调用相应的模型对象来处理具体的业务逻辑,最后再返回一个特定的视图响应给客户端。 怎么理解MVC呢?我们举一个现实的例子,前段时间地震太可怕了,全国人民都在上下一心抗震救灾。我们敬爱的温总理给武警司令下命令让他完成抗震救灾的艰巨任务,于是武警司令就根据各地情况派遣不同类型的特种兵到不同的地区去,然后特种兵使用大大小小的工具完成了任务,最后上交给司令一份统计图表,司令再上交给温总理。我们就来分析一下,这符不符合MVC的设计模式。这里呢,温总理就是客户端,武警司令就是前端控制器,特种兵就是后端控制器,特种兵所使用的工具就是模型,最后上交的统计图表就是视图。 现在大家应该可以理解MVC的设计思想了。拿我们比较熟悉的struts框架来说,前端控制器就是ActionServlet,后端控制器就是Action.请求的URL和后端控制器的映射关系在struts-config.xml上的里面配置,模型对象就是我们平常写的 DAO/DTO,返回的视图类型一般就是jsp了。 那么,在spring MVC中又是怎样的呢?,我们先按上面对号入座地说一下。第一个接受这个请求的前端控制器叫DispatcherServlet,后端控制器叫Controller。负责处理请求URL和后端控制器映射的叫HandMapping,它有多种类型,比较灵活,也是在一个xml文件上进行配置。负责业务逻辑处理的模型对象一般也是我们平常写的DAO/DTO组件。只是它最后的返回更灵活,Controller返回一个ModelAndView对象给DispatcherServlet,ModelAndView可以携带一个视图对象,也可以携带一个视图对象的逻辑名。如果携带的是

SpringMVC教程

目录 项目目录结构图: (2) 第一步:准备 (2) Sprng中的jar包 (2) Hibernate中的jar包 (3) 其它jar包 (4) 第二步:配置文件 (5) 从hibernate中复制并修改文件 (5) 修改hibernate.properties文件 (6) 修改log4j.properties文件 (6) 编写spring配置文件 (7) 新建applicationContext.xml文件 (7) 新建spring-servlet.xml文件 (9) 修改web.xml文件 (9) 第三步:业务逻辑 (10) Model层 (10) Dao层 (11) Service层 (12) Controller层(Action层) (13) View层 (14) 第四步:测试 (15) 开启服务器 (15) 在浏览器中浏览 (16) 运行结果: (16)

项目目录结构图: 项目结构图 第一步:准备 Sprng中的jar包 首先从spring官网https://www.360docs.net/doc/17833554.html,/download/community中下载最新版本的spring版本,本例采用的是spring-framework-3.1.1.RELEASE。初学者最好采用和此版本一样的版本。下载后如图:

解压得到文件夹: 打开文件夹: 选择如下jar包: 将以上jar包复制到你的/web-INF下的/lib中(以下简称lib)。 Hibernate中的jar包 准备hibernate的jar包,从hibernate官网https://www.360docs.net/doc/17833554.html,/downloads下载hibernate 版本,本例采用的是hibernate-distribution-3.6.10.Final,下载后如下: 解压后: 打开hibernate文件夹,先选择如图中的jar包: 再打开hibernate文件夹中的lib文件夹:

相关文档
最新文档