当前位置: 首页 > news >正文

网站不推广如何排名嘉兴网站推广优化费用

网站不推广如何排名,嘉兴网站推广优化费用,html5网站制作教程,百度推广账号登录入口SpringMVC概述 1#xff0c;SpringMVC入门案例1.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器访问步骤10:修改Controller返回值解… SpringMVC概述 1SpringMVC入门案例1.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器访问步骤10:修改Controller返回值解决上述问题步骤11:设置返回数据为json 知识点1Controller知识点2RequestMapping知识点3ResponseBody 1.3 入门案例总结2.4 工作流程解析2.4.1 启动服务器初始化过程 1.4.2 单次请求过程 1.5 bean加载控制1.5.1 问题分析2.5.2 思路分析2.5.4 环境准备2.5.5 设置bean加载控制 知识点1ComponentScan SpringMVC是隶属于Spring框架的一部分主要是用来进行Web开发是对Servlet进行了封装。学习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)。灵活性强。 这里所说的优点就需要我们在使用的过程中慢慢体会。 1SpringMVC入门案例 因为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容器中 1.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 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环境。 知识点1Controller 名称Controller类型类注解位置SpringMVC控制器类定义上方作用设定SpringMVC的核心控制器bean 知识点2RequestMapping 名称RequestMapping类型类注解或方法注解位置SpringMVC控制器类或方法定义上方作用设置当前控制器方法请求访问路径相关属性value(默认)请求访问路径 知识点3ResponseBody 名称ResponseBody类型类注解或方法注解位置SpringMVC控制器类或方法定义上方作用设置当前控制器方法响应内容为当前返回值无需解析 1.3 入门案例总结 一次性工作 创建工程设置服务器加载工程导入坐标创建web容器启动类加载SpringMVC配置并设置SpringMVC请求拦截路径SpringMVC核心配置类设置配置类扫描controller包加载Controller控制器bean 多次工作 定义处理请求的控制器类定义处理请求的控制器方法并配置映射路径RequestMapping与返回json数据ResponseBody 2.4 工作流程解析 为了更好的使用SpringMVC,我们将SpringMVC的使用过程总共分两个阶段来分析分别是启动服务器初始化过程和单次请求过程 2.4.1 启动服务器初始化过程 服务器启动执行ServletContainersInitConfig类初始化web容器。 功能类似于以前的web.xml。 执行createServletApplicationContext方法创建了WebApplicationContext对象。 该方法加载SpringMVC的配置类SpringMvcConfig来初始化SpringMVC的容器。 加载SpringMvcConfig配置类 执行ComponentScan加载对应的bean。 扫描指定包及其子包下所有类上的注解如Controller类上的Controller注解。 加载UserController每个RequestMapping的名称对应一个具体的方法。 此时就建立了 /save 和 save方法的对应关系。 执行getServletMappings方法设定SpringMVC拦截请求的路径规则。 /代表所拦截请求的路径规则只有被拦截后才能交给SpringMVC来处理请求。 1.4.2 单次请求过程 发送请求http://localhost/saveweb容器发现该请求满足SpringMVC拦截规则将请求交给SpringMVC处理.解析请求路径/save由/save匹配执行对应的方法save( 上面的第五步已经将请求路径和方法建立了对应关系通过/save就能找到对应的save方法 执行save()检测到有ResponseBody直接将save()方法的返回值作为响应体返回给请求方。 1.5 bean加载控制 1.5.1 问题分析 入门案例的内容已经做完了在入门案例中我们创建过一个SpringMvcConfig的配置类Spring也创建过一个配置类SpringConfig。这两个配置类都需要加载资源那么它们分别都需要加载哪些内容? 我们先来看下项目目录结构: config目录存入的是配置类,写过的配置类有: ServletContainersInitConfigSpringConfigSpringMvcConfigJdbcConfigMybatisConfig controller目录存放的是SpringMVC的controller类 service目录存放的是service接口和实现类 dao目录存放的是dao/Mapper接口 controller、service和dao这些类都需要被容器管理成bean对象那么到底是该让SpringMVC加载还是让Spring加载呢? SpringMVC加载其相关bean(表现层bean),也就是controller包下的类.Spring控制的bean 业务bean(Service)功能bean(DataSource,SqlSessionFactoryBean,MapperScannerConfigurer等) 分析清楚谁该管哪些bean以后接下来要解决的问题是如何让Spring和SpringMVC分开加载各自的内容。 在SpringMVC的配置类SpringMvcConfig中使用注解ComponentScan我们只需要将其扫描范围设置到controller即可如 在Spring的配置类SpringConfig中使用注解ComponentScan,当时扫描的范围中其实是已经包含了controller,如: 从包结构来看的话Spring已经多把SpringMVC的controller类也给扫描到所以针对这个问题该如何解决。因为功能不同如何避免Spring错误加载到SpringMVC的bean? 2.5.2 思路分析 针对上面的问题解决方案也比较简单就是: 加载Spring控制的bean的时候排除掉SpringMVC控制的bean 具体该如何排除 方式一:Spring加载的bean设定扫描范围为精准范围例如service包、dao包等方式二:Spring加载的bean设定扫描范围为com.itheima,排除掉controller包中的bean方式三:不区分Spring与SpringMVC的环境加载到同一个环境中[了解即可] 2.5.4 环境准备 创建一个Web的Maven项目 pom.xml添加Spring依赖 ?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_02_bean_load/artifactIdversion1.0-SNAPSHOT/versionpackagingwar/packagingdependenciesdependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.10.RELEASE/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.16/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.6/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.2.10.RELEASE/version/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion1.3.0/version/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.tomcat.maven/groupIdartifactIdtomcat7-maven-plugin/artifactIdversion2.1/versionconfigurationport80/portpath//path/configuration/plugin/plugins/build /project 创建对应的配置类 public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {protected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext ctx new AnnotationConfigWebApplicationContext();ctx.register(SpringMvcConfig.class);return ctx;}protected String[] getServletMappings() {return new String[]{/};}protected WebApplicationContext createRootApplicationContext() {return null;} }Configuration ComponentScan(com.itheima.controller) public class SpringMvcConfig { }Configuration ComponentScan(com.itheima) public class SpringConfig { } 编写ControllerServiceDaoDomain类 Controller public class UserController {RequestMapping(/save)ResponseBodypublic String save(){System.out.println(user save ...);return {info:springmvc};} }public interface UserService {public void save(User user); }Service public class UserServiceImpl implements UserService {public void save(User user) {System.out.println(user service ...);} }public interface UserDao {Insert(insert into tbl_user(name,age)values(#{name},#{age}))public void save(User user); } public class User {private Integer id;private String name;private Integer age;//setter..getter..toString略 }2.5.5 设置bean加载控制 方式一:修改Spring配置类设定扫描范围为精准范围。 Configuration ComponentScan({com.itheima.service,comitheima.dao}) public class SpringConfig { }说明: 上述只是通过例子说明可以精确指定让Spring扫描对应的包结构真正在做开发的时候因为Dao最终是交给MapperScannerConfigurer对象来进行扫描处理的我们只需要将其扫描到service包即可。 方式二:修改Spring配置类设定扫描范围为com.itheima,排除掉controller包中的bean Configuration ComponentScan(valuecom.itheima,excludeFiltersComponentScan.Filter(type FilterType.ANNOTATION,classes Controller.class) ) public class SpringConfig { }excludeFilters属性设置扫描加载bean时排除的过滤规则。 type属性设置排除规则当前使用按照bean定义时的注解类型进行排除。 ANNOTATION按照注解排除ASSIGNABLE_TYPE:按照指定的类型过滤ASPECTJ:按照Aspectj表达式排除基本上不会用REGEX:按照正则表达式排除CUSTOM:按照自定义规则排除 大家只需要知道第一种ANNOTATION即可 classes属性设置排除的具体注解类当前设置排除Controller定义的bean 如何测试controller类已经被排除掉了? public class App{public static void main (String[] args){AnnotationConfigApplicationContext ctx new AnnotationConfigApplicationContext(SpringConfig.class);System.out.println(ctx.getBean(UserController.class));} }如果被排除了该方法执行就会报bean未被定义的错误 注意:测试的时候需要把SpringMvcConfig配置类上的ComponentScan注解注释掉否则不会报错 出现问题的原因是 Spring配置类扫描的包是com.itheimaSpringMVC的配置类SpringMvcConfig上有一个Configuration注解也会被Spring扫描到。SpringMvcConfig上又有一个ComponentScan把controller类又给扫描进来了。所以如果不把ComponentScan注释掉Spring配置类将Controller排除但是因为扫描到SpringMVC的配置类又将其加载回来演示的效果就出不来。解决方案也简单把SpringMVC的配置类移出Spring配置类的扫描范围即可。 最后一个问题有了Spring的配置类要想在tomcat服务器启动将其加载我们需要修改ServletContainersInitConfig public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {protected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext ctx new AnnotationConfigWebApplicationContext();ctx.register(SpringMvcConfig.class);return ctx;}protected String[] getServletMappings() {return new String[]{/};}protected WebApplicationContext createRootApplicationContext() {AnnotationConfigWebApplicationContext ctx new AnnotationConfigWebApplicationContext();ctx.register(SpringConfig.class);return ctx;} }对于上述的配置方式Spring还提供了一种更简单的配置方式可以不用再去创建AnnotationConfigWebApplicationContext对象不用手动register对应的配置类如何实现? public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {protected Class?[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}protected Class?[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}protected String[] getServletMappings() {return new String[]{/};} }知识点1ComponentScan 名称ComponentScan类型类注解位置类定义上方作用设置spring配置类扫描路径用于加载使用注解格式定义的bean相关属性excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)和具体项(classes)includeFilters:加载指定的bean需要指定类别(type)和具体项(classes) 后记 美好的一天到此结束下次继续努力欲知后续请看下回分解写作不易感谢大家的支持
http://www.zqtcl.cn/news/563788/

