深圳网站维护服务的公司,广告设计公司是做什么的,做财经类新闻的网站,海东营销网站建设公司SpringMVC 1#xff0c;SpringMVC概述2#xff0c;SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器… SpringMVC 1SpringMVC概述2SpringMVC入门案例2.1 需求分析2.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器访问步骤10:修改Controller返回值解决上述问题步骤11:设置返回数据为json 1SpringMVC概述
学习SpringMVC我们先来回顾下现在web程序是如何做的咱们现在web程序大都基于三层架构来实现。
三层架构 浏览器发送一个请求给后端服务器后端服务器现在是使用Servlet来接收请求和数据 如果所有的处理都交给Servlet来处理的话所有的东西都耦合在一起对后期的维护和扩展极为不利 将后端服务器Servlet拆分成三层分别是web、service和dao web层主要由servlet来处理负责页面请求和数据的收集以及响应结果给前端service层主要负责业务逻辑的处理dao层主要负责数据的增删改查操作 servlet处理请求和数据的时候存在的问题是一个servlet只能处理一个请求 针对web层进行了优化采用了MVC设计模式将其设计为controller、view和Model controller负责请求和数据的接收接收后将其转发给service进行业务处理service根据需要会调用dao对数据进行增删改查dao把数据处理完后将结果交给service,service再交给controllercontroller根据需求组装成Model和View,Model和View组合起来生成页面转发给前端浏览器这样做的好处就是controller可以处理多个请求并对请求进行分发执行不同的业务操作。
随着互联网的发展上面的模式因为是同步调用性能慢慢的跟不是需求所以异步调用慢慢的走到了前台是现在比较流行的一种处理方式。
因为是异步调用所以后端不需要返回view视图将其去除前端如果通过异步调用的方式进行交互后台就需要将返回的数据转换成json格式进行返回SpringMVC主要负责的就是 controller如何接收请求和数据如何将请求和数据转发给业务层如何将响应数据转换成json发回到前端
介绍了这么多对SpringMVC进行一个定义 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单、开发便捷(相比于Servlet)灵活性强 这里所说的优点就需要我们在使用的过程中慢慢体会。
2SpringMVC入门案例
因为SpringMVC是一个Web框架将来是要替换Servlet,所以先来回顾下以前Servlet是如何进行开发的?
1.创建web工程(Maven结构)
2.设置tomcat服务器加载web工程(tomcat插件)
3.导入坐标(Servlet)
4.定义处理请求的功能类(UserServlet)
5.设置请求映射(配置映射关系)
SpringMVC的制作过程和上述流程几乎是一致的具体的实现流程是什么?
1.创建web工程(Maven结构)
2.设置tomcat服务器加载web工程(tomcat插件)
3.导入坐标(SpringMVCServlet)
4.定义处理请求的功能类(UserController)
5.设置请求映射(配置映射关系)
6.将SpringMVC设定加载到Tomcat容器中
2.1 需求分析
2.2 案例制作
步骤1:创建Maven项目
打开IDEA,创建一个新的web项目
步骤2:补全目录结构
因为使用骨架创建的项目结构不完整需要手动补全
步骤3:导入jar包
将pom.xml中多余的内容删除掉再添加SpringMVC需要的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.itheima/groupIdartifactIdspringmvc_01_quickstart/artifactIdversion1.0-SNAPSHOT/versionpackagingwar/packagingdependenciesdependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.10.RELEASE/version/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.tomcat.maven/groupIdartifactIdtomcat7-maven-plugin/artifactIdversion2.1/versionconfigurationport80/portpath//path/configuration/plugin/plugins/build
/project
**说明:**servlet的坐标为什么需要添加scopeprovided/scope? scope是maven中jar包依赖作用范围的描述 如果不设置默认是compile在在编译、运行、测试时均有效 如果运行有效的话就会和tomcat中的servlet-api包发生冲突导致启动报错 provided代表的是该包只在编译和测试的时候用运行的时候无效直接使用tomcat中的就避免冲突
步骤4:创建配置类
Configuration
ComponentScan(com.itheima.controller)
public class SpringMvcConfig {
}步骤5:创建Controller类
Controller
public class UserController {RequestMapping(/save)public void save(){System.out.println(user save ...);}
}
步骤6:使用配置类替换web.xml
将web.xml删除换成ServletContainersInitConfig
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {//加载springmvc配置类protected WebApplicationContext createServletApplicationContext() {//初始化WebApplicationContext对象AnnotationConfigWebApplicationContext ctx new AnnotationConfigWebApplicationContext();//加载指定配置类ctx.register(SpringMvcConfig.class);return ctx;}//设置由springmvc控制器处理的请求映射路径protected String[] getServletMappings() {return new String[]{/};}//加载spring配置类protected WebApplicationContext createRootApplicationContext() {return null;}
}步骤7:配置Tomcat环境 步骤8:启动运行项目 步骤9:浏览器访问
浏览器输入http://localhost/save进行访问会报如下错误: 页面报错的原因是后台没有指定返回的页面目前只需要关注控制台看user save ...有没有被执行即可。
步骤10:修改Controller返回值解决上述问题
前面我们说过现在主要的是前端发送异步请求后台响应json数据所以接下来我们把Controller类的save方法进行修改
Controller
public class UserController {RequestMapping(/save)public String save(){System.out.println(user save ...);return {info:springmvc};}
}
再次重启tomcat服务器然后重新通过浏览器测试访问,会发现还是会报错这次的错是404
出错的原因是如果方法直接返回字符串springmvc会把字符串当成页面的名称在项目中进行查找返回因为不存在对应返回值名称的页面所以会报404错误找不到资源。
而我们其实是想要直接返回的是json数据具体如何修改呢?
步骤11:设置返回数据为json
加ResponseBody注解
Controller
public class UserController {RequestMapping(/save)ResponseBodypublic String save(){System.out.println(user save ...);return {info:springmvc};}
}
再次重启tomcat服务器然后重新通过浏览器测试访问就能看到返回的结果数据 至此SpringMVC的入门案例就已经完成。
注意事项
SpringMVC是基于Spring的在pom.xml只导入了spring-webmvcjar包的原因是它会自动依赖spring相关坐标AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类AbstractDispatcherServletInitializer提供了三个接口方法供用户实现 createServletApplicationContext方法创建Servlet容器时加载SpringMVC对应的bean并放入WebApplicationContext对象范围中而WebApplicationContext的作用范围为ServletContext范围即整个web容器范围getServletMappings方法设定SpringMVC对应的请求映射路径即SpringMVC拦截哪些请求createRootApplicationContext方法如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行使用方式和createServletApplicationContext相同。createServletApplicationContext用来加载SpringMVC环境createRootApplicationContext用来加载Spring环境