初识springmvc

news2024/9/21 1:43:56

狂神的servlet回顾就不在这里写了。可以翻之前的笔记。

原生开发:

创建webapp的maven项目。

也就是四个文件 (不用思考里面的代码,直接CV先走一遍流程)

HelloController:

package com.Li.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//注意:这里我们先导入Controller接口
public class HelloController implements Controller {

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //ModelAndView 模型和视图
        ModelAndView mv = new ModelAndView();

        //封装对象,放在ModelAndView中。Model
        mv.addObject("msg","HelloSpringMVC!");

        //封装要跳转的视图,放在ModelAndView中
        mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp

        return mv;
    }
}


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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--视图解析器:DispatcherServlet给他的ModelAndView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--Handler-->
    <bean id="/hello" class="com.Li.controller.HelloController"/>



</beans>

hello.jsp:

<%--
  Created by IntelliJ IDEA.
  User: Li
  Date: 2022/12/1
  Time: 17:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>

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">

    <!--1.注册DispatcherServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!--启动级别-1-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--/ 匹配所有的请求;(不包括.jsp)-->
    <!--/* 匹配所有的请求;(包括.jsp)-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>




</web-app>

pom.xml(外面那个):

   <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

配置完tomcat之后直接run。之后路径上输入hello测试


404问题:

 

 如果没有lib,添加一个lib文件夹。

 选中lib点+号,之后点第一个

将这些全部导入,apply之后OK即可。


理解:

大致分为这三部分,对照视频理解每个文件级代码块的作用。


注解开发:

HelloController:

package com.Li.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
//@RequestMapping("/hello")看第11行的注释,如果这行不注释的话,就是11行的效果
public class HelloController {

    //localhost:8080/hello/h1
    @RequestMapping("/h1")
    public String hello(Model model){
        //封装数据,向模型中添加值,可以在JSP页面取出并渲染
        model.addAttribute("msg", "Hello,SpringMVCAnnotation");

        return "hello";//会被视图解析器处理
    }

}

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

    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
    <context:component-scan base-package="com.Li.controller"/>
    <!-- 让Spring MVC不处理静态资源 过滤的作用,过滤css,mp3,html等等-->
    <mvc:default-servlet-handler />
    <!--
    支持mvc注解驱动
        在spring中一般采用@RequestMapping注解来完成映射关系
        要想使@RequestMapping注解生效
        必须向上下文中注册DefaultAnnotationHandlerMapping
        和一个AnnotationMethodHandlerAdapter实例
        这两个实例分别在类级别和方法级别处理。
        而annotation-driven配置帮助我们自动完成上述两个实例的注入。
     -->
    <mvc:annotation-driven />

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

</beans>

hello.jsp:

<%--
  Created by IntelliJ IDEA.
  User: Li
  Date: 2022/12/2
  Time: 22:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>

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">

    <!--1.注册servlet-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联-->
        <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>

    <!--所有请求都会被springmvc拦截 -->
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

测试:

重点在于理解,代码都很简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SecureCRT之Xmodem操作步骤

以锐捷S3760为例&#xff1a; 故障现象&#xff1a;s3760无法加载&#xff0c;需要重刷RGOS。 一、使用控制线连接s3760&#xff0c;开机加载引导&#xff0c;按Ctrl_B进入“BOOT MENU”页面&#xff1a; 选择【0】进入XModem操作界面&#xff1a; 说明&#xff1a; 0--更新…

android 开发——疑难杂症ANR简单介绍与解析

一、ANR介绍 ANR-application not response&#xff0c;应用无响应&#xff0c;应用开发者一般是关注自己的APP进程有没有出现&#xff0c;系统开发者会关注当前系统运行起来后整体上所有的APP进程有没有出现ANR&#xff0c;从这句话可以知道&#xff0c;只有应用进程的主线程…

多元正态分布-参数估计-书后习题回顾总结

重点考察知识点汇总 协方差矩阵 协方差矩阵为对称矩阵协方差矩阵的对角线为各分量的方差&#xff0c;其余位置(i,j)(i,j)(i,j)表示的是分量iii和分量jjj的协方差 多元正态分布的线性组合仍然服从多元正态分布 设X∼Np(μ,Σ)X\sim N_{p}(\mu,Σ)X∼Np​(μ,Σ)&#xff0c;B…

Python从零到就业

Python面向对象编程五步曲基础阶段01-Python的注释02 乱码原因02-Python变量03-数据类型04-数据类型转换05-Python运算符06-Python输入07-Python输出08-占位格式符(补充)09-Python分支10-Python循环(while)11-Python循环(for)12-Python循环打断待更新基础阶段 01-Python的注释…

C++输出四舍五入的一些小问题

嗯…今天刚去练了一会简单题 就我大一刚上学做的那种题&#xff0c;嗯&#xff0c;然后我发现我还是得调试&#xff0c;想骂人了&#xff0c;就啥样的题呢, 嗯,就这样的题&#xff0c;虽然我大一可能也过不了这种题&#xff0c;hh 现在题目里面要求一些四舍五入的问题 刚才没整…

网站都变成灰色的了,代码是怎么实现的呢?

今天来聊一聊页面的滤镜&#xff0c;或者说换肤更合适些。根据技术栈不同&#xff0c;页面换肤可以分为 web 端和 app 端&#xff0c;因此本文通过以下两部分介绍 PC 端 APP 端 一、PC 端 有关 PC 端的一键换肤&#xff0c;这个操作常用&#xff0c;所以大概率是有某个全局字…

Spring框架(三):SpringAop思想底层实现和日志应用(一):Spring代理实现

Spring框架&#xff08;三&#xff09;&#xff1a;SpringAop思想底层实现和应用&#xff08;日志&#xff09;引子Aop简介通过SpringBean实现Aop引子 痛定思痛&#xff0c;主要问题出现在自己雀氏不熟悉框架基础、一些面试题&#xff0c;以及sql的使用淡忘了。 本章节的开始是…

[附源码]计算机毕业设计springboot学生综合数据分析系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

java之NIO编程

NIO介绍 前面介绍了BIO为阻塞IO,其阻塞表现在两个方面:服务端等待客户端连接时的阻塞以及连接后没有发生数据传输时的阻塞。NIO是非阻塞IO,那么NIO是如何非阻塞的呢&#xff1f;带着这个疑问&#xff0c;开始研究NIO。 NIO有三大组件:Selector 选择器、Channel 管道、buffer 缓…

【网络层】MTU、IP数据报分片、IP详解、NAT

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录最大传送单元MTU--------以太网MTU是1500BIP数据报分片-------标识字段----同一数据报分片采用同一标识标志字段-----------只有两位有意义-------------中间为DF------dont fragment 不许分片--------DF1禁…

ConcurrentHashMap 成员、方法分析

常量 // 散列表数组(即table)长度最大限制private static final int MAXIMUM_CAPACITY 1 << 30;// table默认长度private static final int DEFAULT_CAPACITY 16;// 最大可能的数组长度&#xff0c;toArray方法使用(官方直译)&#xff0c;常用方法中未涉及static final…

[附源码]JAVA毕业设计简易在线教学系统(系统+LW)

[附源码]JAVA毕业设计简易在线教学系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

JVM 垃圾回收

JVM 垃圾回收如何判断哪些对象需要进行回收垃圾收集算法Java自动内存管路主要是针对对象的内存回收和对象的内存分配&#xff0c;其中Java自动内存管理中最核心的就是堆内存中对象的分配和回收 如何判断哪些对象需要进行回收 1.引用计数法 给对象中添加以恶搞引用计数器 每当…

PyTorch合集2

先说一个小内存的部署 然后在说一下刚出的pytorch2.0 100%向后兼容&#xff0c;一行代码将训练提速76% 前段时间&#xff0c;PyTorch 团队在官方博客宣布 Pytorch 1.13 发布&#xff0c;包含 BetterTransformer 稳定版等多项更新。在体验新特性的同时&#xff0c;不少人也在期…

58-66-hive-数据类型-分区-分桶

58-hive-数据类型-分区&#xff1a; 分区表&#xff08;将数据分开放&#xff0c;理解市区&#xff0c;指定分区更快&#xff0c;避免全数据扫描&#xff0c;提高查询效率&#xff0c;对hive的一种优化&#xff09; 分区表实际是对应一个 HDFS 文件系统上的独立的文件夹&…

回归预测 | MATLAB实现基于RF随机森林的工业增加值预测(多因素、多指标)

回归预测 | MATLAB实现基于RF随机森林的工业增加值预测(多因素、多指标) 目录 回归预测 | MATLAB实现基于RF随机森林的工业增加值预测(多因素、多指标)预测效果基本介绍程序设计拓展学习参考资料预测效果 基本介绍<

Raspberry Pi 4B树莓派学习笔记

这两天在学习Raspberry Pi 4B树莓派&#xff0c;这篇笔记就梳理一下目前学习到的一些知识&#xff0c;加强自己的记忆&#xff0c;整理一下思路&#xff0c;也希望能给大家带来帮助&#xff01;感兴趣的小伙伴欢迎评论区留言或者私信博主&#xff01; 目录 一、什么是树莓派 …

C/C++_IO缓存问题

平常在练习的时候&#xff0c;总是忽略IO的缓存&#xff0c;这篇笔记记录下C和C的缓存问题。 1 什么是缓存 缓存就是程序在内存中开辟的用来存放数据的空间&#xff0c;之所以叫缓存是因为这个变量时用来暂存数据用的。比如下面的语句&#xff0c; int a ; int *p malloc(…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高考信息发布平台cnj61

最近大四学弟学妹们开始准备设计了&#xff0c;有一些问题问我&#xff0c;比如设计怎么做&#xff0c;有没有模板等等吧&#xff0c;大家都没有去学校&#xff0c;老师都是通过远程指导的&#xff0c;答辩也是远程答辩&#xff0c;这种情况下同学们不在一起&#xff0c;可能碰…

PPT素材、PPT模板免费下载

想要PPT模板、PPT素材、PPT图表、PPT教程等相关素材&#xff0c;一定要知道这几个网站&#xff0c;不仅能免费下载&#xff0c;质量还非常高&#xff0c;话不多说&#xff0c;直接上内容。1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_%E6%9E%81%E7%AE%80_0.html?vNT…