springmvc框架

2023-11-16

1.什么是MVC?

MVC就是一个分层架构模式:

        M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

        V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。

        C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

springMVC它是spring框架的一个分支,该springMVC框架主要完成的功能是:==接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示== 可以把它理解为和Servlet干的工作是一样的。

2. springmvc如何搭建。依赖,配置文件,web.xml

1.创建maven-web工程。

用原来的web.xml文件替换现在的web.xml文件

2.在pom.xml中引入springmvc的依赖

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

3.注册DispatcherServlet到web.xml文件上

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
​
    <!--默认DispactherServlet加载的springmvc配置文件:WEB-INF/[servlet-name]-servlet.xml-->
    <!--指定自己的配置文件-->
    <servlet>
        <servlet-name>DispactherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--classpath:表示编译后的路径-->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispactherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

4.创建自己的springmvc.xml配置文件

 5.在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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <!--包扫描-->
    <context:component-scan base-package="com.xdh.controller"/>
​
</beans>

6.创建一个类,在类上加上@Controller 并且在方法上加上@RequestMapping注解

@Controller //该注解标记该类为处理层类---类似@WebServlet
public class HelloController {
​
    @RequestMapping(value = "/hello01") //把请求路径映射到该方法上。
    public String hello01(){
        System.out.println("hello!");
​
        return "hello01.jsp"; //响应一个页面
    }
}

3.springmvc如何接受请求的参数。

      [1]单个参数--方法中生成这个参数名

只需要给定方法的参数,参数必须要求和请求的参数名称一致。


      [2]多个参数--封装一个java实体类,方法中声明该实体类即可。


      [3]接受的为日期类型参数.

在时间类型的属性上添加一个注解:@DateTimeFormat(pattern = "yyyy-MM-dd")

 //yyyy年  MM:月 dd日  24小时制  
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;//出生日期

 在springmvc配置文件上开启注解驱动

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

4. 处理静态资源 

springmvc的前端控制器DispatcherSerlvet也把静态资源拦截器。放行静态资源

    <!--放行静态资源:哪些资源为静态资源。css img js html-->
    <mvc:default-servlet-handler/>

4. springmvc如何保存数据到网页: request,session ,model

request: 作用范围: 同一个请求内有效。setAttribute(key,value)

session:作用范围: 同一个会话有效,只要会话不关闭会一直有效。setAttribute(key,value)

model:默认是request范围,加@SessionAttributes会增加session范围

package com.xdh.controller;
​
import com.xdh.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;
​
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
​

/**
 * @author: xmhz45
 * @create: 2022/6/12
 */
