众所周知, SpringMvc有4个基本组件
DispatcherServlet -> 中央调度器, 使用前端设计模式拦截所有的url请求
HandlerMapping -> 分发不同的url到各个不同的controller处理
HanlderAdapter -> 调用controller去处理url请求
ViewReslover -> 处理视图(jsp页面)

在基于xml配置的springmvc项目中,

我们会将DispatcherServlet 配在WEB-INF/web.xml中(父容器)
会把HandlerMapping / HandlerAdapter/ ViewReslover 配置在 springmvc配置文件中。(子容器)

下面将会使用注解方式去重新创建1个springmvc项目

Step1 打开eclipse 创建1个新的Dynamic web project


Step2 往project内的 WEB-INF/lib folder导入下列spring 的jar包

大部分都能在 .m2 里的repository folder找到, 如果没有可以利用别的maven project下载。

 commons-logging-1.1.1.jarspring-aop-4.1.4.RELEASE.jarspring-aspects-4.1.4.RELEASE.jarspring-beans-4.1.4.RELEASE.jarspring-context-4.1.4.RELEASE.jarspring-core-4.1.4.RELEASE.jarspring-expression-4.1.4.RELEASE.jarspring-tx-4.1.4.RELEASE.jarspring-web-4.1.4.RELEASE.jarspring-webmvc-4.1.4.RELEASE.jar

Step3 初步编写web.xml 文件

在WEB-INF 文件夹创建1个web.xml 文件, 如上图
内容如下, 注意我注解指定了spring 配置文件的位置和文件名

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sum.com/xml/ns/javaee/web-app_3_0.xsd"><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- auto start --><load-on-startup>1</load-on-startup><!-- modify spring configuration file path and file name --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

Step4 添加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"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"><!-- Annotation scanning --><context:component-scan base-package="com.home.controller"></context:component-scan><!-- below mvc dom actullay includes the default Handlermapping and HandlerAdapter --><!-- org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping --><!-- org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter --><mvc:annotation-driven></mvc:annotation-driven></beans>

注意, 在springmvc 配置文件中, 我们并没有配置具体的controller类。
而是配置了一行注解, context:component-scan 将会在某个包里扫描注解了@Controller的类并放入容器.

同时, 我们也不需再单独配置handlerMapping 和 HandlerAdapter
只需要引入springmvc命名空间和 mvc:annotation-driven</mvc:annotation-driven> 这个mvc注解驱动。

package com.home.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class DemoController {@RequestMapping("demo")public String demo(){System.out.println("executing demo() controller ");return "/WEB-INF/jsp/demo1.jsp";}
}

注意在demo方法返回了1个jsp fullpath
相应地要在WEB-INF里添加jsp文件夹以及demo1.jsp

执行项目, 访问http://localhost:8080/springmvc_annotation/demo

成功执行

Step5 添加springmvc 配置,放行静态文件

当前, DispatcherServlet会拦截所有url, 只放行*.jsp

项目中,我们其实想放行其他一切静态文件, 例如js,css,images等

我们现在WEB-INF下添加文件夹resources, 放入1个js文件


在springmvc配置文件加入如下静态资源定义

 <!-- define static resources --><mvc:resources location="/WEB-INF/resources/" mapping="/resources/**"></mvc:resources>

