SpringMVC注解配置


1.测试环境:

名称 版本 备注
操作系统 Windows10 专业版1809X64    
WEB服务器 Tomcat 8.5 X64  
浏览器 Google Chrome71.0.3578.98X64  
IDE

Eclipse Java EE IDE for Web Developers Photon Release (4.8.0)x64

 
     

2.概述

  基于注解的SpringMVC入门示例

  2.1  为什么学习SpringMVC注解配置

    通过上一篇博文,已经了解了SpringMVC的运行原理,学会了基本的SpringMVC配置,但是,XML配置实在太繁琐,需要写的东西也多,而且不太友善,所以官方团队发行了基于注解的版本,也是企业中应用的版本。

       所以废话不多说开始一波操作


3.入门示例

  3.1 配置流程说明 

    第一步:导入包

    第二步:构建一个请求,编写请求页面

    第三步:配置核心控制器

    第四步:构建一个业务控制器

    第五步:编写Spring配置文件

    第六步:编写一个返回页面

    从流程说明上看,总体并没有什么太大的差别,但是在 xml配置 和 控制器的实际代码 差距还是挺大的,请看下方细节。

  3.2 配置流程

    3.2.1 导入包

        红色方框中的包就是所依赖的包

       

    3.2.2 创建一个请求的发送页面 index.jsp

        

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" ></script>
</head>
<body>
<a href="${pageContext.request.contextPath}/test.do">测试</a>
<form action="${pageContext.request.contextPath}/up.do">
<input type="file" name="filename"/>
<input type="submit" value="上传"/>
</form>
</body>
</html>

    3.2.3 在web.xml配置核心控制器

      

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SpringMVCDemo</display-name> <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<!-- SpringMVC核心处理器 加载-->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- SpringMVC配置文件配置路径 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--Spring-mvc.xml的注解式配置-->
<!--
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>cn.slm.config</param-value>
</init-param>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</init-param>
-->
<!-- 随WEB容器启动加载 -->
<load-on-startup>1</load-on-startup>
</servlet> <!-- Map all requests to the DispatcherServlet for handling -->
<!-- SpringMVC核心处理器响应(拦截)路径 -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> <welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

  

    3.2.4 创建一个业务控制器  TuserAction

package cn.slm.action;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.annotation.SessionScope; @Controller//声明当前类为控制器类
@SessionScope//声明同一个Session只创建一次对象
public class TuserAction {
@RequestMapping(value="/test")//声明 函数print() 响应访问路径 /test
public String print() {
//处理逻辑
System.out.println("this is method: print()....");
System.out.println("this "); return "userinfo";//声明响应视图
} /*@RequestMapping(value="/up",method=RequestMethod.POST)
public void fileUp(@RequestParam String filename) { System.out.println("开始上传!"+filename); }*/
}

    

    3.2.5 创建一个Spring的配置文件 spring-mvc.xml

<?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"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- springMVC annotation注解补充配置 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 将所有的静态资源 交给默认的servlet容器畜处理,即跳过静态资源的拦截-->
<mvc:default-servlet-handler/>
<!-- Spring包扫描 -->
<context:component-scan base-package="cn.slm"></context:component-scan> <!-- <bean id="/Tuser.do" class="cn.slm.action.TuserAction"></bean> --> <!-- 资源过滤 自动为响应视图添加前后缀-->
<bean name="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/view/"></property>
</bean>
</beans>

  

   3.2.6 创建一个返回的视图页面 /SpringMVCDemo/WebApp/WEB-INF/view/userinfo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${msg},响应页面!
</body>
</html>

 


4.      测试

   4.1  请求

    点击测试连接发送请求

    

    4.1  测试结果

    

    

    


5.      总结

    从上面的代码来看,相比于XML的配置方式,注解式的方式确实减少了很多代码。主要侧重在Spring-mvc.xml文件与Action处理类的代码与功能的扩展。

    5.1  不需要在每次新增模块时,再在Spring-mvc.xml中配置一个bean标签,减少了频繁修改XML文件的麻烦,也让Spring-mvc.xml简洁的多。

    5.2  将映射直接用注解写在类和方法上,新增一个模块就增加了功能,卸载模块时直接删掉或注释掉相关类就可完成,不影响其他模块,实现更直观的可插拔,都不用修改XML。

    5.3  业务控制器的代码大量减少简化,不再需要继承或实现任何类或接口,并且可以直接接受页面对象数据,降低了数据获取和处理的难度。

    5.4  业务控制器 的返回视图类型由对象更改为字符串大大的方便了编写,也减少了冗余代码。


