栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC引言以及SpringMVC环境搭建(含tomcat下载及环境搭建)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC引言以及SpringMVC环境搭建(含tomcat下载及环境搭建)

1. SpringMVC的引言

为了使Spring可插入MVC架构,SpringframeWork在Spring基础上开发了SpringMVC框架,从而在使用Spring进行WEB开发时可以选择使用Spring的SpringMVC框架作为WEB开发的控制器框架。

# springmvc的引言

1. springmvc 由来 诞生

	由来:基于spring框架基础之上开发的一个全新的框架 springmvc
	
	作用:SpringMVC 可以作为Web开发时的控制器框架	用来替换现有项目中的Struts2控制器框架
	
	目的:为了使现有项目中使用spring框架在mvc架构中存在自己的位置 因此开发了一个springmvc框架
	
	MVC:编程步骤	三层编程
	
	M:model模型	 	  service+dao+eneity	Jdbc|Mybatis
	V:view视图		  webapp 页面		   	   jsp(动态页面)|html
	C:Controller 控制器 action					servlet|Struts2 ======> SpringMVC 控制器框架

2. SpringMVC 引言
	
	SpringMVC 典型mvc框架 控制器框架  它是在spring基础之上进行二次开发 用来替换原有项目中struts2框架
	
3. 为什么是SpringMVC(优势)

	1). Spring框架流行程度非常之高 90% ====> SpringMVC框架可以与Spring框架进行无缝整合 spring springmvc
	
	2). SpringMVC 运行效率 高于struts2运行效率 action 创建一个新的Action SpringMVC默认单例处理请求
	
	3). SpringMVC 推荐使用注解式 其注解式开发更高效更灵活

springmvc运行流程与struts2运行流程对比:

# springmvc与struts2运行流程对比
控制器做的三件事:
		接收请求
		调用业务对象
		处理请求
		
		
struts2的执行流程:
	首先要去接收请求,客户端得在浏览器上发起一个请求,它会优先被项目中web.xml中所配的
	StrutsPrepareAndExecuteFitler给拦截掉,Fitler为什么要拦截这些请求呢,是因为
	它要把这些请求拿到之后全部交给Struts2框架去处理请求,Fitler拿到这个请求之后,它会
	去找在项目中配置的叫struts.xml的配置文件,在struts.xml的配置文件中,我们配置了
	package ,它做的第一件事会去解析
	请求,那怎么解析这个请求呢,拦截到这个请求之后,我是不是就可以去解析你的url啊,在
	url中取出对应的namespace,去找一个名字叫做namespace这样的一个package,找到这个
	package之后再去解析url最后的这块内容,比如访问的是findAll,那我在这里去找action
	标签名字叫findAll的,
	类和类中执行的方法都找到了,你是不是就可以进入你自己的控制器xxxAction了呀,
	
	xxxAction
	public String find..(){
	
		1. 收集数据 用的是成员变量
		2. 调用业务对象
		3. 处理响应
		
		return "ok";
	}
	
	到这步的话其实它就可以
	直接进入我们的action去对应去执行相应的方法,走到这个方法的执行之后,方法执行的时候做三件事:收集数据、
	调用业务对象、处理响应,处理响应的时候最终返回了一个字符串,这个字符串呢它还会回到当前的这个请求的
	 (action)里面去找,
	找一个/index.jsp,做对应的视图,那所对应的视图找到了其实整个请求就开始返回了,
	我告诉Fitler说我当前这个请求请求的是xxAction下的find方法,这个find方法最终处理完业务之后返回的是/index.jsp,
	那我们在响应回来的请求还要经过Fitler啊,最终Fitler给我们一个响应,响应给我们index.jsp,如果有数据的话展示我们的
	数据,当然要展示这个数据在调用业务这块要把数据放入作用域中啊,
	
	