意思是主要url 符合 resources/** 规则 (例如 /resourcce/js/123/12.js …等)
则不会被DispatcherServlet拦截, 而会在location /WEB-INF/resources 里寻找静态资源文件.

启动项目, 访问http://localhost:8080/springmvc_annotation/resources/js/jquery-2.1.1.js
成功访问

到这里, springmvc的基本框架建立完成

手动创建1个基于注解的springmvc项目相关推荐

  1. 02基于注解开发SpringMVC项目(jar包,异步,request,参数传递,多选的接收,Model传参,map传参,model传参,ajax,重定向,时间日期转换)

     1 所需jar包 项目结构如下: 2 web.xml配置文件的内容如下: <?xmlversion="1.0"encoding="UTF-8"?&g ...

  2. 手动创建1个基于xml配置的springmvc 项目(without Maven)

    当然, 今时今日使用maven 和 springboot 去创建1个java web project会更加方便. 但是手动搭建1个会加深我对springmvc的理解. Step1 打开eclipse ...

  3. 基于注解实现SpringMVC的配置文件

    1. 注解配置SpringMVC文件 使用配置类和注解代替web.xml和SpringMVC配置文件的功能 使用注解配置MVC文件时,程序中出现的各个注解 @Configuration:将当前类标识为 ...

  4. 基于注解的SpringMVC整合JPA

    点我下载工程代码 实体类 Department package com.sj.bean; import java.util.Set; import javax.persistence.CascadeT ...

  5. spring mysql 注解_【Spring】SpringMVC之基于注解的实现SpringMVC+MySQL

    目录结构: contents structure [-] SpringMVC是什么 MVC的全称是Model View Controller,通过实现MVC框架可以很好的数据.视图.业务逻辑进行分离. ...

  6. 带你简化理解Spring 基于注解配置的原理

    1 需求说明 自己写一个简单的 Spring 容器, 通过读取类的注解 (@Component @Controller @Service @Reponsitory),将对象注入到 IOC 容器 bea ...

  7. 一、第一个注解的 SpringMVC 程序

    ch01-hello-springmvc:第一个注解的springmvc项目 所谓 SpringMVC 的注解式开发是指,在代码中通过对类与方法的注解,便可完成处理器 在 springmvc 容器的注 ...

  8. 【Spring AOP】基于注解的 AOP 编程

    Spring AOP 基于注解的 AOP 编程的开发 开发步骤 切入点复用 切换动态代理的创建方式(JDK.Cglib) AOP 开发中的一个坑(业务方法互相调用) AOP 知识总结 更多内容请查看笔 ...

  9. springmvc项目,浏览器报404错误的问题

    问题描述: 建立了web工程,配置pom.xml,web.xml,编写controller类,在spring-mvc-servlet.xml文件中指定开启注解和扫描的包位置<mvc:annota ...

最新文章

  1. RISC-V 正在成为芯片世界中的 Linux
  2. 程序员如何切入区块链去中心化应用开发
  3. 高可用 Prometheus 的常见问题
  4. 一个权限管理模块的设计(转载)
  5. 全面解析虚拟内存概念
  6. COJ 1008 WZJ的数据结构(八) 树上操作
  7. 第15章习题解答(二)——《x86汇编语言:从实模式到保护模式》读书笔记41
  8. python canopen_Python canopener包_程序模块 - PyPI - Python中文网
  9. 解决VS2017中出现'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead这问题
  10. 最正确的为GridView添加删除提示的方法(转)
  11. 重新安装NVIDIA显卡驱动
  12. 技校学计算机和本科计算机,中专计算机专业学什么,中专和技校的区别​
  13. php debugdumpparams,PHP PDOStatement::debugDumpParams讲解
  14. magisk卸载内置软件_【教程篇】安卓手机卡刷Magisk(面具)获取Root教程
  15. android端的声音检测程序(检测声音分贝大小)
  16. [数据集][VOC]老鼠数据集voc格式3001张
  17. linux下的.swp文件
  18. 从首届微商博览会看2015年微商的趋势
  19. 是非人生 — 一个菜鸟程序员的5年职场路 第9节
  20. 由浅入深学习Flash制作高射炮游戏(2)

热门文章

  1. Python+Anaconda+PyCharm的安装和基本使用
  2. DRF—Mixin拓展类、视图集
  3. linux运维防火墙考题,Linux运维工程师:30道面试题整理 | 张戈博客
  4. MoeCTF 2021Re部分------Midpython.exe
  5. 2020-11-12(JNI开发常见错误)
  6. android圆角按钮的实现
  7. 登录MySQL数据库
  8. 1071 Speech Patterns (25 分)【难度: 简单 / 知识点: 哈希表 字符串】
  9. 1040 Longest Symmetric String (25 分)【难度: 一般 / 知识点: 最长回文子串】
  10. FastDFS测试图片上传