不用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 {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class<?>[] { RootConfig.class };}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class<?>[] { WebConfig.class };        //ָ指定Web配置类}@Overrideprotected 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视图解析器@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".jsp");resolver.setExposeContextBeansAsAttributes(true);return resolver;}//配置静态资源的处理@Overridepublic 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;@Controllerpublic 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的相关信息了

转载于:https://www.cnblogs.com/charlypage/p/9404101.html

第7章—SpringMVC高级技术—不用web.xml,而使用java类配置SpringMVC相关推荐

  1. 02)java web项目 使用spi技术 去除web.xml

    上一篇提到原理是使用了java的SPI技术 java web项目是在容器运行,如tomcat,weblogic等 了解Tomcat的SPI机制 Tomcat容器在启动时会扫描项目中META-INF/s ...

  2. Java Web的web.xml文件作用及基本配置(转)

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...

  3. SpringMVC是如何消灭web.xml后还能加载到DispatchServlet的流程

    SpringMVC能做到不需要web.xml是利用了Servlet3.0的新特性 涉及到的Servlet 3.0新特性 1.ServletContext 对象的功能进行了加强,支持在运行时动态部署 S ...

  4. 如何用Java类配置Spring MVC(不通过web.xml和XML方式)

    DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...

  5. 【VLAN高级技术】--- MUX VLAN运行原理及实例配置讲解

    文章目录 一.MUX VLAN产生原因 二.MUX VLAN运行原理 三.实例配置讲解(重点!!!) 四.MUX VLAN配置命令 一.MUX VLAN产生原因 个人认为MUX VLAN主要是为大中型 ...

  6. Java框架之SpringMVC学习笔记

    1.SpringMVC的基本概念 学习黑马传智播客视频所记录的笔记 视频连接:https://www.bilibili.com/video/BV1Sb411s7qa?p=1 1.1 三层架构和MVC ...

  7. Yeslab华为安全HCIE七门之--防火墙高级技术(17篇)

    Yeslab 全套华为安全HCIE七门之第三门 防火墙高级技术 课程目录: 华为安全HCIE-第三门-防火墙高级技术(17篇)\1_用户认证_用户_认证域_认证策略.avi 华为安全HCIE-第三门- ...

  8. Spring web.xml详解

    web.xml文件是Java Web项目中的一个配置文件,主要用于配置欢迎页.Filter.Listener.Servlet等,但并不是必须的,一个Java Web项目没有web.xml文件也是照样能 ...

  9. 06_03_SpringMVC 任务一: SpringMVC基本应用(SpringMVC请求与响应,进行日期转换工具类DateConverter)

    任务一: SpringMVC基本应用 课程任务主要内容: SpringMVC简介 SpringMVC组件概述 SpringMVC请求 SpringMVC响应 静态资源开启 一 SpringMVC简介 ...

  10. 03)java spi应用 java spring web项目 去除web.xml

    上一节 学习完了 原始 java web项目 无web.xml怎么配置servlet 这节学习 java web项目 无web.xml怎么集成spring框架 使用过web.xml集成spring框架 ...

最新文章

  1. R语言包_lubridate
  2. android如何编译lame,Android 编译 Lame 库心路历程
  3. 技术人的灵魂 3 问,阿里工程师如何解答?
  4. 浅谈以太坊智能合约的设计模式与升级方法
  5. oracle材料差异科目,ORACLE分科目统计每科前三名的学生的语句
  6. 18行代码AC-Leecode 299. 猜数字游戏——Leecode每日一题系列
  7. (转)浅析CSS——元素重叠及position定位的z-index顺序
  8. 【图像超分辨率论文】BasicVSR: The Search for Essential Components in Video Super-Resolution and Beyond
  9. Spark ML - 聚类算法
  10. 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)
  11. VBScript的参数引用
  12. 智能门禁(3)---汉王智能人脸门禁系统
  13. pd虚拟机:mac支持安装Windows应用
  14. 数值分析·学习 | 平方根法和追赶法matlab实现
  15. fei 正则表达式_正则表达式大爆料
  16. 安卓如何调出软键盘_Android软键盘-显示隐藏软键盘
  17. 前缀、中缀、后缀(逆波兰)表达式以及逆波兰表达式实现简单计算器
  18. c语言转义字符空格符号,C语言 转义符\t占用几个空格
  19. Kubernetes 开发【1】——webhook 实现 API Server 请求拦截和修改
  20. 用php如何写后台数据,PHP后端接口怎么写

热门文章

  1. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
  2. sharepoint开发流水账--sharepoint弹出窗体
  3. WPF Rendering 2(硬件加速、软件加速)
  4. Python字符串处理的8招秘籍
  5. 【论文阅读】Fully Convolutional Networks for Semantic Segmentation
  6. 位置编码在注意机制中的作用
  7. 【清华大学-腾讯】关系提取综述,Review and Outlook for Relation Extraction
  8. 如何快速水一篇NLP论文?
  9. 有了它,让我在bug面前一点也不慌!
  10. 【每日算法Day 105】打家劫舍第二弹:看好你的电瓶车!