Spring MVC入门(二)
来源:互联网 发布:python爬虫爬取微信 编辑:程序博客网 时间:2024/06/06 15:11
在我昨天那个Spring MVC例子里,运行以后,页面呈现一个登录界面。
这个登录界面,内容位于一个文件名叫“\WebContent\page\home.jsp”的视图里。
此刻,浏览器访问的地址是:http://localhost:8080/SpringMVC/
,其实用这个地址http://localhost:8080/SpringMVC/index.html
访问也是一样的。
那么,系统是如何处理,在我们请求”/”或者”/index.html”的时候,最终将home.jsp的内容返回的呢?
首先,在web.xml里,指明了默认首页
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list>
然后,在控制器HomeController.java里有这么一个action,指明了请求index的,就用这个public ModelAndView index()
来处理。
@RequestMapping("index") public ModelAndView index(){ //创建模型跟视图,用于渲染页面。并且指定要返回的页面为home页面 ModelAndView mav = new ModelAndView("home"); return mav; }
这个action位于HomeController里面,系统是咋知道要到HomeController里找这个action呢?难道HomeController是系统默认的入口?不是的,主要是因为在web.xml里配置了一个Servlet:
<!-- 配置Spring MVC DispatcherServlet --> <servlet> <servlet-name>MVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化参数 --> <init-param> <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> <!-- 这个"contextConfigLocation"名字似乎不能修改的,不奇怪,参数名 --> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/mvc*.* </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
按照规则/WEB-INF/classes/mvc*.*
,有mvc-context.xml与之对应,里面内容有:
<!-- SpringMVC配置 --> <!-- 通过component-scan 让Spring扫描org.swinglife.controller下的所有的类,让Spring的代码注解生效 --> <context:component-scan base-package="org.swinglife.controller"></context:component-scan> <!-- 配置SpringMVC的视图渲染器, 让其前缀为:/ 后缀为.jsp 将视图渲染到/page/<method返回值>.jsp中 --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/page/" p:suffix=".jsp"> </beans:bean>
在示例里面,我们的控制器都在包“org.swinglife.controller”里,可见系统在初始化之处,就会扫描这个包里所有的代码,就知道映射”index”应该对应哪个action了。
假如我将”index”的映射改到其他action,那就会用其他action来处理:
@Controllerpublic class OtherController { /*** * 其他的跳转方法,通过String的返回值来跳转页面 * @return */ @RequestMapping("index") public String other(){ return "other"; }}
如果映射重复,比如2个action都指向“index”,那就会报错。那如果有同名的映射怎么处理,我估计是路径会不一样。
附完整的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" 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>SpringMVC</display-name><!-- 监听spring上下文容器 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 加载spring的xml配置文件到 spring的上下文容器中 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:root-context.xml</param-value> </context-param> <!-- 配置Spring MVC DispatcherServlet --> <servlet> <servlet-name>MVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化参数 --> <init-param> <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/mvc*.* </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- 配置DispatcherServlet所需要拦截的 url --> <servlet-mapping> <servlet-name>MVC</servlet-name> <url-pattern>*.html</url-pattern> <url-pattern>*.htm</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list></web-app>
监听器Listener就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。
Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。
参考文章:
Listener 监听器
- Spring MVC入门(二)
- Spring MVC学习(二)-------Spring MVC入门
- Spring MVC学习(二)-------Spring MVC入门
- Spring Boot / Spring MVC 入门实践 (二) :MVC与Spring MVC简介
- Spring Boot / Spring MVC 入门实践 (二) :MVC与Spring MVC简介
- spring-mvc入门(二):后端控制器(上)
- spring-mvc入门(二):后端控制器(下)
- Spring MVC 入门指南(二):@RequestMapping用法详解
- Spring MVC 入门指南(二):@RequestMapping用法详解
- Spring MVC 入门指南(二):@RequestMapping用法详解
- Java Spring MVC入门(二)——配置项目
- Spring MVC入门(一)
- MVC基础入门(二)
- MVC入门介绍(二)
- Spring MVC学习(二)
- spring-MVC配置(二)
- Spring MVC入门教程(二)
- Spring MVC入门教程(二)
- 独家解读:简单又强大的配置文件 Config 读写类
- websocket+php+socket聊天室
- 透视投影详解
- 加载第三方apk获取资源Resources$NotFoundException: Resource ID #0x0
- editor上传视频无法播放的问题
- Spring MVC入门(二)
- Spring——注解详解
- 双方同时开启TCP连接
- spring+Hibernate
- 根Activity组件启动过程
- Linux批量清空当前目录中的日志文件
- HTML2.2表格
- MyBatis高级映射之一对一查询
- Matlab函数运行时间的三种计算方法