相关文章:

  • 网站域名账号江苏百度推广代理商
  • 专题网站建站对网站分析
  • 外贸出口网站建设如何搭建自己的网站服务器
  • 云南省建设厅网站职称评审房地产推广方案和推广思路
  • 湘潭建设路街道网站app的设计与开发
  • 《网站开发实践》 实训报告广告策划书案例完整版
  • 一级 爰做片免费网站做中学学中做网站
  • 网站排名如何提升网络营销的有哪些特点
  • 巨腾外贸网站建设个人主页网站模板免费
  • 有哪些网站免费做推广淄博网站电子商城平台建设
  • 网站建设的技术支持论文做网站买什么品牌笔记本好
  • 凡科网站后台在哪里.工程与建设
  • 静态网站源文件下载建设手机网站价格
  • 苏州做网站优化的网站开发邮件
  • 做网站怎么搭建环境阿里云大学 网站建设
  • 网站改版业务嵌入式培训推荐
  • 腾讯云 怎样建设网站网站开发 报价
  • 网络科技公司门户网站免费人脉推广官方软件
  • 建和做网站网络营销推广可以理解为
  • 太原市网站建设网站人防工程做资料的网站
  • 怎么做免费推广网站做网站第一部
  • 橙色网站后台模板WordPress的SEO插件安装失败
  • 做网站好还是做微信小程序好外包加工网外放加工活
  • 中国建设银行网站查征信电子商务网站建设及推广
  • 扫描网站漏洞的软件php网站后台验证码不显示
  • 诸城哪里有做网站的做网站的尺寸
  • 网站开发参考书目做网站推广赚钱吗
  • 九度网站建设网站做ppt模板
  • 浙江做公司网站多少钱评论回复网站怎么做
  • 江门网络建站模板虚拟主机价格一般多少钱