Javaweb学习笔记(Spring MVC入门)_ジ時光不老的博客-程序员秘密

技术标签: 学习  Javaweb学习  

Javaweb学习笔记(Spring MVC入门)

Spring MVC框架

Spring MVC是Spring提供的一个实现Web MVC设计模式的轻量级Web框架。
Spring MVC的特点:
1.是Spring框架的一部分,可以方便地利用Sring所提供的其他功能。
2.灵活性强,易于与其他框架集成
3.提供了一个前端控制器DispatcherServlet,使开发人员无须额外开发控制对象
4.支持多种视图技术。
5.使用XML配置文件

SpringMVC的工作流程

(1)用户通过客户端向服务器发送请求,请求会被SpringMVC的前端控制器DispatcherServlet(前端控制器)所拦截。
(2)DispatcherServlet拦截到请求后,会调用HandleMapping(处理器的映射器)
(3)处理器映射器根据请求的URL找到具体的处理器,生成处理器对象即处理器拦截器一并返回给DispatcherServlet
(4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)
(5)HandlerAdapter会调用并执行Handler(处理器),这里的处理器值程序中的Controller类,也被称为后端控制器
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中包含视图名或包含模型和视图名
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet
(8)DispatcherServlet会根据ModelAndView对象选择一个合适的ViewResolver(视图解析器)
(9)ViewResolver解析后,会向DispatcherServlet中返回具体的View(视图)
(10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)
(11)视图渲染结果会返回客户端浏览器显示。

第一个Spring MVC应用

(1)创建项目引入JAR包
在这里插入图片描述
(2)配置前端控制器
在web.xml配置Spring MVC的前端控制器

<?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>chapter11</display-name>
  <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-config.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>
</web-app>

在< servlet>中配置了Spring MVC的前端控制器DispatcherServlet,并通过其子元素< init-param>配置了Spring MVC的配置文件,< load-on-startup>元素中的1表示容器会在启动时立即加载这个Servlet;在< servlet-mapping>中,通过< url-pattern>元素的“/”会将有URL拦截并交由DispatcherServlet。
(3)配置Controller类
在src目录下,创建一个com.itheima.controller,在包中创建控制器类。

package com.itheima.controller;

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

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

public class FirstController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		ModelAndView mav=new ModelAndView();
		mav.addObject("msg", "这是我的第一个Spring MVC程序");
		mav.setViewName("/WEB-INF/jsp/first.jsp");
		return mav;
	}

}

(4)创建Spring MVC的配置文件,配置控制器映射信息
在src目录下创建配置文件springmvc-config.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 name="/firstController" class="com.itheima.controller.FirstController"/>
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

先定义了一个名称为“/firstController”的Bean,该Bean会将控制类映射到“/firstController”请求中,然后配置了处理器映射器和BeanNameUrlHandlerMapping,和处理器适配器SimpleControllerHandlerAdapter牟其中处理映射器用于将处理器Bean中的name进行处理器查找,而处理器适配器用于完成对FirstController处理器中handleRequest()方法的调用。
(5)创建视图
在WEB-INF中创建一个jsp文件夹,并在文件夹中创建一个页面文件first.jsp,在该页面中使用EL表达式获取msg中的值

<%@ 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>
	${msg}
</body>
</html>

(6)启动项目
启动Tomcat,访问:http://localhost:9090/mvc1/firstController
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_50834939/article/details/123741392

智能推荐

js正则表达式语法_浪子尘晨的博客-程序员秘密

1. 正则表达式规则1.1 普通字符    字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。    举例1:表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程

Rtthread学习笔记(一)空闲线程钩子函数_Davidysw的博客-程序员秘密

