Java培优班 - 第三十五天 - springmvc框架 - 入门 - HelloWorld

文章目录

  • 1 MVC设计模式
    • 1.1 什么是设计模式
    • 1.2 MVC设计模式
  • 2 初识SpringMVC
    • 2.1 Servlet的缺点
    • 2.2 SpringMVC简介
    • 2.3 spring执行原理
  • 3 springmvc入门案例
    • 3.1创建Maven—Javaweb工程
    • 3.2 在web.xml中配置springmvc
    • 3.3 创建并配置springmvc-config.xml 用 s t s 。 。 。 \color{#f01}{用sts。。。} sts
    • 3.4 创建并实现HelloController类
    • 3.5 创建并实现home.jsp
    • 3.6 访问测试


1 MVC设计模式

1.1 什么是设计模式

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。

使用设计模式的目的:
为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。

设计模式使代码编写真正工程化;
设计模式是软件工程的基石脉络,如同大厦的结构一样。

设计模式就是一种模子,经过多年实践锤炼形成一套行之有效的完成某个特定任务的步骤和方式。
===================================================================================
例如:
		西凤酒的酿造过程,酿造工序,前后不能变,温差不能变,这样做就是好喝,稍微改动就变味道了。
		
		再如,北京烤鸭,就是那样做,就是那些调料腌制,变量配比,味道口感就是不如人家。

1.2 MVC设计模式

MVC设计模式是一种通用的软件编程思想
在MVC设计模式中认为, 任何软件都可以分为三部分组成:

  • 控制程序流转的控制器(Controller)
  • 封装数据处理数据的模型(Model)
  • 负责展示数据的视图(view)

并且在MVC设计思想中要求一个符合MVC设计思想的软件应该保证上面这三部分相互独立,互不干扰,每一个部分只负责自己擅长的部分。

如果某一个模块发生变化,应该尽量做到不影响其他两个模块。
这样做的好处是,软件的结构会变得更加的清晰,可读性强。
有利于后期的扩展和维护,并且代码可以实现复用。
Java培优班 - 第三十五天 - springmvc框架 - 入门 - HelloWorld_第1张图片
Java培优班 - 第三十五天 - springmvc框架 - 入门 - HelloWorld_第2张图片
view jsp
controller 接收请求
pojo 封装模型
service 检查、调用
dao 查数据、传pojo


文章目录

  • 1 MVC设计模式
    • 1.1 什么是设计模式
    • 1.2 MVC设计模式
  • 2 初识SpringMVC
    • 2.1 Servlet的缺点
    • 2.2 SpringMVC简介
    • 2.3 spring执行原理
  • 3 springmvc入门案例
    • 3.1创建Maven—Javaweb工程
    • 3.2 在web.xml中配置springmvc
    • 3.3 创建并配置springmvc-config.xml 用 s t s 。 。 。 \color{#f01}{用sts。。。} sts
    • 3.4 创建并实现HelloController类
    • 3.5 创建并实现home.jsp
    • 3.6 访问测试

2 初识SpringMVC

2.1 Servlet的缺点

  1. 通常情况下,一个Servlet类只负责处理一个请求
    若项目中有成百上千个请求需要处理,就需要有成百上千个Servlet类,这样会使得项目中Servlet类的个数暴增;( S p r i n g M V C 可 以 处 理 一 个 模 块 \color{#f01}{SpringMVC可以处理一个模块} SpringMVC
  2. 在Servlet3.0版本之前,每一个Servlet都需要在web.xml文件中至少做八行配置信息,
    配置内容多且繁琐。
    当Servlet特别多时,web.xml配置量太多,不利于团队开发; S p r i n g M V C 无 需 太 多 配 置 \color{#f01}{SpringMVC无需太多配置} SpringMVC
  3. 当通过客户端提交参数到服务器,通过Servlet进行接收时,无论数据本身是什么格式,
    在Servlet中一律按照字符串进行接收,后期需要进行类型转换,
    request.getParameter();
    request.getParameterValues()
    都只能获得字符串(数组)
    复杂类型还需要特殊处理,特别麻烦!
  4. servlet具有容器依赖性
    必须放在服务器中运行,
    不利于单元测试

2.2 SpringMVC简介

  • Springmvcspring框架的一个模块,
  • springspringmvc无需中间整合层整合
  • Springmvc是一个基于mvcweb框架

2.3 spring执行原理

Java培优班 - 第三十五天 - springmvc框架 - 入门 - HelloWorld_第3张图片

  • 用户发送请求 至 前端控制器(DispatcherServlet);
    提示:
    DispatcherServlet的作用:相当于转发器、中央处理器,是整个流程控制的中心
    • 接收请求,
    • 调用其它组件处理请求,
    • 响应结果,
  • 前端控制器(DispatcherServlet)收到请求后调用处理器映射器(HandlerMapping)
  • 处理器映射器(HandlerMapping)找到具体的Controller
    (这里找到的是 C o n t r o l l e r 名 字 字 符 串 \color{#f01}{Controller名字字符串} Controller
    (可以根据xml配置、注解进行查找),
    并将Controller返回给DispatcherServlet
  • 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。
    处理器适配器经过适配调用具体的Controller
    (ControllerserviceDao ⇒ 数据库)
  • Controller执行完成后返回ModelAndView
    提示:
    • Model(模型数据,即Controller处理的结果,Map)
    • View(逻辑视图名,即负责展示结果的JSP页面的名字)
  • 处理器适配器(HandlerAdapter)将controller执行的结果(ModelAndView)返回给前端控制器(DispatcherServlet);
  • 前端控制器(DispatcherServlet)将执行的结果(ModelAndView)传给视图解析器(ViewReslover)
  • 视图解析器(ViewReslover)根据View(逻辑视图名)解析后返回具体JSP页面
  • 前端控制器(DispatcherServlet)根据Model对View进行渲染
    (即将模型数据填充至视图中);
  • 前端控制器(DispatcherServlet)将填充了数据的网页响应给用户。

其中整个过程中需要开发人员编写的部分有

  • Controller
  • Service
  • Dao
  • View

文章目录

  • 1 MVC设计模式
    • 1.1 什么是设计模式
    • 1.2 MVC设计模式
  • 2 初识SpringMVC
    • 2.1 Servlet的缺点
    • 2.2 SpringMVC简介
    • 2.3 spring执行原理
  • 3 springmvc入门案例
    • 3.1创建Maven—Javaweb工程
    • 3.2 在web.xml中配置springmvc
    • 3.3 创建并配置springmvc-config.xml 用 s t s 。 。 。 \color{#f01}{用sts。。。} sts
    • 3.4 创建并实现HelloController类
    • 3.5 创建并实现home.jsp
    • 3.6 访问测试

3 springmvc入门案例

需求

  • 通过浏览器访问http://localhost/项目名称/hello 地址,在控制台输出 “hello springmvc”
  • 将请求转向 /WEB-INF/pages/home.jsp 页面

步骤

3.1创建Maven—Javaweb工程

1、通过Maven创建javaweb工程

Java培优班 - 第三十五天 - springmvc框架 - 入门 - HelloWorld_第4张图片
2、在pom.xml中引入springmvc所需jar包:将下面的配置直接拷贝到pom.xml中的根标签内


<properties>
	<junit.version>4.10junit.version>
	<spring.version>4.1.3.RELEASEspring.version>
properties>

<dependencies>
	
	<dependency>
		<groupId>junitgroupId>
		<artifactId>junitartifactId>
		<version>${junit.version}version>
		<scope>testscope>
	dependency>

	
	<dependency>
		<groupId>org.springframeworkgroupId>
		<artifactId>spring-webmvcartifactId>
		<version>${spring.version}version>
	dependency>
	
	
	<dependency>
		<groupId>javax.servletgroupId>
		<artifactId>servlet-apiartifactId>
		<version>2.4version>
		<scope>providedscope>
	dependency>
	
	
	<dependency>
		<groupId>com.fasterxml.jackson.coregroupId>
		<artifactId>jackson-databindartifactId>
		<version>2.5.1version>
	dependency>
dependencies>

3.2 在web.xml中配置springmvc


<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">
	
	
	<servlet>
		<servlet-name>springmvcservlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
		
		
		<init-param>
			<param-name>contextConfigLocationparam-name>
			<param-value>classpath:springmvc-config.xmlparam-value>
		init-param>		
	servlet>
	
	<servlet-mapping>
		<servlet-name>springmvcservlet-name>
		<url-pattern>/url-pattern>
	servlet-mapping>

web-app>

若不拦截全路径,而要要拦截指定路径 ****
写成 : / ∗ ∗ ∗ ∗ / /****/ //
url 写成: ∗ ∗ ∗ / 类 名 ( 有 设 置 的 话 ) / 方 法 名 / ***/类名(有设置的话)/方法名/ ///

3.3 创建并配置springmvc-config.xml 用 s t s 。 。 。 \color{#f01}{用sts。。。} sts

直接复制下面配置文件的内容即可!


<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc
						http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
						http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
						http://www.springframework.org/schema/context
          				http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	
	
	<mvc:default-servlet-handler/>
	
	
	<mvc:annotation-driven>mvc:annotation-driven>
	
	
	<context:component-scan base-package="com.tedu.controller">
	context:component-scan>
	
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/pages/"/>
		<property name="suffix" value=".jsp"/>
	bean>
	
	
beans>

3.4 创建并实现HelloController类

1、创建com.tedu.controller.HelloController类

Java培优班 - 第三十五天 - springmvc框架 - 入门 - HelloWorld_第5张图片

2、实现HelloController类

package com.tedu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller /* 这个注解表示当前类是属于控制层 */
public class HelloController {
	/* http://localhost/项目名称/hello */
	@RequestMapping("/hello") 
	/* 这个注解用于:映射请求的资源路径(/hello)和当前方法(hello)的对应关系
	 * 当浏览器请求 /hello 路径时, 将会访问(执行)当前这个方法 */
	public String hello() {
		System.out.println("hello springmvc...");
		return "home";
	}
}

3.5 创建并实现home.jsp

在WEB-INF/pages/目录下,创建home.jsp页面。
WEB-INF/pages/home.jsp

<%@ page pageEncoding="utf-8"%>

<html>
<head>
	<meta charset="utf-8"/>
head>
<body>
	<h1>hello springmvc~~~h1>
body>
html>

3.6 访问测试

打开浏览器,输入url地址:http://localhost/hello 地址,访问结果如下:
在这里插入图片描述
哈哈,一脸懵逼吧
Java培优班 - 第三十五天 - springmvc框架 - 入门 - HelloWorld_第6张图片

你可能感兴趣的:(java,培优班,#,spring-mvc)