SpringMVC(2)—SpringMVC整合Spring的HelloWorld

一、这是一个SpringMVC框架的案例HelloWorld
功能:HelloWorld

二、SpringMVC运行流程
1.流程

    请求——>springDispatcherServlet的url-pattern检查SpringMVC中是否存在对应的映射无:检查是否配置的<mvc:default-servlet-handler/>无:404, 控制台打印 No mapping found for HTTP request with URI[/xx/xx] in DispatcherServlet有:寻找目标资源有:——>HandlerMapping获取HandlerExceptionChain对象——>获取HandlerAdapter对象——>调用拦截器的PreHandle方法
——>调用目标Handler的目标方法得到ModelAndView对象——>调用拦截器的postHandle方法,有无异常:有:由HandlerExceptionResolver组件处理异常,得到新的ModelAndView对象,——>无:———>由ViewResolver组件根据ModelAndView对象得到实际的view——>渲染视图——>调用拦截器的afterCompletion方法 

三、在Spring的环境下使用SpringMVC
问题:1.需要进行Spring整合SpringMVC吗
2.还是否需要加入SpringIOC容器
3.是否还要在web.xml文件中配置启动Spring IOC容器的的ContextLoaderListener
答案:
1. 需要: 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).
实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao.
2. 不需要: 都放在 SpringMVC 的配置文件中. 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件

问题:
若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2 次.
答案:
方法1. 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分,若分模块开发这种方法可能会不太合适
方法2. 使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解

所以使用方法2来解决SpringMVC整合Spring时,出现一个注解被两次扫描的问题
步骤
1.在SpringMVC配置文件中,配置扫描@Controller这个注解
2.在Spring配置文件中配置不扫描@Controller这个注解

注意:
**SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean.
返回来呢 ? 反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!**

四、代码
1.添加jar包

classmate-0.8.0.jar
com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-fileupload-1.2.1.jar
commons-io-2.0.jar
commons-logging-1.1.1.jar
commons-logging-1.1.3.jar
hibernate-validator-5.0.0.CR2.jar
hibernate-validator-annotation-processor-5.0.0.CR2.jar
jackson-annotations-2.1.5.jar
jackson-core-2.1.5.jar
jackson-databind-2.1.5.jar
jboss-logging-3.1.1.GA.jar
jstl.jar
spring-aop-4.0.0.RELEASE.jar
spring-aspects-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-jdbc-4.0.0.RELEASE.jar
spring-orm-4.0.0.RELEASE.jar
spring-tx-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar
standard.jar
validation-api-1.1.0.CR1.jar

2.页面
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><a href="helloworld">Hello World</a></body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><h3>Hello World!</h3>
</body>
</html>

other.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><h3>Other page!</h3>
</body>
</html>

3.Controller
HelloWorld.java

package com.Spring.mvc;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class HelloWorld {@Autowiredprivate UserService userService;public HelloWorld() {System.out.println("Hello World Constructor..."); }@RequestMapping("/helloworld")public String hello(){System.out.println("Hello World!");return "success";}}

4.Service
UserService.java

package com.Spring.mvc;import org.springframework.stereotype.Service;//SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean,反之则不行/*@Autowiredprivate HelloWorld helloWorld;*/
@Service
public class UserService {public UserService() {System.out.println("UserService Constructor...");}
}

5.配置文件
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>Demo20_SpringMVC_HelloWorld</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!-- 1.配置Spring的配置文件 -->  <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:bean.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 2.配置SpringMVC的配置文件 --> <servlet><servlet-name>springDispatcherServlet</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><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

bean.xml

<?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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- Spring IOC 容器 --><!-- 1.自动扫描的包 --><!-- <context:component-scan base-package="com.Spring.mvc"></context:component-scan> --><context:component-scan base-package="com.Spring.mvc" ><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/><context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/></context:component-scan><!-- 2.配置数据源,整合其他框架,事务等  -->    </beans>

springmvc.xml

<?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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- Spring MVC的IOC容器 --><!-- 1.自动解析的包 --><!-- <context:component-scan base-package="com.Spring.mvc"></context:component-scan> --><context:component-scan base-package="com.Spring.mvc" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/><context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/></context:component-scan><!-- 2.视图解析器 -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"></property><property name="suffix" value=".jsp"></property></bean><!-- 3.为了能够访问,没有Mapping映射的页面,添加了<mvc:default-servlet-handler/>但是使用了这个配置之后@RequestMapping映射作用失效,所以又配置这个<mvc:annotation-driven></mvc:annotation-driven>
--> <mvc:default-servlet-handler/><mvc:annotation-driven></mvc:annotation-driven><!-- 4.为了整合Spring IOC容器,需要在web.xml中配置启动Spring IOC容器的Listener -->    </beans>