@Controller
@SessionAttributes(value = {"user","user2"}) //设置哪些model的key在session范围
public class HelloController02 {
​
    @RequestMapping("/list")
    public String list(HttpServletRequest request){
        //查询到一个学生信息。
        Student student=new Student(1,"张三","110@qq.com",new Date());
        //可以保存到request中,同一个请求
        request.setAttribute("s",student);
        return "list.jsp"; //转发
    }
    @RequestMapping("/list2")
    public String list2(Model model){ //如果你使用request,你和tomcat容器绑定了。 建议使用Model.
        //查询到一个学生信息。
        Student student=new Student(1,"张三","110@qq.com",new Date());
        //可以保存到model中,同一个请求 和request是一
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springmvc框架 的相关文章

  • 踩坑vue中嵌套iframe项目,嵌套在iframe中的项目无法登录!

    解决方案原文 这个我试了下是谷歌浏览器做了限制 在edge上可以正常登录 我遇到这种情况主要是我的项目用的是cookie存储的登录状态 需要设置cookie的域名 使其在嵌入的网站和网站域名下都能访问cookie 但是我设置了还是没用 我最
  • go cli脚手架开发利器——cobra库的初体验

    文章目录 关于 说明 cobra 简介 cobra 概念 Commands Flags Args 教程正文 demo1 快速了解 demo 知识点 Command创建命令 demo2 使用参数验证器 钩子函数 demo 知识点 参数验证方法
  • 最新xmind2022版思维导图如何使用详解教程

    前段时间和大家盘点了五种高效的学习方法 没有看过的小伙伴戳这里 最科学的学习方法盘点 讲到思维导图笔记法的时候 本狗子给大家推荐了一款免费的思维导图软件 xmind软件 然后好多小伙伴都加我问关于思维导图的使用方法 于是今天我就做了一份关于
  • 微信小程序编译bug---Hbuilderx编译时一直卡在编译界面

    项目场景 微信小程序新增某功能模块 问题描述 使用Hbuilderx开发微信小程序 正常开发中 在某次重新保存代码并编译后一直卡在编译界面 如图 图为Hbuilderx界面 因为此时没有编译完成 所以微信开发者工具界面一片空白 报错为 ap
  • Python,OpenCV使用KNN来构建手写数字及字母识别OCR

    Python OpenCV使用KNN来构建手写数字及字母识别OCR 1 原理 1 1 手写数字识别 1 2 字母识别 2 源码 2 1 手写数字OCR 2 2 字母OCR 参考 这篇博客将介绍如何借助OpenCV提供的手写数字及字母数据集

随机推荐

  • Linux用户空间与内核空间

    Linux用户空间与内核空间 2012 08 30 15 39 1969人阅读 评论 1 收藏 举报 linux linux内核 struct user system allocation Linux 操作系统和驱动程序运行在内核空间 应用
  • 2.Xaml 停靠框架

    1 运行效果图片 2 Xaml程序
  • ChatGPT实现知识图谱生成

    知识图谱生成 在之前章节中 我们尝试过让 ChatGPT 对一段文本做实体识别和词性分析 结果很不错 但如果是需要长期留存下来 后续在不同场景下快速查询分析 最好还是要把数据存入到专门的图数据库中 才能方便随时读取 本节 我们试试让 Cha
  • 《计算机网络原理》(谢希仁)笔记——第二章

    此为本人观看韩立刚老师视频所做笔记与总结 下面为视频连接 https www bilibili com video av10921041 from search seid 733222547867341420 第二章 物理层 主要知识点为数
  • Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    重点 1 正数截位 直接看截掉的最高位是不是一 是的话进一 负数截位 截的最高位为1且其它位不全是0进一 2 饱和 也就是大于求的结果 整数变为符号位为0 其它位为1 负数变成第一位为1 其它位为0 一 引言 在利用Verilog写数字信号
  • Python入门到放弃(一)

    介绍python和库文件管理 python是解释型语言 Python的特点 简单 易学 速度快 免费开源 高层语言 可移植性 解释性 面向对象 也支持面向过程 可扩展性 可嵌入性 丰富的库 规范的代码 在cmd中退出python 输入exi
  • Tomcat优化相关问题

    1 你怎样给 tomcat 去调优 JVM 参数调优 Xms 表示 JVM 初始化堆的大小 Xmx表示 JVM 堆的最大值 这两个值的大小一般根据需要进行设置 当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出 并且导致应用服务崩溃
  • Spark(七)——累加器和广播变量

    5 累加器 通过在驱动器中调用SparkContext accumulator initialValue 方法 创建出存有初始值的累加器 返回值为org apache spark Accumulator T 对象 其中 T 是初始值 ini
  • ObjectARX编程(八) --------有名对象字典、用户字典和字典中的对象

    在AutoCAD数据库中 对象字典是字典类型数据库对象的总称 按其层次关系可分为两类 一是有AutoCAD数据库直接管理的第一层对象字典 二是有第一层对象字典管理的第二层对象字典 为了便于区别 我们把第一层对象字典称为有名对象字典 用于在应
  • 浅谈std::move和std::forward原理

    前言 本文主要整理了C 11中std move和std forward的原理 这对理解C 的移动拷贝有很重的意义 一 左值和右值 左值 一般来说 能在内存中取得其地址 即是左值 右值 在内存在无取得其地址的 即是右值 note 左值持久 右
  • Python中MNE库模拟原始脑电数据

    研究脑电算法的时候发现了一个问题 如何评价模型的准确性 之前的工作流程都是先用公开数据集的数据训练好模型 然后放到实测数据上进行参数微调 在公开数据集上进行模型的选择主要是因为公开数据集的数据质量较好 可以排除硬件的影响 从而专心于算法的研
  • RTL仿真验证

    注意 个人学习笔记 后续会进行修改完善 目前还在初步学习阶段 参考gitee上 从零开始写RISC V处理器 在写testbench文件时 有两点需要注意的 第一点就是在testbench文件里加上读指令文件的操作 initial begi
  • Pandas中插入新的行或列

    python中插入新行或列 前言 一 新增列 二 新增行 前言 在特定位置插入行或者列是比较常用的操作 具体的插入操作主要是在哪插入和插入什么 提示 以下是本篇文章正文内容 下面案例可供参考 一 新增列 在pandas中新增列用到的是ins
  • 编写C++中的两个类 一个只能在栈中分配空间 一个只能在堆中分配(腾讯2012面试题)

    编写C 中的两个类 一个只能在栈中分配空间 一个只能在堆中分配 腾讯2012面试题 这道题挺好的 HeapOnly cpp include
  • windows修改远程端口号

    windows远程桌面默认使用的是3389 为了提高服务器安全性 可以修改默认端口3389为其它端口号 端口使用原则 TCP与UDP段结构中端口地址都是16比特 所以端口范围在0 65535 对于这65536个端口号有以下的使用规定 1 端
  • java 根据已有ppt模板修改其内容

    现有需求 根据数据库数据 定期更新 ppt 报表内容 本文修改内容 主要是 ppt中的图表 测试ppt 代码 package org springblade bigdata ureport service impl import java
  • (一)win10安装hadoop 2.8.5(详细步骤)

    目录 1 JDK 2 Hadoop 2 1 下载 2 2 配置环境变量 2 3 配置文件 2 4 格式化hdfs 已解决 格式化总是报错 The markup in the document following the root eleme
  • JavaSwing结合windowBuilder以及BeautyEye开源UI框架快速实现美观的界面

    前言 虽然Java Swing现在公司用的比较少 但是我们平时学习中经常会用它来做一些小项目或者学校的任务 这个时候我们就发现Swing提供给我们的原生控件太丑了 下面教大家如何快速搭建美观的JavaSwing桌面程序 1 准备工作 首先通
  • GRPC详解

    什么是GRPC 官网 gRPC gRPC 是一个现代开源高性能远程过程调用 RPC 框架 可以在任何环境中运行 它可以有效地连接数据中心内和跨数据中心的服务 并提供对负载平衡 跟踪 健康检查和身份验证的可插入支持 它还适用于分布式计算的最后
  • springmvc框架

    1 什么是MVC MVC就是一个分层架构模式 M即model模型是指模型表示业务规则 在MVC的三个部件中 模型拥有最多的处理任务 被模型返回的数据是中立的 模型与数据格式无关 这样一个模型能为多个视图提供数据 由于应用于模型的代码只需写一