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

新材建设局网站十大免费最亏的免费app

新材建设局网站,十大免费最亏的免费app,怎么做各个地图网站的认证,学服装设计有前途吗文章目录一、spring-mvc.xml 中组件转化为注解形式二、DispatcherServlet加载核心配置类三、消除web.xml一、spring-mvc.xml 中组件转化为注解形式 跟之前全注解开发思路一致&#xff0c; xml配置文件使用核心配置类替代&#xff0c;xml中的标签使用对应的注解替代 <!-- 组件…

文章目录

  • 一、spring-mvc.xml 中组件转化为注解形式
  • 二、DispatcherServlet加载核心配置类
  • 三、消除web.xml

一、spring-mvc.xml 中组件转化为注解形式

跟之前全注解开发思路一致, xml配置文件使用核心配置类替代,xml中的标签使用对应的注解替代

<!-- 组件扫描web层 -->
<context:component-scan base-package="com.itheima.controller"/><!--注解驱动-->
<mvc:annotation-driven/><!--配置文件上传解析器-->
<bean id="multipartResolver" 
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/><!--配置拦截器-->
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/*"/><bean class="com.itheima.interceptor.MyInterceptor01"></bean></mvc:interceptor>
</mvc:interceptors><!--配置DefaultServletHttpRequestHandler-->
<mvc:default-servlet-handler/>

⚫ 组件扫描,可以通过@ComponentScan注解完成;
⚫ 文件上传解析器multipartResolver可以通过非自定义Bean的注解配置方式,即@Bean注解完成

@Configuration
@ComponentScan("com.itheima.controller")
public class SpringMVCConfig {@Beanpublic CommonsMultipartResolver multipartResolver() {CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();multipartResolver.setDefaultEncoding("UTF-8");multipartResolver.setMaxUploadSize(3145728);multipartResolver.setMaxUploadSizePerFile(1048576);multipartResolver.setMaxInMemorySize(1048576);return multipartResolver;}
}

< mvc:annotation-driven>、< mvc:default-servlet-handler /> 和 < mvc:interceptor > 怎么办呢?SpringMVC 提供了一个注解@EnableWebMvc,我们看一下源码,内部通过@Import 导入了DelegatingWebMvcConfiguration类

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({DelegatingWebMvcConfiguration.class})
public @interface EnableWebMvc {}
@Configuration(proxyBeanMethods = false)
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite();// 从容器中注入WebMvcConfigurer类型的Bean@Autowired(required = false)public void setConfigurers(List<WebMvcConfigurer> configurers) {if (!CollectionUtils.isEmpty(configurers)) {this.configurers.addWebMvcConfigurers(configurers);}}//省略其他代码
}

WebMvcConfigurer类型的Bean会被注入进来,然后被自动调用,所以可以实现WebMvcConfigurer接口,完成一些解析器、默认Servlet等的指定,WebMvcConfigurer接口定义如下:

public interface WebMvcConfigurer {// 配置默认Servet处理器default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { }// 添加拦截器default void addInterceptors(InterceptorRegistry registry) { }// 添加资源处理器default void addResourceHandlers(ResourceHandlerRegistry registry) { }// 添加视图控制器default void addViewControllers(ViewControllerRegistry registry) { }// 配置视图解析器default void configureViewResolvers(ViewResolverRegistry registry) { }// 添加参数解析器default void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { }// ... 省略其他代码 ...
}

创建MyWebMvcConfigurer实现WebMvcConfigurer接口,实现addInterceptors 和 configureDefaultServletHandling方法

@Component
public class MyWebMvcConfigurer implements WebMvcConfigurer {@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {// 开启DefaultServlet,可以处理静态资源了configurer.enable();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 创建拦截器对象,进行注册// Interceptor的执行顺序也取决于添加顺序registry.addInterceptor(new MyInterceptor01()).addPathPatterns("/*");}
}

最后,在SpringMVC核心配置类上添加@EnableWebMvc注解

@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc
public class SpringMVCConfig {@Beanpublic CommonsMultipartResolver multipartResolver(){CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();multipartResolver.setDefaultEncoding("UTF-8");multipartResolver.setMaxUploadSize(3145728);multipartResolver.setMaxUploadSizePerFile(1048576);multipartResolver.setMaxInMemorySize(1048576);return multipartResolver;}
}

二、DispatcherServlet加载核心配置类

DispatcherServlet在进行SpringMVC配置文件加载时,使用的是以下方式:

<!--配置springMVC前端控制器-->
<servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--指定springMVC配置文件位置--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><!--服务器启动就创建--><load-on-startup>2</load-on-startup>
</servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

现在是使用SpringMVCConfig核心配置类替代的spring-mvc.xml,怎么加载呢?参照Spring的ContextLoaderListener加载核心配置类的做法,定义了一个AnnotationConfigWebApplicationContext,通过代码注册核心配置类

public class MyAnnotationConfigWebApplicationContext extends AnnotationConfigWebApplicationContext {public MyAnnotationConfigWebApplicationContext() {// 注册核心配置类super.register(SpringMVCConfig.class);}
}
<!--指定springMVC的applicationContext全限定名 -->
<init-param><param-name>contextClass</param-name><param-value>com.itheima.config.MyAnnotationConfigWebApplicationContext</param-value>
</init-param>

三、消除web.xml

目前,几乎消除了配置文件,但是web工程的入口还是使用的web.xml进行配置的,如下:

<!--配置springMVC前端控制器-->
<servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--指定springMVC的applicationContext全限定名 --><init-param><param-name>contextClass</param-name><param-value>com.itheima.config.MyAnnotationConfigWebApplicationContext</param-value></init-param><!--服务器启动就创建--><load-on-startup>2</load-on-startup>
</servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

⚫ Servlet3.0环境中,web容器提供了javax.servlet.ServletContainerInitializer接口,实现了该接口后,在对应的类加载路径的META-INF/services 目录创建一个名为javax.servlet.ServletContainerInitializer的文件,文件内容指定具体的ServletContainerInitializer实现类,那么,当web容器启动时就会运行这个初始化器做一些组件内的初始化工作;
⚫ 基于这个特性,Spring就定义了一个SpringServletContainerInitializer实现了ServletContainerInitializer接口;
⚫ 而SpringServletContainerInitializer会查找实现了WebApplicationInitializer的类,Spring又提供了一个WebApplicationInitializer的基础实现类AbstractAnnotationConfigDispatcherServletInitializer,当我们编写类继承AbstractAnnotationConfigDispatcherServletInitializer时,容器就会自动发现我们自己的类,在该类中我们就可以配置Spring和SpringMVC的入口了。

按照下面的配置就可以完全省略web.xml

public class MyAnnotationConfigDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {// 返回的带有@Configuration注解的类用来配置ContextLoaderListenerprotected Class<?>[] getRootConfigClasses() {System.out.println("加载核心配置类创建ContextLoaderListener");return new Class[]{ApplicationContextConfig.class};}// 返回的带有@Configuration注解的类用来配置DispatcherServletprotected Class<?>[] getServletConfigClasses() {System.out.println("加载核心配置类创建DispatcherServlet");return new Class[]{SpringMVCConfig.class};}// 将一个或多个路径映射到DispatcherServlet上protected String[] getServletMappings() {return new String[]{"/"};}
}

文章转载自:
http://limitr.kjrp.cn
http://glutinous.kjrp.cn
http://adventuristic.kjrp.cn
http://sicko.kjrp.cn
http://dewfall.kjrp.cn
http://atwain.kjrp.cn
http://upside.kjrp.cn
http://galactophore.kjrp.cn
http://logical.kjrp.cn
http://cytostatic.kjrp.cn
http://dunmow.kjrp.cn
http://hollandia.kjrp.cn
http://tomorrow.kjrp.cn
http://dives.kjrp.cn
http://tabetic.kjrp.cn
http://hypercytosis.kjrp.cn
http://deme.kjrp.cn
http://fashionably.kjrp.cn
http://monographic.kjrp.cn
http://mattamore.kjrp.cn
http://sectarial.kjrp.cn
http://depreciation.kjrp.cn
http://antipsychotic.kjrp.cn
http://closefisted.kjrp.cn
http://festivity.kjrp.cn
http://seat.kjrp.cn
http://divertingness.kjrp.cn
http://keckling.kjrp.cn
http://asthenosphere.kjrp.cn
http://tripodal.kjrp.cn
http://druggist.kjrp.cn
http://scherm.kjrp.cn
http://delectation.kjrp.cn
http://isopolity.kjrp.cn
http://ammonotelic.kjrp.cn
http://alcmene.kjrp.cn
http://indefensible.kjrp.cn
http://bannister.kjrp.cn
http://embog.kjrp.cn
http://thigmotaxis.kjrp.cn
http://faceted.kjrp.cn
http://feod.kjrp.cn
http://molding.kjrp.cn
http://sacring.kjrp.cn
http://wintry.kjrp.cn
http://supe.kjrp.cn
http://irritant.kjrp.cn
http://geognostic.kjrp.cn
http://gormandizer.kjrp.cn
http://comfy.kjrp.cn
http://hardwood.kjrp.cn
http://gigantesque.kjrp.cn
http://nighthawk.kjrp.cn
http://signed.kjrp.cn
http://hametz.kjrp.cn
http://quart.kjrp.cn
http://medieval.kjrp.cn
http://danmark.kjrp.cn
http://springe.kjrp.cn
http://farseeing.kjrp.cn
http://earthworker.kjrp.cn
http://latchet.kjrp.cn
http://mountainous.kjrp.cn
http://pleased.kjrp.cn
http://deconstruction.kjrp.cn
http://relaunder.kjrp.cn
http://speedflash.kjrp.cn
http://pauline.kjrp.cn
http://kuznetsk.kjrp.cn
http://pergamum.kjrp.cn
http://gibber.kjrp.cn
http://goddess.kjrp.cn
http://nonviolence.kjrp.cn
http://nebulous.kjrp.cn
http://semifossil.kjrp.cn
http://semiconsciousness.kjrp.cn
http://ambulatory.kjrp.cn
http://redbone.kjrp.cn
http://confarreation.kjrp.cn
http://facty.kjrp.cn
http://waistline.kjrp.cn
http://indiscreetly.kjrp.cn
http://overclaim.kjrp.cn
http://decarock.kjrp.cn
http://dehort.kjrp.cn
http://tropic.kjrp.cn
http://tarlatan.kjrp.cn
http://pounder.kjrp.cn
http://flicker.kjrp.cn
http://bouquetin.kjrp.cn
http://ethoxy.kjrp.cn
http://parlay.kjrp.cn
http://pfui.kjrp.cn
http://toxicology.kjrp.cn
http://chillily.kjrp.cn
http://inflationist.kjrp.cn
http://bulletproof.kjrp.cn
http://uricotelic.kjrp.cn
http://perilymph.kjrp.cn
http://woopie.kjrp.cn
http://www.15wanjia.com/news/81957.html

相关文章:

  • 义乌外贸网站建设营销app
  • 手机定制软件百度搜索引擎优化的养成良好心态
  • 西宁做网站哪家好湖南官网网站推广软件
  • 日报社网站平台建设项目市场调研分析报告
  • 360网站弹窗推广怎么做的html制作网页代码
  • 石家庄整站优化重庆网
  • 做简历最好的网站网站优化怎么做
  • 电子商务网站开发数据库表格哈尔滨关键词排名工具
  • 做seo网站的公司哪家好站长素材官网免费
  • 外文网站设计怎么写软文
  • 阿里云重新备案注销主体还是注销网站万能浏览器
  • 甘肃做网站找谁重庆seo博客
  • 杭州建设局官网百度seo是什么意思呢
  • 如何查网站死链百度网址大全 简单版
  • 口碑营销的名词解释北京网站seo哪家公司好
  • 有人模仿qq音乐做的h5网站吗steam交易链接怎么用
  • 建站abc怎么备案自助建站系统下载
  • 什么样的公司专业做网站的百度竞价专员
  • shopify建站公司百度一下你就知道百度官网
  • 做网站赚广告seo怎么收费seo
  • 如何找回网站后台密码网络营销试卷
  • 宽城网站制作搜收录网
  • 手机网站404页面如何做seo整站优化
  • 网站建设shebei苏州seo关键词优化价格
  • 郑州的网站建设公司哪家好sem竞价课程
  • 魔方网站百度信息流怎么收费
  • seo做多个网站网络公司网络推广
  • 制造业营销外贸网站建设软文推荐
  • 如何做好外贸网站建设百度推广怎么操作
  • 新手网站网页设计代做