springmvc的运行流程:
	springmvc作为一个控制器,它也要去处理请求,所以客户端同样得发起一个请求,其实这个请求它就是一个url,这个url
	一定包含url:/user/findAll这样的一个路径,springmvc它作为一个控制器框架,它如果想要把客户端的这些请求都拿到,
	拿到之后才能自己去处理这些请求,所有的控制器框架在处理的时候都是这样,它得先把所有的请求都拿到它才能去处理,所以
	springmvc也需要我们在web.xml中配置这样的一个东西DispatacherServlet,通过这个类名字的最后你可以发现它是一个
	Servlet,日后配置的时候得用Servlet便签,servletmapping有一个url-pattern/test代表日后只拦test请求,写一个
	url-pattern/aa代表只拦aa,写一个url-pattern/user/findAll才能拦findAll这个请求啊,那问题来了,我日后总不能
	一个请求我配一次DispatacherServlet吧,servletmapping我得配多少个啊,请求那么多,业务那么复杂,这是不是就没人
	用了啊,所以这里注意,servlet我想让它拦到所有请求该怎么拦呢,这个url-pattern这我们不要写url-pattern 
    @RequestMapping()       // 有一个value属性,用来指定该方法的请求路径
    public String hello(){
        // 1. 收集数据
        // 2. 调用业务方法
        System.out.println("hello spring mvc");
        // 3. 处理响应
        return "index"; // 页面逻辑名       日后就会跳转到根(webapp)下面的index.jsp
    }
}

因为老师有一节课忘记录了,里面应该包含tomcat的下载和配置,接下来我来演示一下tomcat相关的操作:

首先进入镜像网站进行下载:点击进行镜像网站下载

下载完成之后打开下载好的压缩包进行解压

解压完成之后,因为在使用时可能存在乱码问题,我们先来修改一下tomcat的配置文件

首先我们来解决一下命令行窗口cmd的乱码问题:

因为我将tomcat安装在了D盘,所以我需要打开D:apache-tomcat-8.5.76conf下的

之后我们再来解决一下在idea中运行时post提交的参数乱码

在这句话set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"之后加上 -Dfile.encoding=UTF-8

变成 set “JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8”

测试一下tomcat是否安装成功

出现上面这个控制台之后在浏览器中输入http://localhost:8080,看到下面这个页面表示安装成功

之后我们在idea中配置tomcat

web文件的部署:

并会弹出这个窗口

另外:index.jsp的源码



Hello World!

说明在地址栏输入helllo,它最终进入了上面的方面,输出 hello spring mvc 这句话,最后跳转到了 index.jsp

本来springmvc.xml文件中的内容是:

    
    
    
    
    


    
    
        
        
        
    

但是由于有一个更加强大的标签,替代了映射器和适配器的创建,而且还有更加强大的功能

    
    
    



    
    

    
    
        
        
        
    

开发的Controller组件:

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

@RequestMapping(value = "/hello")   //value可以省略不写直接写"hello", / 也可以不写
@Controller         // 这个是一个控制器组件,@Controller能够用来创建HelloController这个对象
                    // 有一个value属性,可以设置在工厂中的唯一标识,默认类名首字母小写
public class HelloController {

    
    @RequestMapping(value = "/hello")    // 有一个value属性,用来指定该方法的请求路径
    public String hello(){
        // 1. 收集数据
        // 2. 调用业务方法
        System.out.println("hello spring mvc");
        // 3. 处理响应
        return "index"; // 页面逻辑名       日后就会跳转到根(webapp)下面的index.jsp
    }

    @RequestMapping("save")
    public String save(){
        // 1. 收集数据
        // 2. 调用业务方法
        System.out.println("save method ....");
        // 3. 处理响应
        return "index";
    }
}

如果只在方法上加@RequestMapping标签,在访问时直接输入方法上的@RequestMapping中的value即可(/模块/方法@RequestMapping标签上的value),但是如果在类上也加了@RequestMapping标签,输入时得**/模块/类中@RequestMapping的value/方法上@RequestMapping的value**

另外,有其他方法时,可以输入其他方法的@RequestMapping的value进行访问

只有方法上有@RequestMapping标签:

类上和方法上都有@RequestMapping标签:

类上和方法上都有@RequestMapping标签,并且访问其他方法:

tomcat学习于:

Tomcat安装及配置教程

idea配置tomcat的方法(详细图文步骤

Tomcat乱码问题解决

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号