SpringMVC学习日志一

一、MVC流程图

  1.传统MVC

  2.SpringMVC

二、一个简单的SpringMVC

  1.导入相关的包

  2.配置DispatcherServlet 在web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>SpringMVC-01</display-name>
  <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>

  <!-- springmvc的配置文件必须在【servlet-name】-servlet.xml -->
  <!--
  <servlet>
      <servlet-name>springMVC</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <url-pattern>*.do</url-pattern>
  </servlet-mapping> -->

  <servlet>
      <servlet-name>springMVC</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

       <!-- DispatcherServlet加载指定的springmvc的配置文件 -->
       <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMVC-annotation.xml</param-value>
       </init-param>
  </servlet>
  <servlet-mapping>
       <servlet-name>springMVC</servlet-name>
       <url-pattern>*.do</url-pattern>
  </servlet-mapping>

</web-app>

  3.配置springmvc的配置文件

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

    <!-- 包扫描:扫描 -->
    <context:component-scan base-package="com.zhiyou100.klb.annotation"></context:component-scan>

    <!-- 开启注解驱动 -->
    <mvc:annotation-driven />

    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans> 

  4.建立Controller

package com.zhiyou100.klb.annotation;

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

@Controller //等价于<bean class="com.zhiyou100.klb.annotation.MyController" />
public class MyController {

    @RequestMapping("/list.do")    //requestMapping:表示的就是你的访问地址
    public ModelAndView list() {
        System.out.println("查询所有");
        ModelAndView mv = new ModelAndView();
        mv.setViewName("login");
        mv.addObject("userName", "查询所有");
        return mv;
    }

    @RequestMapping("/delete.do")
    public String delete() {
        System.out.println("删除");
        return "login";
    }

    @RequestMapping("/save.do")
    public String save() {
        System.out.println("保存");
        return "login";
    }

}

 三、SpringMVC的流程

  1. 客户发出请求。http://localhost:8080/springmvc-01/my.do
  2. 到达web.xml文件中 DispatcherServlet.查看是否符合url的要求
  3. DispatcherServlet就会查询springmvc的配置文件,找HandlerMapping,根据bean的名称查找相应的controller.
  4. 找到我的MyController类,执行该类中handleRequestInternal方法。
  5. 根据返回的modelAndView在找springmvc配置文件中视图解析器,把viewName和prefix以及suffix做了一个拼接,把拼接的页面展示给客户。

四、常见的HandlerMapping

  1 BeanNameUrlHandlerMapping 根据bean标签的名称找到对应的Controller类

  <!-- 配置一个handlerMapping 默认有一个, 可以不配,默认为name访问 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

    <!-- 注册自己的controller类 -->
    <bean name="/login.do" class="com.zhiyou100.klb.controller.MyController1"></bean>

  2. SimpleUrlHandlerMapping 根据bean的id查找对应的Controller类

  <!-- 根据ID查询相应的controller类
        这里包含了ID与URL地址的映射关系
     -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/a.do">my1</prop>
                <prop key="/b.do">my2</prop>
            </props>
        </property>
    </bean>

    <bean id="my1" class="com.zhiyou100.klb.controller.MyController1"></bean>
    <bean id="my2" class="com.zhiyou100.klb.controller.MyController2"></bean>

  3.ControllerClassNameHandlerMapping 根据controller类的名字找到对应的Controller

    <!-- 配置一个handlerMapping,使用类名访问-->
    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>

    <!-- 访问时,类中除了controller外其他全部小写,包括controller2 -->
    <bean class="com.zhiyou100.klb.controller.MyController2"></bean>

  4.使用注解来替代配置信息。

  1. 额外aop的jar包
  2. 在springmvc配置文件中加入如下代码。
   <!-- 包扫描:扫描 -->
    <context:component-scan base-package="com.zhiyou100.klb.annotation"></context:component-scan>

    <!-- 开启注解驱动 -->
    <mvc:annotation-driven />

    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

  3.创建Controller类

package com.zhiyou100.klb.annotation;

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

@Controller //等价于<bean class="com.zhiyou100.klb.annotation.MyController" />
public class MyController {