有活干活,没事学点,记录笔记方便查看。一、空闲线程钩子函数空闲钩子函数是空闲线程的钩子函数,如果设置了空闲钩子函数,就可以在系统执行空闲线程时,自动执行空闲钩子函数来做一些其他事情,比如系统指示灯、功耗管理、看门狗喂狗、CPU使用率。可以设置4个空闲钩子函数。设置 / 删除空闲钩子的接口如下:rt_err_t rt_thread_idle_sethook(void (*hook)(void...

(1.1.4)C语言运算符优先级_fei20121106的博客-程序员秘密

同一优先级的运算符,运算次序由结合方向所决定。简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符括号成员第一;        //括号运算符[]() 成员运算符.  ->全体单目第二;        //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四;   //这个"余"是指取余运算即%

编程十年 (3):初识计算机_Surenon的博客-程序员秘密

编程十年 (3):初识计算机本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/04/20/programming10years-03.html作者:Anders Liu1995年,上初中,凡是带电的玩意都喜欢。担任班里电教课代表,就是负责帮老师放放幻灯换换灯管什么的。1996年,初二。学校开了一门新鲜课——打字课。课程...

JSP通用分页组件,带查询条件_晓呆同学的博客-程序员秘密_jsp分页插件

—— 如果一段代码重复出现的次数多了,我们就需要把它独立出来!分页功能的代码就是这样的,在需要展示列表的页面,我们基本都需要加上分页功能,如果某天boss想要修改分页功能的样式~,天呐~~,我们不能去一个一个的改吧。下边给大家分享一个自己封装的通用分页组件。1. 效果展示 2. 使用方式 1 )在需要显示分页信息的位置,直接引入pagination.jsp页面。...

Gibbs采样_谓之小一的博客-程序员秘密_gibbs采样

在MCMC采样和M-H采样中,我们讲到M-H采样已经可以很好的解决蒙特卡罗方法需要的任意概率分布的样本集问题。但是M-H采样有两个缺点:一是需要计算接受率,在高维情况下计算量非常大,同时由于接受率的原因导致算法收敛时间变长。二是有些高维数据,特征的条件概率分布方便求解,但特征的联合分布很难求解。因此需要改进M-H算法,来解决上面提到的两个问题,下面我们详细介绍Gibbs采样方法。1.细致平衡条件...

随便推点

从零搭建DevOps平台环境(三)-jenkins 安装_JFS_1024的博客-程序员秘密

这周本来打算找时间,把jenkins重新搭建一个环境,也正好把过程写一下,截点图之类的。好歹内容多一些。不过出现了一些比较紧急的问题。没有抽时间搭建起来,果然还是懒…不过我翻了一下jenkins的官网介绍,顿时觉得没必要写了,给自己得偷懒找了一个相对好点得解释。官网文档写的很好,而且也是中文得,各种搭建方式都有。我觉得没必要写了,是的,暂时不写了。不过好像官网访问得时候有点慢哈。来个TODO …...

没关系,是爱情啊 经典台词_李大侠的博客的博客-程序员秘密

1,不是爱得更深而变成了弱者,而是心灵失去了从容才变成了弱者。“我想要得到忠告的焦急心理”,“我因为去爱了所以很幸福,没关系”......这就是从容。——张宰烈《没关系,是爱情啊》  2,我们都是第一次过自己的人生,所以会笨拙生疏,所以会觉得抱歉,所以有点小失误也是可以的!  3,世界上最性感的关系:男女之间的友情。——《没关系,是爱情啊》  4,不是爱得更深而变成了弱者,

区间素数筛法_Z2Min_的博客-程序员秘密

题目描述筛法是一种简单检定素数的算法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛法(sieve of Eratosthenes)。以上是百度百科的定义。不得不佩服古希腊人的智慧。今天希望你在古人智慧的基础上解决问题:给定正整数a和b,请问区间[a,b)内有多少个素数。 输入有多组样例,每组样例有2个正整数a,b(a&amp;...

element重置表单,解决页面第二次打开数据还在的问题_itxcr的博客-程序员秘密

重置表单可解决表单数据缓存的情况,每次打开dialog或者切页面时候,先清空表单和验证,保证每次表单都是干净的// formName为表单的ref值this.$nextTick(()=&gt;{ this.$refs[formName].resetFields();})

本文介绍快手极速版的邀请码怎么用的方法_果果无奈者的博客-程序员秘密

快手极速版邀请码【541 123 831】教程在下方。很多人反感邀请码的输入,其实大可不必,既然App推出了邀请制,肯定会对输入邀请码的人给与额外的奖励,比如快手极速版,你输入邀请码就给你一个红包1块起,最高56元,可提现,如果你看快手,建议你按照下面的教程安装一个快手极速版,和快手内容一致不一样的地方是你刷视频会给你钱,快手极速版其实是快手APP的一个简化版,通常来说,冠以极速版的软件都具有一定的赚钱功能,快手极速版也是如此。在你看视频的同时,会给予一定的金币奖励,金币每天都会自动兑换成现金,可以提现。那

I2CBus介绍_喜欢雨天的我的博客-程序员秘密

i2C介绍概述特征术语位传输数据有效起始停止i2C介绍 I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线支持任何IC 生产工艺(CMOS、双极型)。通

推荐文章

热门文章

相关标签