不用web.xml,而使用java类配置SpringMVC

简介: 不用web.xml,而使用java类配置SpringMVCDispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.

不用web.xml,而使用java类配置SpringMVC

DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servlet 3规范和Spring 3.1的功能增强, 可以采用一种全新的,更简洁的方式配置Spring MVC了. 下面按这种方式一个Hello World的MVC配置.

Step 1:先用idea创建一个Maven的WEB工程. pom.xml文件如下:

img_e5ee5da711dbdf7b099b00954fb4428f.png
image

OcrWebAppInitializer:

package com.home.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;


public class OcrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {



 @Override

 protected Class<?>[] getRootConfigClasses() {

 return new Class<?>[] { RootConfig.class };

 }



 @Override

 protected Class<?>[] getServletConfigClasses() {

 return new Class<?>[] { WebConfig.class };        //ָ指定Web配置类

 }



 @Override

 protected String[] getServletMappings() {    //将DispatcherServlet映射到"/"

 return new String[] { "/" };

 }



}


RootConfig

package com.home.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;



@Configuration

@ComponentScan( basePackages={"com.home"},

 excludeFilters = { @Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}

)



public class RootConfig {



}

WebConfig

package com.home.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;


@Configuration

@EnableWebMvc                                //启动SpringMVC

@ComponentScan("com.home.controller")            //启动组件扫描

public class WebConfig extends WebMvcConfigurerAdapter {



 //配置JSP视图解析器

 @Bean

 public ViewResolver viewResolver() {

 InternalResourceViewResolver resolver = new InternalResourceViewResolver();

 resolver.setPrefix("/WEB-INF/views/");

 resolver.setSuffix(".jsp");

 resolver.setExposeContextBeansAsAttributes(true);

 return resolver;

 }



 //配置静态资源的处理

 @Override

 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

 configurer.enable();        //对静态资源的请求转发到容器缺省的servlet,而不使用DispatcherServlet

 }


}

HomeController

package com.home.controller;

import static org.springframework.web.bind.annotation.RequestMethod.*;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.servlet.ModelAndView;



@Controller

public class HomeController {

 @RequestMapping(value = "/home", method=GET)

 public String home() {

 return "home";

 }

}

home.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

 <title>Spring MVC Tutorial chry</title>

 <style type="text/css">

 </style>

</head>

<body>

<br>

<div style='text-align:center;'>

 index page!

</div>

