SpringMVC(轻量级Web框架)

一个SpringMVC应用

  1. 创建项目,引入jar包
    pring核心包 SpringMVC包 日志包
    pring-beans,spring-context,spring-core,spring- expression spring-web,spring-webmvc common-logging
  2. 配置前端控制器
	<servlet>
	    
		<servlet-name>springmvcservlet-name>
		<servlet-class>
              org.springframework.web.servlet.DispatcherServlet
         servlet-class>
		
		<init-param>
			<param-name>contextConfigLocationparam-name>
			<param-value>classpath:springmvc-config.xmlparam-value>
		init-param>
		
		<load-on-startup>1load-on-startup>
	servlet>
	<servlet-mapping>
		<servlet-name>springmvcservlet-name>
		<url-pattern>/url-pattern>
	servlet-mapping>
  1. 创建Controller类响应前端请求
package com.itheima.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
 * 控制器类
 */
public class FirstController implements Controller{
	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			               HttpServletResponse response)  {
         // 创建ModelAndView对象
		ModelAndView mav = new ModelAndView();
         // 向模型对象中添加数据
		mav.addObject("msg", "这是我的第一个Spring MVC程序");
         // 设置逻辑视图名
		mav.setViewName("/WEB-INF/jsp/first.jsp");
         // 返回ModelAndView对象
		return mav;
	}
}

  1. 创建SpringMVC配置文件,配置控制器映射信息
	
	<bean name="/firstController" 
			class="com.itheima.controller.FirstController" />
	
	
	
	
	
	
	bean>
  1. 创建视图first.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入门程序title>
head>
<body>
     ${msg}
body>
html> 

  1. 添加至Tomcat并访问http://localhost:8080/“项目名称”/firstController
    流程
    用户,DispatcherServlet(前端控制器),HandlerMapping(处理器映射器),HandlerAdapter(处理器适配器),Handler(处理器),ViewResolver(视图解析器),View(视图(如jsp)),用户

核心类和注解

DispatcherServlet属性 描述
为1时,应用程序启动时立即加载Servlet;不存在时,第一个Servlet请求时加载该Servlet
它的子元素配置SpringMVC配置文件的路径,应用程序启动时加载配置路径中的配置文件;无,默认到WEB-INF目录
servletName(servlet-mapping的子标签) 部署在web.xml中的DispatcherServlet的名称,应用会在WEB-INF下寻找springmvc-servlet.xml
  • servlet-mapping用于映射一个Servlet的对外访问路径,称为虚拟路径。创建好的Servlet只有映射成虚拟路径,客户端才能对其进行访问。
  • 如果某个某个Servlet映射路径为正斜杠,则为当前web应用的默认Servlet,处理其他Servlet都不能处理的请求。
@RequestMapping注解属性 描述
name 为映射地址指定别名
value 映射一个请求和一种方法,默认属性为value,可以省略属性名
method 请求方式,亦可以使用组合注解来省略method属性:@GetMapping,@PostMapping,@PutMapping,@DeleteMapping,@PatchMapping
params 指定Request必须包含某些参数
headers 指定Request必须包含某些指定的header的值
consumes 指定处理请求的提交内容类型(Content-Type)
produces 指定返回内容类型,必须是request请求头(Accept)所包含类型
  • 标注在方法上,该方法成为一个请求处理方法
  • 标注在类上,该类上的所有方法映射为相对于类级别的请求,类中所有请求映射到value人数性质所指定的路径下。
请求处理方法 描述
参数类型 HttpServletRequestHttpServletResponseHttpSessionModel, WebRequest,NativeWebRequest…
返回类型 ModelAndView(可以添加Model数据并指定视图),Model, Map, View, String(可以跳转视图,不能携带数据), void(只返回数据), HttpEntity,ResponseEntity, Callable,DeferredResult<?>

ModelAndView未能实现数据和视图的解耦,开发常使用String,通过Model参数将数据带入视图页面。

@Controller
@RequestMapping(value="/hello")
public class FirstController{
	@RequestMapping(value="/firstController")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		// 向模型对象中添加数据
		model.addAttribute("msg", "这是我的第一个Spring MVC程序");
		// 返回视图页面
		return "first";
	}
}

String返回类型实现重定向和请求转发:

  • 重定向:return “redirect:queryUser”;
  • 请求转发:return “forward:editUser”;

视图解析器

简化view的路径,访问时自动添加前缀和后缀

	
	
	     
	     <property name="prefix" value="/WEB-INF/jsp/" />
	     
	     <property name="suffix" value=".jsp" />
	bean>

一个基注解的SpringMVC应用

  1. 搭建项目,引入jar
  2. web.xml配置前端控制器

<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">
  <servlet>
    <servlet-name>springmvcservlet-name>
    <servlet-class>
              org.springframework.web.servlet.DispatcherServlet
         servlet-class>
    <init-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:springmvc-config.xmlparam-value>
    init-param>
    <load-on-startup>1load-on-startup>
  servlet>
  <servlet-mapping>
    <servlet-name>springmvcservlet-name>
    <url-pattern>/url-pattern>
  servlet-mapping>
web-app>
  1. 在springmvc-config.xml添加注解配置,定义视图解析器

<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-4.3.xsd
	   http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	
	<context:component-scan base-package="com.itheima.controller" />
	
	
	     
	     <property name="prefix" value="/WEB-INF/jsp/" />
	     
	     <property name="suffix" value=".jsp" />
	bean>
beans>  

  1. 创建控制类
package com.itheima.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 * 控制器类
 */
@Controller
@RequestMapping(value="/hello")
public class FirstController{
	@RequestMapping(value="/firstController")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		// 向模型对象中添加数据
		model.addAttribute("msg", "这是我的第一个Spring MVC程序");
		// 返回视图页面
		return "first";
	}
}

  1. 响应视图
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入门程序title>
head>
<body>
     ${msg}
body>
html>
  1. 启动项目,访问http://localhost:8080/“项目名称”/hello/firstController

你可能感兴趣的:(SpringMVC)