Servlet3.0无web.xml,全注解配置

项目结构

在这里插入图片描述

创建项目

在这里插入图片描述
在这里插入图片描述

pom

<dependencies>
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>5.1.5.RELEASE</version>
     </dependency>

     <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.0.1</version>
         <scope>provided</scope>
     </dependency>

     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.18.8</version>
     </dependency>
 </dependencies>

Spring容器配置

在config包下定义ApplicationConfig.java,它对应web.xml中ContextLoaderListener的配置

@Configuration
@ComponentScan(basePackages = "cn.zysheep",
        excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
public class ApplicationConfig {
    //在此配置除了Controller的其它bean,比如:数据库链接池、事务管理器、业务bean等。

}

servletContext配置

config包下定义WebConfig.java,它对应spring mvc 核心类DispatcherServlet配 置。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "cn.zysheep"
        ,includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
//springmvc需要扫描controller接口
public class WebConfig implements WebMvcConfigurer {

    //视图解析器
    @Bean
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
	// 添加一个视图控制
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
    }
}

加载 Spring容器

在init包下定义Spring容器初始化类SpringApplicationInitializer,此类实现WebApplicationInitializer接口, Spring容器启动时加载WebApplicationInitializer接口的所有实现类。

public class SpringApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{ApplicationConfig.class}; //指定rootContext的配置类
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};  //指定servletContext的配置类
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

SpringApplicationInitializer相当于web.xml,使用了servlet3.0开发则不需要再定义web.xml, ApplicationConfig.class对应以下配置的application-context.xml,WebConfig.class对应以下配置的spring- mvc.xml,web.xml的内容参考

<web‐app>
     <listener>
          <listener‐class>org.springframework.web.context.ContextLoaderListener</listener‐class>
      </listener>
      <context‐param>
          <param‐name>contextConfigLocation</param‐name>
          <param‐value>/WEB‐INF/application‐context.xml</param‐value>
      </context‐param>
      <servlet>
          <servlet‐name>springmvc</servlet‐name>
          <servlet‐class>org.springframework.web.servlet.DispatcherServlet</servlet‐class>
          <init‐param>
              <param‐name>contextConfigLocation</param‐name>
              <param‐value>/WEB‐INF/spring‐mvc.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>

测试

login.jsp

webapp/WEB-INF/views目录创建login.jsp
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录</title></head>
<body>
<form action="/login" method="post">
    用户名:<input type="text" name="username"><br>&nbsp;&nbsp;&nbsp;码: <input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>
</body>
</html>

controller

在cn/zysheep/controller目录下创建LoginController

@RestController
public class LoginController {

    @PostMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password){

        return username+"=="+password;
    }
}

在配置类WebConfig中添加一个视图控制器,即重写addViewControllers方法

 @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
    }

配置tomcat

在这里插入图片描述
在这里插入图片描述

访问测试成功

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李熠漾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值