第7章—SpringMVC高级技术—不用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文件如下:

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技术的单位网络监控软件至关重要。该软件能精准监管单位网络活动,保障信息安全,提升工作效率。通过网络流量监测、访问控制及连接状态监控等模块,实现高效网络监管,确保网络稳定、安全、高效运行。
81 11
|
2月前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
85 7
|
4天前
|
JavaScript 安全 Java
智慧产科一体化管理平台源码,基于Java,Vue,ElementUI技术开发,二开快捷
智慧产科一体化管理平台覆盖从备孕到产后42天的全流程管理,构建科室协同、医患沟通及智能设备互联平台。通过移动端扫码建卡、自助报道、智能采集数据等手段优化就诊流程,提升孕妇就诊体验,并实现高危孕产妇五色管理和孕妇学校三位一体化管理,全面提升妇幼健康宣教质量。
33 12
|
30天前
|
Java Linux iOS开发
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
903 12
|
1月前
|
Java
CentOS7.8配置Adoptium-Java17运行环境
本指南介绍如何设置清华镜像源并安装 Temurin-17-JRE 运行环境。首先,编辑 `/etc/yum.repos.d/adoptium.repo` 文件,配置清华镜像源。接着,使用 `yum install -y temurin-17-jre` 命令安装 Temurin-17-JRE,并通过 `java --version` 验证安装成功。相关配置和操作界面截图附后。
45 8
|
30天前
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
320 1
|
2月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
1432 1
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
1月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
30天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
39 0
|
2月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
133 1