Spring MVC 入门总结

来源:互联网 发布:奢侈品复刻1:1淘宝 编辑:程序博客网 时间:2024/05/16 12:21

spring mvc 是什么

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的

spring mvc 流程图

这里写图片描述

个人理解的流程(如有不对请指正)
首先在web.xml中配置DispatcherServlet,拦截客户端的http请求,在根据自己的spring mvc配置文件 找到相应的controller,对请求进行相应的处理后,返回ModelAndView类对象,DispatcherServlet生成相应的model模型,把model传入相应的view视图,实现显示。

核心类与接口

DispatcherServlet – 前置控制器
HandlerMapping接口 – 处理请求的映射
HandlerMapping接口的实现类
SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
HandlerAdapter接口 – 处理请求的映射
AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上
Controller接口 – 控制器
HandlerInterceptor 接口–拦截器
ViewResolver接口的实现类
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
View接口
JstlView类
LocalResolver接口
HandlerExceptionResolver接口 –异常处理
SimpleMappingExceptionResolver实现类
ModelAndView类

常见的注解

@Controller  负责注册一个bean 到spring 上下文中
@RequestMapping 控制器指定可以处理哪些 URL 请求
@RequestBody 用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上
@ResponseBody 用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
@ModelAttribute    

  在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法

  在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中
@RequestParam 在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法
@ExceptionHandler 注解到方法上,出现异常时会执行该方法
@ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常

spring mvc用户登录入门案例

业务逻辑:等index.jsp中填写用户信息,然提交到后台的/hello控制器中进行校验,检验通过后跳转到successs.jsp,检验失败跳转到error.jsp中

第一步导入要使用的jar包
这里写图片描述

第二步在WEB-INF下建立文件夹jsp,再jsp文件夹中新建successs.jsp和error.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><p>hello spring mvc</p>    ${map.name}</body></html>
<%@ 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>    ${message1 }</body></html>

第三步配置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>  <!-- 配置springmvc的文件 -->   <servlet>      <servlet-name>springmvc</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <!--加载src目录下的springmvc的配置文件 srpingmvc-servlet.xml-->      <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc-servlet.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>  </servlet>  <!-- 拦截所有的请求-->  <servlet-mapping>      <servlet-name>springmvc</servlet-name>      <url-pattern>/</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list></web-app>

第四步 配置src目录下的springmvc-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.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">                        <!-- scan the package and the sub package -->    <context:component-scan base-package="com.springMVC.test"/>    <!-- don't handle the static resource -->    <mvc:default-servlet-handler />    <!-- if you use annotation you must configure following setting -->    <mvc:annotation-driven />    <!-- configure the InternalResourceViewResolver -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"            id="internalResourceViewResolver">        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />        <!-- 前缀 -->        <property name="prefix" value="/WEB-INF/jsp/" />        <!-- 后缀 -->        <property name="suffix" value=".jsp" />    </bean></beans>

第五步建立控制器hellController.java
在src目录下的com.springMVC.test包下创建类hellController.java

package com.springMVC.test;import java.util.HashMap;import java.util.Map;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;/*★★★★★★这里导包的时候一定要对 ,,不然使用的ModelAndView对象是不正确的*/import org.springframework.web.servlet.ModelAndView; @Controller@RequestMapping("/c")public class helloController {      @RequestMapping("/hello")      public String sayHello(@RequestParam("username")String userName,@RequestParam("password")String password){          if(userName.equals("alleged")&&password.equals("root")){              System.out.println(userName+password);              return "successs";          }else{              System.out.println(userName+password);              return "error";          }        }      //带数据返回}

最后一步建立主页index.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><link rel="stylesheet" type="text/css" href="style.css" /></head><body>    <form method="post" action="/springMvc/c/hello">        <input type="text" required="required" placeholder="用户名" name="username"></input>        <input type="password" required="required" placeholder="密码" name="password"></input>        <button class="but" type="submit">登录</button>    </form>    <a href="contacts.html">contacts</a></body></html>
0 0