学习笔记_J2EE_SpringMVC_02_注解配置的更多相关文章

  1. 学习笔记_J2EE_SpringMVC_03_注解配置_@RequestMapping用法

    @RequestMappingde的用法 摘要: 主要介绍注解@RequestMapping的用法 一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMappi ...

  2. 学习笔记_J2EE_Mybatis_02_mybatis注解配置入门

    mybatis入门示例 声明式 1.概述 mybatis的注解配置版,为了偷懒,直接在之前xml版本的文件上修改的:同样为了偷懒,今天只写示例V1.0版基础配置版 ,后面再更新细节.    一个不偷懒 ...

  3. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

  4. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  5. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  6. Qt5学习笔记(1)-环境配置(win+64bit+VS2013)

    Qt5学习笔记(1)-环境配置 工欲善其事必先-不装-所以装软件 久不露面,赶紧打下酱油. 下载 地址:http://download.qt.io/ 这个小网页就可以下载到跟Qt有关的几乎所有大部分东 ...

  7. springMVC学习笔记(二)-----注解和非注解入门小程序

    最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置 ...

  8. MVC缓存OutPutCache学习笔记 (一) 参数配置

    OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...

  9. 树莓派学习笔记——USB wifi配置指南

    0 前言     树莓派既能够使用有线网络又能够无线网络,假设使用有线网络不方便的话能够借助USB wifi无线网卡让树莓派也插上无线"翅膀". 可是和使用有线网络即插即用的方式不 ...

随机推荐

  1. IFE第二天

    HTML是超文本标记语言,HTML5是下一代的HTML标准. HTML元素是组成HTML文档的部分,HTML属性为HTML元素提供附加信息. 文档类型<!DOCTYPE>声明帮助浏览器正确 ...

  2. django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

    异常汇总:https://www.cnblogs.com/dotnetcrazy/p/9192089.html 这个是Django对MySQLdb版本的限制,我们使用的是PyMySQL,所以不用管它 ...

  3. Java基础 -- 深入理解迭代器

    在Java基础 -- 持有对象(容器)已经详细介绍到,集合(Collection)的种类有很多种,比如ArrayList.LinkedList.HashSet.... 由于集合的内部结构不同,很多时候 ...

  4. 内核空间内存申请函数kmalloc kzalloc vmalloc的区别

    我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free().注意:动态申请的内存使用完后必须要释放,否则会造成内存 ...

  5. appache 在windows 中无法启动的测试

    使用phpstudy刚启动就自动停止,排除端口被占用后,总感觉找不到好的调试方法 网上找了一些资料,这个方法不错,所以就记录了下来.最好的办法是找appache的bin目录,打开运行,输入httpd. ...

  6. Linux系统下rm删除文件后空间没有释放问题解决办法

    一.问题描述 今日收到zabbix监控报警,发现生产环境一台服务器的磁盘空间不足,需要进行处理,登录后发现可利用率不足20%,进行相关查看和处理工作:但是操作删除了一些备份文件和日志信息后,查看空间仍 ...

  7. Druid.jar包

    首先了解一下,什么是Druid. Druid是Java语言中最好的数据库连接池,它能够提供强大的监控和扩展功能. Druid是一个JDBC组件,它包括三部分: 1)DruidDriver 代理Driv ...

  8. luasocket编译安装遇到的坑

    由于需要获得本机的IP地址,所以需要 : local socket = require('socket') local server_hostname = socket.dns.gethostname ...

  9. 微信小程序button组件样式

    点击微信按键组件才能出授权,所以自定义样式就是必须的了,来自网友的帮助,如下图 <button class='btn1' open-type='contact'> <image cl ...

  10. Solr配置步骤

    1. 配置步骤说明 (1)配置Solr服务器. (2)配置SolrHome.(Solr服务的主目录,磁盘) (3)在Solr服务器中加载SolrHome. (4)java程序访问Solr服务器,实现全 ...