</body></pre>

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

 <modelVersion>4.0.0</modelVersion>



 <groupId>com</groupId>

 <artifactId>springMVC-config</artifactId>

 <version>1.0-SNAPSHOT</version>

 <packaging>war</packaging>



 <name>springMVC-config Maven Webapp</name>

 <!-- FIXME change it to the project's website -->

 <url>http://www.example.com</url>



 <properties>

 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

 <maven.compiler.source>1.7</maven.compiler.source>

 <maven.compiler.target>1.7</maven.compiler.target>

 </properties>



 <dependencies>

 <dependency>

 <groupId>junit</groupId>

 <artifactId>junit</artifactId>

 <version>4.11</version>

 <scope>test</scope>

 </dependency>



 <dependency>

 <groupId>junit</groupId>

 <artifactId>junit</artifactId>

 <version>4.11</version>

 <scope>test</scope>

 </dependency>





 <dependency>

 <groupId>org.slf4j</groupId>

 <artifactId>slf4j-api</artifactId>

 <version>1.7.12</version>

 </dependency>

 <dependency>

 <groupId>ch.qos.logback</groupId>

 <artifactId>logback-core</artifactId>

 <version>1.1.1</version>

 <scope>provided</scope>

 </dependency>

 <!--实现slf4j接口并整合-->

 <dependency>

 <groupId>ch.qos.logback</groupId>

 <artifactId>logback-classic</artifactId>

 <version>1.1.1</version>

 <scope>provided</scope>

 </dependency>



 <!--druid==>阿里巴巴数据库连接池-->

 <dependency>

 <groupId>com.alibaba</groupId>

 <artifactId>druid</artifactId>

 <version>1.0.25</version>

 </dependency>

 !--2.dao框架:MyBatis依赖--

 <dependency>

 <groupId>org.mybatis</groupId>

 <artifactId>mybatis</artifactId>

 <version>3.3.0</version>

 </dependency>

 <!--mybatis自身实现的spring整合依赖-->

 <dependency>

 <groupId>org.mybatis</groupId>

 <artifactId>mybatis-spring</artifactId>

 <version>1.3.2</version>

 </dependency>



 <!--3.Servlet web相关依赖-->

 <dependency>

 <groupId>taglibs</groupId>

 <artifactId>standard</artifactId>

 <version>1.1.2</version>

 </dependency>

 <dependency>

 <groupId>jstl</groupId>

 <artifactId>jstl</artifactId>

 <version>1.2</version>



 </dependency>

 <dependency>

 <groupId>com.fasterxml.jackson.core</groupId>

 <artifactId>jackson-databind</artifactId>

 <version>2.5.4</version>

 </dependency>



 <dependency>

 <groupId>javax.servlet</groupId>

 <artifactId>javax.servlet-api</artifactId>

 <version>3.1.0</version>

 <scope>provided</scope>

 </dependency>



 !--4:spring依赖--

 <!--1)spring核心依赖-->

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-core</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-beans</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-context</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <!--2)spring dao层依赖-->

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-jdbc</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-tx</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <!--3)springweb相关依赖-->

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-web</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-webmvc</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <!--4)spring test相关依赖-->

 <dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-test</artifactId>

 <version>4.3.14.RELEASE</version>

 </dependency>

 <dependency>

 <groupId>mysql</groupId>

 <artifactId>mysql-connector-java</artifactId>

 <version>5.1.35</version>

 <scope>runtime</scope>

 </dependency>



 <!--Aop要导入的包-->

 <dependency>

 <groupId>org.aspectj</groupId>

 <artifactId>aspectjweaver</artifactId>

 <version>1.8.9</version>

 </dependency>

 <!-- https://mvnrepository.com/artifact/org.json/json -->

 <dependency>

 <groupId>org.json</groupId>

 <artifactId>json</artifactId>

 <version>20170516</version>

 </dependency>





 <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->

 <dependency>

 <groupId>org.thymeleaf</groupId>

 <artifactId>thymeleaf-spring4</artifactId>

 <version>3.0.9.RELEASE</version>

 </dependency>

 <dependency>

 <groupId>javax.validation</groupId>

 <artifactId>validation-api</artifactId>

 <version>2.0.1.Final</version>

 </dependency>

 <dependency>

 <groupId>com.google.guava</groupId>

 <artifactId>guava</artifactId>

 <version>18.0</version>

 </dependency>

 <dependency>

 <groupId>com.google.guava</groupId>

 <artifactId>guava</artifactId>

 <version>18.0</version>

 </dependency>

 <dependency>

 <groupId>org.hibernate</groupId>

 <artifactId>hibernate-validator</artifactId>

 <version>5.3.6.Final</version>

 </dependency>





 <!-- jsp -->

 <dependency>

 <groupId>javax.servlet</groupId>

 <artifactId>javax.servlet-api</artifactId>

 <version>3.0.1</version>

 </dependency>

 <dependency>

 <groupId>javax.servlet.jsp</groupId>

 <artifactId>jsp-api</artifactId>

 <version>2.1</version>

 <scope>provided</scope>

 </dependency>

 <dependency>

 <groupId>javax.servlet</groupId>

 <artifactId>jstl</artifactId>

 <version>1.2</version>

 </dependency>

 <!-- jsp -->

 </dependencies>



 <build>

 <finalName>springMVC-config</finalName>

 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->

 <plugins>

 <plugin>

 <artifactId>maven-clean-plugin</artifactId>

 <version>3.0.0</version>

 </plugin>

 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->

 <plugin>

 <artifactId>maven-resources-plugin</artifactId>

 <version>3.0.2</version>

 </plugin>

 <plugin>

 <artifactId>maven-compiler-plugin</artifactId>

 <version>3.7.0</version>

 </plugin>

 <plugin>

 <artifactId>maven-surefire-plugin</artifactId>

 <version>2.20.1</version>

 </plugin>

 <plugin>

 <artifactId>maven-war-plugin</artifactId>

 <version>3.2.0</version>

 </plugin>

 <plugin>

 <artifactId>maven-install-plugin</artifactId>

 <version>2.5.2</version>

 </plugin>

 <plugin>

 <artifactId>maven-deploy-plugin</artifactId>

 <version>2.8.2</version>

 </plugin>

 </plugins>

 </pluginManagement>

 </build>

</project>

这个时候访问相应的路径就可以看到jsp的相关信息了

相关文章
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
172 57
|
27天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
75 8
|
2月前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
36 0
|
5月前
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
89 1
|
5月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
115 0
|
7月前
|
安全 Java 数据库连接
Java Web应用
Java Web应用
29 0
|
8月前
|
前端开发 Java 数据库
Java Web开发全攻略:构建高性能Web应用
【4月更文挑战第2天】Java Web开发围绕Servlet和JSP展开,结合Spring/Spring Boot、Struts2、Hibernate等框架构建高性能应用。数据库选择和优化、前端技术如Angular/React/Vue.js以及CI/CD实践是关键。从电子商务到企业系统,Java Web技术为企业与用户互动提供强大平台。持续学习和适应新技术,以应对Web开发挑战。
269 1
Java Web开发全攻略:构建高性能Web应用
|
8月前
|
前端开发 JavaScript Java
Java语言在Web前端开发中的技术应用
Java语言在Web前端开发中的技术应用
140 0
|
8月前
|
设计模式 存储 前端开发
Java的mvc设计模式在web开发中应用
Java的mvc设计模式在web开发中应用
145 0