    @RequestMapping("/list.do")    //requestMapping:表示的就是你的访问地址
    public ModelAndView list() {
        System.out.println("查询所有");
        ModelAndView mv = new ModelAndView();
        mv.setViewName("login");
        mv.addObject("userName", "查询所有");
        return mv;
    }

    @RequestMapping("/delete.do")
    public String delete() {
        System.out.println("删除");
        return "login";
    }

    @RequestMapping("/save.do")
    public String save() {
        System.out.println("保存");
        return "login";
    }

}

原文地址:https://www.cnblogs.com/kklb/p/11455704.html

时间: 2024-10-10 01:17:42

SpringMVC学习日志一的相关文章

SpringMVC学习日志二

一.回顾 1.MVC流程 2.SpringMVC流程 二.接收的参数为日期Date时 1.在相应的controller页追加 @InitBinder public void initBinder(ServletRequestDataBinder binder){ //只要网页中传来的数据格式为yyyy-MM-dd 就会转化为Date类型 binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateForma

SpringMVC学习日志三

一.回顾 1.1 如果接受的参数为日期时间类型,需要在controller中进行处理.  @InitBinder  使用实体类封装时间类型 @DateTimeFormat 1.2 如何保存数据让网页获取该数据. ModelAndView: Model: 默认为request作用域 Map: HttpServletRequest: HttpSession: @SessionAttributes(name={}) 1.3 处理静态资源.  如果DispatcherServlet处理的请求地址为/,那

SpringMVC学习系列(10) 之 异常处理

在项目中如何处理出现的异常,在每个可能出现异常的地方都写代码捕捉异常?这显然是不合理的,当项目越来越大是也是不可维护的.那么如何保证我们处理异常的代码精简且便于维护呢?这就是本篇要讲的内容->异常处理. 在Spring MVC中我们可以通过以下2中途径来对异常进行集中处理: 一.继承HandlerExceptionResolver接口实现自己的处理方法,如: public class MyHandlerExceptionResolver implements HandlerExceptionRe

springmvc学习笔记--REST API的异常处理

前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出异常, 返回的内容是500+的错误页面, 而不是json内容, 这让移动端的调用方很难处理. 本文主要讲述对于rest api, springmvc对异常的解决处理方案. 系列整理: springmvc学习笔记系列的文章目录: • idea创建springmvc项目 • 面向移动端的REST API

SpringMVC学习系列(9) 之 实现注解式权限验证

对大部分系统来说都需要权限管理来决定不同用户可以看到哪些内容,那么如何在Spring MVC中实现权限验证呢?当然我们可以继续使用servlet中的过滤器Filter来实现.但借助于Spring MVC中的action拦截器我们可以实现注解式的权限验证. 一.首先介绍一下action拦截器: HandlerInterceptor是Spring MVC为我们提供的拦截器接口,来让我们实现自己的处理逻辑,HandlerInterceptor 的内容如下: public interface Handl

springmvc学习笔记(20)-拦截器

springmvc学习笔记(20)-拦截器 springmvc学习笔记20-拦截器 拦截定义 拦截器配置 针对HandlerMapping配置 类似全局的拦截器 拦截测试 拦截器应用实现登陆认证 需求 登陆controller方法 登陆认证拦截实现 本文主要介绍springmvc中的拦截器,包括拦截器定义和的配置,然后演示了一个链式拦截的测试示例,最后通过一个登录认证的例子展示了拦截器的应用 拦截定义 定义拦截器,实现HandlerInterceptor接口.接口中提供三个方法. public

springmvc学习笔记(19)-RESTful支持

springmvc学习笔记(19)-RESTful支持 springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控制器配置 对静态资源的解析 本文介绍RESTful的概念,并通过一个小样例展示怎样编写RESTful风格的controller和配置前端控制器,最后展示静态资源的解析 概念 首先附上两篇博客链接 理解RESTful架构 - 阮一峰的网络日志 RESTful API 设计指南- 阮一峰的网络日志 RESTful架构.就是眼下最流

SpringMVC学习(十二)——SpringMVC中的拦截器

SpringMVC学习(十二)--SpringMVC中的拦截器 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下SpringMVC中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法. SpringMVC中拦截器的定义和配置 SpringMVC中拦截器的定义 在SpringMVC中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的三个方法,如下: public class Inter

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys