基于Java配置SpringMvc 的HelloWorld项目
来源:互联网 发布:公司域名申请需要多久 编辑:程序博客网 时间:2024/05/22 14:32
基于Java配置的SpringMvc项目
使用Java配置,Spring应该在3.0以上版本,tomcat7.0以上
1、 配置DispatcherServlet
使用Java配置将DispatcherServlet 放在servlet容器中
SpittrWebAppInitializer .java
package spittr.config;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;/** * Created by 杨Sir on 2017/10/11. * 配置 DispatcherServlet, 要继承 AbstractAnnotationConfigDispatcherServletInitializer * 启动时创建Spring上下文,并加载配置类或配置文件 */public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { /** * getRootConfigClasses()方法返回的带有@Configuration注解的类将 会用来配置ContextLoaderListener创建的应用上下文中的bean。 。 * @return */ @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[]{ RootConfig.class}; } /** * 设置加载应用上下文时,使用配置类WebConfig.class * 该方法返回的带有@Configuration注解的 类将会用来定义DispatcherServlet应用上下文中的bean。 */ @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[]{ WebConfig.class}; //指定配置类 } /** * 将路径映射到 DispatcherServlet',"/"表示处理所有请求 * @return */ @Override protected String[] getServletMappings() { return new String[]{"/"}; //将DispatcherServlet 映射到 "/" }}
2、 启动SpringMvc
package spittr.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.ViewResolver;import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.view.InternalResourceViewResolver;/** * Created by 杨Sir on 2017/10/11. */@Configuration@EnableWebMvc //启用SpringMvc@ComponentScan("spitter.web") //启用注解扫描public class WebConfig extends WebMvcConfigurerAdapter { //配置 JSP视图解析器 @Bean public ViewResolver viewResolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setPrefix(".jsp"); resolver.setExposeContextBeansAsAttributes(true); return resolver; } /** * 配置静态资源的处理 */ @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); }}
3、 添加非web组件的启动类
package spittr.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ComponentScan.Filter;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;import org.springframework.web.servlet.config.annotation.EnableWebMvc;/** * Created by 杨Sir on 2017/10/11. * 此处使用了 @ComponentScan 注解,因此可以用很多非 WEB组件来完善 RootConfig */@Configuration@ComponentScan(basePackages = {"spitter"}, excludeFilters = { @Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})public class RootConfig { }
4、配置一个Controller
package spitter.web.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;/** * Created by 杨Sir on 2017/10/11. */@RequestMapping("/") //定义类级别的请求处理,该路径加到该控制器所有方法指定的路径之前@Controller //声明为一个控制器public class HomeController { @RequestMapping(method = RequestMethod.GET) //处理对"/"的 GET请求 public String home(){ return "home"; //视图名叫home } /** * @RequestMapping(value={"/add","/save"}):可以处理多个请求 * @return */ @RequestMapping(value={"/add","/save"}, method = RequestMethod.GET) //对类级别请求处理做补充, public String action(){ return "action"; }}
5、 测试homeController,以控制器的角度
package spitter.web.test;import org.junit.Test;import org.springframework.test.web.servlet.MockMvc;import org.springframework.test.web.servlet.setup.MockMvcBuilders;import spitter.web.controller.HomeController;import static org.junit.Assert.assertEquals;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;/** * Created by 杨Sir on 2017/10/11. */public class HomeControllerTest { /** * 测试home()中会发生什么 */ @Test public void homePageTest() throws Exception{ HomeController controller = new HomeController(); assertEquals("home",controller.home()); // 断言返回 "hello" } /** * 测试 home方法: * 站在控制器的角度测试 springMvc控制器, * spring 包含了一种mock Springmvc并针对控制器执行 HTTP请求的机制,不用再启动web服务器和web浏览器 * * 该测试需要加入 javax.servlet-api.jar */ @Test public void homePageTest2() throws Exception{ HomeController controller = new HomeController(); //搭建 MockMvc MockMvc mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); mockMvc.perform(get("/")) // 对 "/" 执行GET请求, .andExpect(view().name("home")); //预期得到 home视图 } /** * 测试action方法 * @throws Exception */ @Test public void homePageTest3() throws Exception{ HomeController controller = new HomeController(); //搭建 MockMvc MockMvc mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); mockMvc.perform(get("/add")) // 对 "/" 执行GET请求, .andExpect(view().name("action")); //预期得到 home视图 } @Test public void homePageTest4() throws Exception{ HomeController controller = new HomeController(); //搭建 MockMvc MockMvc mockMvc = MockMvcBuilders.standaloneSetup(controller).build(); mockMvc.perform(get("/save")) // 对 "/" 执行GET请求, .andExpect(view().name("action")); //预期得到 home视图 }}
6、 web.xml 不用配置
7、完整目录结构
阅读全文
0 0
- 基于Java配置SpringMvc 的HelloWorld项目
- 基于SpringMVC Annotation配置的HelloWorld
- 基于java配置的springMvc
- 基于SpringMVC的HelloWorld实现
- 基于springMVC的HelloWorld实例
- 基于springMVC的HelloWorld实例
- 基于Maven项目SpringMVC的基本配置
- 基于XML配置的SpringMVC项目示例
- springmvc第一个项目helloworld配置
- 基于springMVC的Java项目开发流程
- 基于Java配置的springMvc处理请求
- 基于注解实现springmvc的入门helloworld
- 基于maven的springMVC web项目的一些基本配置:
- SpringMVC HelloWorld Restfull 项目
- springMVC----springMVC的HelloWorld
- SpringMVC配置HelloWorld
- SpringMVC配置HelloWorld
- 基于xml配置的Spring MVC HelloWorld
- T0005 N皇后问题
- 第一章
- 前端面试题之一二
- 视觉SLAM十四讲-第九讲例程运行出错
- 关于TLS经验小结(下)
- 基于Java配置SpringMvc 的HelloWorld项目
- xPath语法
- 1088 最长回文子串 manacher算法
- 算法时间复杂度和空间复杂度
- log4cplus的使用(学习笔记)
- firewalld的常用命令
- 六级_第一天
- 关于iptables的常用技巧方法
- 局部变量线程安全的理解