SpringMVC-SpringMVC概述及HelloWorld

一.概述

Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最流行的MVC框架之一。SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口。支持REST风格的URL请求。采用松散耦合可插件组件结构,比其他MVC框架更具扩展性和灵活性。

总结来说:SpringMVC是一种轻量级,基于MVC的Web层应用框架,偏前端而不是基于业务逻辑层。是Spring框架的一个后续产品(就是这个Web模块)。

1.1 SpringMVC优点

  • 天生与Spring框架集成。
  • 支持Restful风格。
  • 进行更简洁的Web层开发。
  • 支持灵活的URL到页面控制器的映射。
  • 非常容易与其他视图技术继承,如Velocity等等。
  • 因为模型数据不存放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用)。
  • 非常灵活的数据验证,格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API。
  • 更加简单,强大的异常处理。
  • 对静态资源的支持。
  • 支持灵活的本地化,主题等解析。

1.2 SpringMVC常用组件

  • DispatchServlet:前端控制器
  • Controller:处理器/页面控制器,做的是MVC中C的事情,但控制逻辑转移到前端控制器,用于对请求进行处理。
  • HandlerMapping:请求映射处理器,找谁来处理,如果映射成功返回一个HandlerExecutiongChain对象(包含一个Handler处理器对象,多个HandlerInterceptor拦截器对象)。
  • ViewResolver:视图解析器,找谁来处理返回的页面。把逻辑视图解析成为具体的View,进行这种策略模式,很容易更换其他视图技术。例如下面实验使用的InternalResourceViewResolver将逻辑视图转换成JSP视图。
  • LocalResolver:本地化,国际化。
  • MultipartResolver:文件上传解析器。
  • HandlerExceptionResolver:异常处理器

二.HelloWorld

工程创建:创建一个动态Web项目,注意选择版本选择2.5(有web.xml配置文件,如果选择了3.0,选择next手动配置)。

1.导包

1)SpringMVC是Spring的Web模块;所有模块的运行都依赖核心模块(IOC模块)。

       (1)核心容器模块

  commons-logging-1.1.3.jar
spring-aop-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

       (2)Web模块

spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar

2.写配置

1)在web.xml中配置前端控制器,指定SpringMVC配置文件位置:我们知道SpringMVC的思想就是有一个前端控制器DispatcherServlet能拦截所有请求,并能智能派发。这个前端控制器是一个Servlet,所以在web.xml中写配置这个Servlet。

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>1.SpringMVC_helloWorld</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- SpringMVC思想是有一个前端控制器能拦截所有请求,并智能派发
       这个前端控制器是一个Servlet,应该在web.xml中配置这个Servlet来拦截所有请求
   -->
   <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置DispatcherServlet的初始化參數:设置文件的路径和文件名称 -->		
<init-param>
		    <!-- 指定SpringMVC配置文件位置 -->
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:SpringMVC.xml</param-value>
		</init-param>
		<!-- Servlet启动加载,Servlet原本是第一次访问创建对象,
		     load-on-startup:服务器启动的时候创建对象,值越小,越先创建对象
		 -->
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<!-- /*和/拦截所有请求
		     /会拦截所有请求,但不会拦截*.jsp请求,能保证jsp访问正常。
		     /*范围更大,还会拦截*.jsp这些请求,一旦拦截jsp页面就不能显示了;		
		 -->
		<url-pattern>/</url-pattern>
	</servlet-mapping>

</web-app>

如果不指定配置文件指定位置:就在Web应用的/WEB-INF下创建一个名叫前端控制器名-servlet.xml。上面的去掉配置文件的指定位置,就是要找:2)配置SpringMVC配置文件:在上面的Servlet配置中,要指定SpringMVC的配置文件。因为SpringMVC是Spring中的一部分,所以配置文件的创建和Spring一样。首先增名称空间,然后在配置文件中扫描所有组件。

<?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-2.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

<!-- 扫描所有组件 -->
<context:component-scan base-package="com.test"></context:component-scan>
</beans>

3)编写处理器:

(1)创建两个JSP页面,一个入口页面,一个成功页面(记得设置JSP页面的编码为UTF-8)。

idnex.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="hello">helloworld</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>
<h1>成功!</h1>
</body>
</html>

  (2)编写处理器(加注解的)

package com.test.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/*
 * 1.告诉SpringMVC这是一个处理器,可以处理请求
 *      @Controller:表示哪个组件是控制器
 */

@Controller
public class MyFirstController {

	/*
	 *  /代表从当前项目下开始:处理当前项目下的hello请求
	 */
	@RequestMapping("/hello")
	public String myfirstRequest(){
		System.out.println("请求收到了...正在处理中");
		
		return "/WEB-INF/pages/success.jsp";
	}
}

(3)配置映射解析器:如何将控制器返回的结果字符串,转换为一个物理的视图文件。在上面的实验中,返回的页面字符串过于繁琐,为了方便起见,在SpringMVC配置文件中,配置一个映射解析器,用来拼接字符串。

<!-- 配置一个视图解析器:能拼接页面地址 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/pages/"></property>
     <property name="suffix" value=".jsp"></property>
</bean>

处理器中方法:

@Controller
public class MyFirstController {

	/*
	 *  /代表从当前项目下开始:处理当前项目下的hello请求
	 */
	@RequestMapping("/hello")
	public String myfirstRequest(){
		System.out.println("请求收到了...正在处理中");
		//视图解析器自动拼串,:
		// <property name="prefix" value="/WEB-INF/pages/"></property>
	    // <property name="suffix" value=".jsp"></property>
		return "success";
	}

3.部署测试:http://localhost:8080/1.SpringMVC_helloWorld/index.jsp

点击链接:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值