springMVC-测试Controller控制器
1 准备阶段
1.1 引入依赖
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version> </dependency>
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency>
1.2 在IDEA项目发布中,添加lib依赖
与这篇博客的第2步完全相同: springMVC-HelloSpringMVC
1.3 编写springmvc的配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
1.4 在web.xml中配置DispatchServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!--配置DispatchServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
1.5 编写一个跳转的jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>test</title> </head> <body> ${msg} </body> </html>
2 测试实现Controller接口的方式
2.1 编写Controller类
//只要实现了Controller接口的类,说明这就是一个控制器了 public class ControllerTest1 implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("msg","Controller接口"); modelAndView.setViewName("test"); return modelAndView; } }
2.2 在springmvc的配置文件中注册bean
<bean id="/t1" class="com.lv.controller.ControllerTest1"/>
2.3 启动Tomcat,测试
3 测试使用@Controller注解方式(推荐使用)
3.1 在springmvc的配置文件中头加入context约束
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
3.2 在springmvc的配置文件中添加注解扫描
<context:component-scan base-package="com.lv.controller"/>
3.3 编写两个Controller类
//代表这个类会被spring接管,并且这个类中所有的方法,如果返回值是String,并且有具体页面可以跳转,那么就会被视图解析器解析 @Controller public class ControllerTest2 { @RequestMapping("t1") public String test1(Model model){ model.addAttribute("msg","注解实现t1"); return "test"; } @RequestMapping("t2") public String test2(Model model){ model.addAttribute("msg","注解实现t2"); return "test"; } }
@Controller @RequestMapping("c1") public class ControllerTest3 { @RequestMapping("t1") public String test1(Model model){ model.addAttribute("msg","注解实现c1/t1"); return "test"; } }
3.4 启动Tomcat,测试
注:不同的地址对应不同的方法
4 补充
4.1 在方法的参数中加入request和response,可以在方法中使用
@Controller public class ModelTest1 { @RequestMapping("/m1/t1") public String test(HttpServletRequest request, HttpServletResponse response){ HttpSession session = request.getSession(); System.out.println(session.getId()); return "test"; } }
4.2 启动Tomcat,测试
控制台成功输出
5 总结:
- 使用实现Controller接口的方式,一个控制器中只有一个方法,如果要多个方法就需要多个Controller,定义方式比较麻烦
- @Controller注解方式比较灵活,一个Controller可以定义多个方法.
- 多个请求可以指向同一个页面,只需要携带不同的数据,就可以在同一个页面中显示不同的数据,视图被复用,说明控制器和视图之间是弱耦合关系
分类:
springMVC-study
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术