SpringMvc构建与Web应用程序(上)

3.1 Spring MVC的功能和优点

1.Spring MVC是一个分层的java Web开发框架。有三层模型层(Model)是应用程序所使用的特定域信息的表现形式、视图(View)域模型的表现形式、控制层(Controller)解释用户的输入并转化成模型,然后将转换后的结果显示给用户。

2、Spring MVC是一个基于动作的MVC框架。该框架突出了http协议的请求/相应特性、在该框架中用户的每一个请求都声明的一个需要执行的动作。而这主要通过将每个请求的URL映射到一个可执行的方法来实现,同时也将请求的参数映射到对应的方法的参数。

3、Spring MVC 是Spring的一个子项目

4、Spring MVC提供了一个绑定的机制,通过该机制可以通过用户的请求中提取数据,然后将数据转换成预定义的数据格式,最后映射到一个模型类,而创建一个对象。

5、Spring MVC 是视图不可知的,可以使用其他视图技术,这就是为什么Spring MVC引入了模型体系结构,避免直接使用Http Servlet请求来防止将自身的直接绑定到这些请求的原因。 Spring MVC还是非侵入性的,因为业务逻辑代码与框架本身是分离的。

6、Spring MVC提供了一种测试组件的简单方法。

MVC模式主要流程图

3.2 使用Dispatcher Servlet 机制

  Dispatcher Servlet 是Spring MVC的核心,他是主要的Servlet,负责处理请求,并将请求调度到合适的通道。

Spring MVC采用了一种前端控制模式(front controller parttern),该模式提供了一个入口来处理Web应用程序的所有请求。

图显示该流程。

Dispatcher Servlet配合使用处理器映射(handler mappings)和视图解析器(view resolver)来确定根据用户请求执行那个业务逻辑,以及处理完成之后返回的内容。处理器映射对象实现了HandlerMapping接口,这些对象在映射和处理器对象之间提供了桥梁。视图实现了ViewResolver接口,这些对象根据名称解析不同的视图。

   执行过程:

1、发出http请求,Dispatcher Servlet 通过与处理器映射来交流确定执行那个控制器。然后Dispatcher Servlet通过处理器的适配器调用实际的处理器方法,转发请求,并且期待返回模型和视图。

2、调用容器内的处理器的方法来处理业务逻辑,该方法首先设置模型数据,然后向Dispatcher Servlet返回视图名称,而视图将作为响应显示给用户。

3、Dispatcher Servlet集成视图解析器并根据解析器配置确定合适的视图。

4、Dispatcher Servlet将模型传递给视图。

3.2.1 定义Servlet

web.xml文件的配置

 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
	  http://xmlns.jcp.org/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>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.mvc</url-pattern>
	</servlet-mapping>
</web-app>

url-pattern定义:充当官网,任何以.mvc扩展的url都必须发送到自身。

Servlet 默认在WEB-INF文件夹下查找名为{Servlet-name}-servlet.xml文件。

{Servlet-name}-servlet.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-4.0.xsd 
       					   http://www.springframework.org/schema/context
       					   http://www.springframework.org/schema/context/spring-context-4.0.xsd
       					   http://www.springframework.org/schema/mvc 
       					   http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <context:component-scan base-package="com.tzg.ch303" />
    <context:annotation-config />
    <mvc:annotation-driven />
 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/" />
        <property name="suffix" value=".jsp" />
    </bean>
     
</beans>

其中base-package为所需扫描的包。

3.3创建第一个Spring MVC应用程序

1、添加依赖项

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>4.0.5.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>4.0.5.RELEASE</version>
		</dependency>
		<dependency>
		    <groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>4.0.5.RELEASE</version>
		</dependency>
		<dependency>
		    <groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>4.0.5.RELEASE</version>
		</dependency>
		<dependency>
		    <groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>4.0.5.RELEASE</version>
		</dependency>
		

2、web.xml配置

<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.mvc</url-pattern>
	</servlet-mapping>

3、springmvc-servlet.xml配置

    <context:component-scan base-package="com.tzg.ch301" />
    <context:annotation-config />
    <mvc:annotation-driven />
 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/" />
        <property name="suffix" value=".jsp" />
    </bean>

4、创建一个简单的控制器

@Controller
public class HelloReaderController {
   @RequestMapping(value="/hello")
	public ModelAndView sayHello(){
		ModelAndView mv=new ModelAndView();
		mv.addObject("message", "hello reader");
		mv.setViewName("helloReader");
		return mv;
	}
}

@RequestMapping:处理器映射请求的URL与使用@RequestMapping注解的处理器方法相匹配,并且将请求路径与该注解的value特性相比较。@RequestMapping注解的值将被解析和储存,当Dispatcher Servlet 处理该请求时访问这些值。

过程:首先创建ModelAndView类的一个实例,并使用键(message)设置将要传递给视图的对象,然后设置视图的名称(helloReader)。最后将视图返回给Servlet 解析并显示给用户。

5、helloReader.jsp

<body>
${message}
</body>

6、启动文件index.jsp

<% response.sendRedirect("hello.mvc"); %>

7、文件结构

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值