springmvc零xml配置原理
2021-03-07 08:30
标签:frame mvcc ash work The targe remes lis 地方 传统springmvc项目,如果要采用xml文件的方式配置,则需要web.xml、spring-mvc.xml文件。 web.xml文件用来引入springmvc的配置文件contextConfigLocation,以及spring环境org.springframework.web.context.ContextLoaderListener web.xml: spring-mvc.xml文件: 那么,现在提供一种方式,可以不用配置任何的xml文件,也同样能搭建起springmvc项目。 现在一起来看一下spring官网提供的文档描述: https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-servlet-config 这里可以看到需要实现一个接口的onStartup方法 这里只是配置了一个DispatcherServlet,那试图解析器在哪里配置呢?再回到官方文档 其实这里就是用来配置视图解析器的地方 写一个AppConfig类,作为Springmvc的配置类,实现 WebMvcConfigurer接口一共定义了若干方法,可以对照着官网学习配置。 此时就可以编写controller类来测试零xml配置的springmvc了 //TODO Servlet3.0 SPI springmvc零xml配置原理 标签:frame mvcc ash work The targe remes lis 地方 原文地址:https://www.cnblogs.com/yibao/p/14265097.htmlspringmvc零xml配置原理与Servlet3.0SPI机制
listener>
listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
servlet>
servlet-name>springmvcservlet-name>
servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
init-param>
param-name>contextConfigLocationparam-name>
param-value>spring-mvc.xmlparam-value>
init-param>
load-on-startup>1load-on-startup>
servlet>
servlet-mapping>
servlet-name>springmvcservlet-name>
url-pattern>*.dourl-pattern>
servlet-mapping>
context:annotation-config/>
mvc:annotation-driven/>
bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
property name="prefix" value="/WEB-INF/view/"/>
property name="suffix" value=".jsp"/>
property name="exposeContextBeansAsAttributes" value="true"/>
bean>
context:component-scan base-package="com.XXX"/>
public class MyWebApplicationInitializer implements WebApplicationInitializer {
//实现0XML
//类实现WebApplicationInitializer【spring官方提供的方法。用于加载spring容器】
//tomcat启动时会调用onStartup方法?
@Override
public void onStartup(ServletContext servletContext) {
//传入一个ServletContext:web上下文对象。web.xml能做的事她都能做
// Load Spring web application configuration
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(AppConfig.class);
// Create and register the DispatcherServlet
DispatcherServlet servlet = new DispatcherServlet(context);
ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet);
registration.setLoadOnStartup(1);
registration.addMapping("*.do");
}
WebMvcConfigurer
@Configuration
@ComponentScan("com")
@EnableWebMvc
public class AppConfig implements WebMvcConfigurer {
/***
* 配置视图解析
* @param registry
*/
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/page/", ".html");
}
/**
* 配置一个消息转换器[对象的转换]
* @param converters
*/
@Override
public void configureMessageConverters(List
@Controller
public class TestController {
/**
* 访问普通的字符串,试图解析器会解析成对应的页面
* @return
*/
@RequestMapping("/str.do")
public Object Test(){
return "index";
}
/**
* 因为返回值是一个对象,所以如果不做特殊处理,则试图解析器无法解析
* 对象嵌套是一个难点
* @param name
* @param request
* @param response
* @return
*/
@RequestMapping("/model.do")
@ResponseBody
public Object modeltest(String name, HttpServletRequest request, HttpServletResponse response){
System.out.println("调用了modeltest");
String req_name = request.getParameter("name");
Map hashMap = new HashMap();
hashMap.put("key", "value");
return hashMap;
}
}
下一篇:python中的数据结构