首页 > 其他分享 >springMVC学习笔记

springMVC学习笔记

时间:2022-10-09 22:06:00浏览次数:40  
标签:控制器 http springMVC www springframework 学习 springmvc 笔记 org


为什么要学习springMVC,springMVC和struts2的比较

SpringMVC与Struts2区别

对比项目

SrpingMVC

Struts2

优势

国内市场情况

有大量用户,一般新项目启动都会选用springmvc

有部分老用户,老项目组,由于习惯了,一直在使用。

国内情况,springmvc的使用率已经超过Struts2

框架入口

基于servlet

基于filter

本质上没太大优势之分,只是配置方式不一样

框架设计思想

控制器基于方法级别的拦截,处理器设计为单实例

控制器基于类级别的拦截, 处理器设计为多实例

由于设计本身原因,造成了Struts2,通常来讲只能设计为多实例模式,相比于springmvc设计为单实例模式,Struts2会消耗更多的服务器内存。

参数传递

参数通过方法入参传递

 

参数通过类的成员变量传递

Struts2通过成员变量传递参数,导致了参数线程不安全,有可能引发并发的问题。

与spring整合

与spring同一家公司,可以与spring无缝整合

需要整合包

Springmvc可以更轻松与spring整合

简单的使用srpingmvc的开发步骤

 创建工程

导入jar包

 编写控制类

package com.angus.springmvc.controller;

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

//使用注解标识这是一个控制器
@Controller
public class HellowControll {
//注解用来绑定请求地址
@RequestMapping("hello")
public ModelAndView hello() {
System.out.println("hello springmvc...");
ModelAndView mav = new ModelAndView();
//设置模型数据,用于传递jsp
mav.addObject("msg", "hello springmvc...");
//设置视图名字,用于相应用户
mav.setViewName("/WEB-INF/jsp/hello.jsp");

return mav;
}
}

创建页面

 创建和配置springmvc.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:p="http://www.springframework.org/schema/p"
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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

<!-- 配置controller扫描包 -->
<context:component-scan base-package="com.angus.springmvc.controller" />
</beans>

 

 在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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>01-springmvc</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>
<!-- 核心控制器的配置 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
<!-- 加载核心的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>

springmvc代码的执行流程

springMVC学习笔记_mvc

 ① 客户端发送名为 hello.action 的请求

 ② 请求被<servlet-mapping> 将带 .action 的请求拦截下来,交给名为springmvc的<servlet>核心控制器来处理。

 ③<servlet>核心控制器

 ④<servlet>核心控制器加载一些参数

 ⑤加载springmvc的配置文件

 ⑥开启控制类的包扫描

 ⑦找到控制器类

 ⑧到控制器类里边去,找到带 @Controller的注解

 ⑨ @Controller 与 @RequestMapping 相对照

 ⑩ @RequestMappin和请求相对应

 最后加载控制类,完成相应,将结果处理结果返回。

springmvc默认组件的加载

处理器映射器

在spring的核心配置文件里边配置一个处理器映射器

还需要配置一个处理器适配器

springMVC学习笔记_mvc_02

映射器和适配器是成套使用的,如果一个用最新的,那么另外一个也需要用最新的。

显然,这么长的一个名字,我们不一定能能够记下来,那么该怎么办呢,还可以

springMVC学习笔记_spring_03

接着我们为了方便在控制器里边对页面的访问更加简单,我们还可以配置 视图解析器

springMVC学习笔记_mvc_04

springmvc的架构体系

springMVC学习笔记_xml_05

springmvc的核心组件是:处理器映射器,处理器适配器,视图解析器,还有前端控制器

整个流程就是,用户发送一个请求,到前端控制器,然后前端控制器,到处理器映射器上去找谁来处理,接着处理器映射器返回一个处理器执行连,然后到处理器适配器上去处理,处理器适配器执行handler,然后返回一个ModelAndView,然后再回到前端控制器,请求解析视图,返回view对象,渲染视图,最后相应用户。

springmvc简单的参数传递

springMVC学习笔记_xml_06

@RequestParam

传递简单的参数,第一个用途是,当传的参数名不相同的时候;第二个用途,可以限制必须传递参数,第三个用途是,设置默认的传递参数。

传递pojo对象

springMVC学习笔记_spring_07

传递包装的pojo

要点:通过点(.)传递属性。

标签:控制器,http,springMVC,www,springframework,学习,springmvc,笔记,org
From: https://blog.51cto.com/u_15812686/5741677

相关文章

  • 2022-2023 20221319《计算机基础与程序设计》第六周学习总结
    作业信息这个作业属于那个班级:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06作业目标:《计算......
  • 学习python-Day69
    今日学习内容一、权限类的使用使用步骤:写一个类,继承BasePermission重写has_permission方法在方法中校验用户是否有权限(request.user)就是当前登录用户有权......
  • Day10函数基础学习以及计算机硬盘修改数据的原理(了解)
    今日内容概要文件内光标的移动实战演练计算机硬盘存取数据的原理文件内容修改函数简介函数的语法结构函数的定义与调用内容详细文件内光标移动案例(了解)im......
  • 2022-2023-1 20221328 《计算机基础与程序设计》第六周学习总结
    作业信息班级:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学进程......
  • 第三章学习总结
    第3章Unix/Linux进程管理1知识点归纳1.1多任务处理一般来说,多任务处理指的是同时进行几项独活动的能力。在计算机技术中,多任务处理指的是同时执行几个独立的任务。多......
  • 第三章学习笔记
    第三章Unix/Linux进程管理一、知识点归纳以及收获内容多任务处理该部分主要介绍了多任务处理的定义,多任务处理指的时同时进行几项独立活动的能力。多任务处理是通过......
  • bootstrap入门学习笔记
    本来这记着一天的笔记,网上搜了一下教程手册,整理得比我的强多了。果断删掉。相应的bootStrap教程网址 ​​https://www.runoob.com/bootstrap/bootstrap-typography.html......
  • 【sqli-labs】学习--待续
    预备知识:数字型注入:这种sql语句中处理的是整型,不需要使用单引号来闭合变量的值。首先输入id=1',此时因为不是整型,sql语句会执行出错,抛出异常。然后输入id=1and1=1,此......
  • 20201322陈俊池学习笔记6
    20201322陈俊池学习笔记63.1多任务处理多任务处理指的是同时执行几个独立的任务。在单处理器(单CPU)系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间......
  • drf学习笔记
    今日内容概要权限类使用频率类使用认证类源码分析权限类源码分析部分频率类源码分析鸭子类型今日内容详细权限类使用第一步:写一个类,继承BasePermission第......