spring web mvc第一天
spring web mvc 感觉就是高大上啊!啥都是配置文件就能够了。所以第一步就是弄清楚配置文件使用和总体框架的流程!
Spring web mvc最重要的当然是Controller,也就是首先要明确的就是Dispatch,它将用户的请求转化成Controller处理的对象。在
在Spring的Web MVC中,担任前段控制器角色的是org.springframework.web.servlet.DispatcherServlet.DispatcherServlet负责将客户的请求分配给控制对象。所以使用Spring Web MVC的第一步就是在Web.xml中定义DispatcherServlet.
<span style="font-family:Courier New;font-size:14px;"><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/mvc-config.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></span>
DispatcherServlet 实例是 dispatcherServlet。从url-pattern能够知道它拦截.do的随意请求。“contextConfigLocation”初始參数用来设定Bean定义文件的位置与名称。假设不设置“contextConfigLocation”初始參数,则DispatcherServlet默认会使用Servlet的名称为前置,读取“Servlet名称-servlet.xml”作为其Bean定义文件。在上面的设定中则会读取mvc-config.xml当然你也能够定义多个Bean定义文件的来源.
<span style="font-family:Courier New;"><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/mvc-config.xml,/WEB-INF/other-servlet.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></span>
DispatcherServlet负责分配请求至控制对象(Controller),在Spring Web MVC中,控制对象要实现org.springframework.web.servlet.mvc.Controller接口,Controller接口有一个不许实现的handleRequest()
<span style="font-family:Courier New;font-size:14px;">public interface Controller {
ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception;
}</span>
当Controller接收到DispatcherServlet分配的请求时,会运行handleRequest()方法来处理请求,处理完毕后回传一个org.springframework.web.servlet.ModelAndView的实例.ModelAndView包含了要呈如今View层的Model数据,以及其它View层的相关信息。
<span style="font-family:Courier New;font-size:14px;">public class HellowController implements Controller {
private String viewPage。
public void setViewPage(String viewPage) {
this.viewPage = viewPage;
} public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception { String user = request.getparameter("user");
retrun new ModelAndView(viewPage, "user", user);
}
}</span>
在这个Controller中。取得来自使用者的user请求參数。并设定在ModelAndView的实例中,在这个样例中,高见ModelAndView的第一个自变量为要呈现的目标网页(或资源)路径,第二个自变量是设定用来取得Model对象的键(key),而第三个自变量是个View层呈现数据的Model对象我们能够在xml文件设定Controller请求处理完成之后,所要呈现数据的网页路径,来看一下Bean定义文件的内容,根据web.xml中对dispatcherServlet的初始參数设定为mvc-config.xml,假设没有初始參数的话,默认会调用dispatcherServlet-servlet.xml文件
<span style="font-family:Microsoft YaHei;font-size:14px;"> </span><span style="font-family:Courier New;font-size:14px;"><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean> <bean name="/hello.do"
class="包路径.HellowController">
<property name="viewPage">
<value>hello</vlaue>
</property>
</bean></span>
实际上DispatcherServlet必须依据一个HandlerMapping对象,决定请求由哪一个Controller来处理,DispatcherServlet默认使用org.springframework.web.servlet.handler.BeanNameUrlHandlerMappin,也就是依据Bean在定义时的"name"属性及使用者请求的URL,决定使用哪一个Controller实例,比如上面的样例。请求/.../hello.do时,DispatcherServlet依据"hello.do",决定要使用"name"为"hello.do"的Bean实例。所以依据上面的设定。就会将请求交给HelloController的实例来处理。
在Controller返回ModelAndView后,DispatcherServlet会交由ViewResolver对象来作View层的相关解析。因而你须要设置一个ViewResolver实例,在这个样例中将一jsp作为View层技术,所以使用org.springframework.web.servlet.view.InternalResourceViewResolve。
InternalResourceViewResolver须要设置"viewClass",默认是org.springframework.web.servlet.InternalResourceView,这个类支持Servlet技术的相关资源。InternalResourceViewResolver的"prefix"和"suffix"属性会与ModelAndView返回的路径信息借个。比如路径信息返回为"hello"字符串,则与以上的样例设定结合。实际路径就是/WEB-INF/jsp/hello.jsp。
spring web mvc第一天的更多相关文章
- Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
之前有一篇<5分钟构建spring web mvc REST风格HelloWorld>介绍了普通方式开发spring web mvc web service.接下来看看使用spring b ...
- [转]Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
Spring Boot——2分钟构建spring web mvc REST风格HelloWorld http://projects.spring.io/spring-boot/ http://spri ...
- Spring Web MVC(一)
[toc] 概述 Spring的web框架围绕DispatcherServlet设计. DispatcherServlet的作用是将请求分发到不同的处理器. Spring的web框架包括可配置的处理器 ...
- Spring Web MVC(三)之注解
[toc] spring web mvc 基于注解的优化 我写的注解是按照spring web的部件分类写的,这样的话比较方便查看,大家感觉有用的话可以分享个别人,希望对对更多的人有帮助.毕竟零基础开 ...
- Spring Web MVC框架简介
Web MVC framework框架 Spring Web MVC框架简介 Spring MVC的核心是`DispatcherServlet`,该类作用非常多,分发请求处理,配置处理器映射,处理视图 ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块
spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可 ...
- 菜鸟学习Spring Web MVC之二
有文章从结构上详细讲解了Spring Web MVC,我个菜鸟就不引据来讲了.说说强悍的XP环境如何配置运行环境~~ 最后我配好的环境Tomcat.Spring Tool Suites.Maven目前 ...
- 4.Spring Web MVC处理请求的流程
- 1.Spring Web MVC有什么
Spring Web MVC使用了MVC架构模式的思想,将web层进行职责解耦. 同样也是基于请求驱动的,也就是使用请求-响应模型.它主要包含如下组件: DispatcherServlet :前端控制 ...
随机推荐
- iOS库--.a与.framework
一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的差别? 静态库:链接时完整地拷贝至可运行文件里.被多次使用就有多份冗余拷贝. 动态库:链接时不复制.程序执行时由系 ...
- UESTC--1272--Final Pan's prime numbers(水题)
Final Pan's prime numbers Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & % ...
- 常见DDOS攻击原理和防御
常见的DDOS攻击主要分为流量型攻击和cc攻击: 流量型攻击主要通过发送大量的非法报文侵占正常业务带宽 包括SYN Flood/ SYN-ACK Flood /ACK Flood/ FIN/RST F ...
- Linux中文件上传使用rz
1.首先,要是服务器不支持rz命令的话,需要安装执行 sudo yum -y install lrzsz 2.再输入rz -be命令,选择需要上传的本地文件 sudo rz 从服务端发送文件到客户端: ...
- Centos7 minimal 系列之Redis共享sessionid(七)
这一章节的内容就当看看,只是个人理解,我想应该是有误的. 一.SessionId sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessioni ...
- DirectUI界面编程(一)创建第一个应用
1.获取Duilib库文件 通过上一节大家对DirectUI界面设计有了初步的了解,本节开始我们一起学习Duilib界面库的使用. 首先我们需要获取Duilib库,目前最新版本为2.0,最新版本源码托 ...
- bzoj 2648: SJY摆棋子 KDtree + 替罪羊式重构
KDtree真的很妙啊,真的是又好写,作用还多,以后还需更多学习呀. 对于这道题,我们求的是曼哈顿距离的最小值. 而维护的变量和以往是相同的,就是横纵坐标的最小值与最大值. 我们设为一个极为巧妙且玄学 ...
- MySQL-数据库安装及基本SQL语句
一数据库基本概念 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运行在 ...
- 【BZOJ5020】[LOJ2289]【THUWC2017】在美妙的数学王国中畅游 - LCT+泰勒展开
咕咕咕?咕咕咕! 题意: Description 数字和数学规律主宰着这个世界. 机器的运转, 生命的消长, 宇宙的进程, 这些神秘而又美妙的过程无不可以用数学的语言展现出来. 这印证了一句古老的名言 ...
- Module build failed: Module failed because of a eslint warning
eslint 设置 warning 级别,在 开发编译失败的原因,报错如下: F:\vue-mobile-skeleton>npm run dev > byhealth@1.0.0 dev ...