转载于:https://www.cnblogs.com/tengpengfei/p/10453965.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac android 录屏软件下载,苹果录屏app下载 苹果录屏 for Android V2.1.3 安卓手机版 下载-脚本之家...

苹果录屏是一款不错的手机录屏软件&#xff0c;该软件能帮助你录制流畅清晰视频&#xff0c;实现屏幕内容实时同步录制&#xff0c;录制视频流畅清晰不卡顿&#xff0c;需要的朋友可以下载使用。应用介绍苹果录屏&#xff0c;是一款免费屏幕录制软件&#xff0c;能帮助你录制流…

火箭技术术语_仿真优化火箭发动机 3D 打印制造工艺

台湾工业技术研究院(ITRI)为台湾创新空间(TiSPACE)提供增材制造(也称 3D 打印技术)服务&#xff0c;包括原始设计制造、重新设计和仿真等。TiSPACE 的固液火箭发动机中使用的燃料喷射器组件的 3D 打印过程为&#xff1a;首先&#xff0c;激光将第一层粉末熔化并融合到构建板上&…

车林通购车之家--购车计算器模块--保险

//car-calculator-bx.twig {{ include(jsq-nav.twig) }} <div class"switch-item active" id"bodya"><div class"top-layer2 clearfix"><div class"tit"><span>新车保险市场价</span></div><…

麒麟710f能否升级到鸿蒙系统,定了!麒麟710以上支持升级鸿蒙系统,荣耀也可以升级...

原标题&#xff1a;定了&#xff01;麒麟710以上支持升级鸿蒙系统&#xff0c;荣耀也可以升级华为Mate X2发布会上&#xff0c;余承东表示4月份推送手机版鸿蒙系统&#xff0c;距离首发日期越来越近。不少朋友关心&#xff0c;哪些机型支持鸿蒙系统&#xff0c;荣耀手机可以更新…

我的奇思妙想机器人消防员_我是小小消防员(绘画篇)|来啊~斗图啊~看一场奇思妙想SHOW!...

点击上方 “四川消防119” 关注我们来&#xff0c;来&#xff0c;来快来进入孩子们脑洞大开的世界吧&#xff01;自今年6月以来&#xff0c;我们火热开展了“暑期消防安全教育专项行动”之“我是小小消防员”儿童消防绘画、作文竞赛活动&#xff0c;吸引了全省幼儿园小盆友、小…

mysql数据备份(windows,linux)

今天我有个朋友让我帮他在windowServer服务器上备份一下mysql的数据库&#xff0c;于是花了一天的时间完成了一个每天定时备份数据库的功能&#xff0c;小编在这里为大家记录一下&#xff1a; 首先对于mysql命令行的导入导出作一个简单的梳理 一、导入 ①mysql -h主机 -u账号 -…

android5.1.1移植教程,iTOP4412开发板Android5.1.1移植教程

对于传统的操作系统来说&#xff0c;普通的 I/O 操作一般会被内核缓存&#xff0c;这种 I/O 被称作缓存 I/O。本文所介绍的文件访问机制不经过操作系统内核的缓存&#xff0c;数据直接在磁盘和应用程序地址空间进行传输&#xff0c;所以该文件访问的机制称作为直接 I/O。Linux …

岗位po是什么意思_劳务派遣是什么意思,劳务派遣和正式员工区别在哪

劳务派遣也是劳动活动的一种&#xff0c;虽然性质相对于临时工&#xff0c;但是劳务派遣仍然属于劳动合同法所调整的&#xff0c;不过与正式员工存在一定区别。因此接下来将由找法网小编为您介绍关于劳务派遣是什么意思&#xff0c;劳务派遣和正式员工区别在哪及其相关方面的知…

Android对性能要求,Android性能管理

管理Android设备的功耗和性能有助于确保应用程序在各种硬件上始终如一地顺畅运行。在Android 7.0及更高版本中&#xff0c;OEM可以实现对持续性能提示的支持&#xff0c;使应用程序能够保持一致的设备性能&#xff0c;并指定专属核以提高CPU密集型前台应用程序的性能。持续性能…

BZOJ 1878: [SDOI2009]HH的项链 | 莫队

题解: http://www.lydsy.com/JudgeOnline/problem.php?id1878 题解: 莫队板子题 核心思想是对区间的询问离线之后按照合理的顺序来优化复杂度 一般的做法是先分块,以左端点所在块为第一关键字,右端点位置为第二关键字排序 用两个指针来跑,这样可以证明的是时间复杂度为O(n√n)…

layui导航栏页面滚动固定_帮你搞定长滚动网页的设计!这5种设计策略需谨记!...

网站中的内容再好&#xff0c;总得让用户能看到&#xff0c;才有价值&#xff0c;而矛盾在于&#xff0c;首屏的空间始终是有限的。所以&#xff0c;我们总希望用户能够滚动页面向下看&#xff0c;从某种意义上来说&#xff0c;长滚动页面和无限滚动的设计&#xff0c;如此地受…

hdata datax交流总结

http://blog.csdn.net/zlm838687/article/details/74781522 hdata datax交流总结 今天和阿里云的同学就数据同步做了简要的交流&#xff0c;下面就交流的内容做一个总结 分片相关 datax目前可以支持单机(standalone)和集群模式(cluster).目前开源的是单机版本。无论是单机版本还…

南邮计算机专硕考研专业课,南京邮电大学(专业学位)计算机技术研究生考试科目和考研参考书目...

考研真题资料优惠价原价选择南京邮电大学(专业学位)计算机技术教材&#xff0c;也叫南京邮电大学(专业学位)计算机技术考研参考书、指定书目等等&#xff0c;是考验专业课复习过程中最重要的资料。考研是一种针对性很强的考试项目&#xff0c;参考书目由报考院校的研究生院制定…

ios 设置属性的center_【从0到1的Stata图表学习1】图例设置

导读规则&#xff1a;正文出现非加粗红色字体&#xff0c;对应Stata命令&#xff1b;正文中出现蓝色字体&#xff0c;对应往期链接&#xff1b;do文件中&#xff1a;"/**/"符号代表作者注释内容&#xff0c;帮助理解&#xff1b;"//"代表分节&#xff0c;便…

CentOS7 升级Python2.x到3.x

CentOS 7 中默认安装了 Python&#xff0c;版本比较低&#xff08;2.7.5&#xff09;&#xff0c;为了使用新版 3.x&#xff0c;需要对旧版本进行升级。由于很多基本的命令、软件包都依赖旧版本&#xff0c;比如&#xff1a;yum。所以&#xff0c;在更新 Python 时&#xff0c;…

计算机网络的应用领域有那些,计算机网络应用领域

描述计算机网络应用领域一、计算机网络在现代企业中的应用计算机网络的发展和应用改变了传统企业的管理模式和经营模式。在现代企业中企业信息网络得到了广泛的应用。它是一种专门用于企业内部信息管理的计算机网络&#xff0c;覆盖企业生产经营管理的各个部门&#xff0c;在整…

ffmpeg rtsp转hls_Qt音视频开发24-ffmpeg音视频同步

## 一、前言用ffmpeg来做音视频同步&#xff0c;个人认为这个是ffmpeg基础处理中最难的一个&#xff0c;无数人就卡在这里&#xff0c;怎么也不准&#xff0c;本人也是尝试过网上各种demo&#xff0c;基本上都是渣渣&#xff0c;要么仅仅支持极其少量的视频文件比如收到的数据包…

1119. Pre- and Post-order Traversals (30)

友情提示&#xff1a;这题非常值得自己思考独立做出来&#xff0c;请反复确认后再往下拉 1119. Pre- and Post-order Traversals (30) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Special作者CHEN, YueSuppose that all the keys in a binary tree are distinc…

单招计算机英语面试口语,单招面试英语自我介绍范文 自我介绍说什么

单招面试英语自我介绍范文 自我介绍说什么2018-03-11 10:50:17文/李男学好英语就意味着可能有更多的机会&#xff0c;单招面试中英语自我介绍也是很重要的。那么&#xff0c;英语自我介绍说什么呢&#xff1f;下面小编整理了一些英语自我介绍范文&#xff0c;供大家参考&#x…

jsp中导入jsf标签库_初学jsf,自制的标签使用时报错?解决办法

当前位置:我的异常网 Java Web开发 初学jsf&#xff0c;自制的标签使用时报错&#xff1f;解决办法初学jsf&#xff0c;自制的标签使用时报错&#xff1f;解决办法www.myexceptions.net 网友分享于&#xff1a;2013-09-12 浏览&#xff1a;10次初学jsf&#xff0c;自制的标签…