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可以定义多个方法.
  • 多个请求可以指向同一个页面,只需要携带不同的数据,就可以在同一个页面中显示不同的数据,视图被复用,说明控制器和视图之间是弱耦合关系
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示