spring基于注释的配置_基于注释的Spring MVC Web应用程序入门

spring基于注释的配置

这是使Maven启动Spring 3 MVC项目的最小方法。

首先创建spring-web-annotation/pom.xml文件,并包含Spring依赖项:

<?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.0http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>spring-web-annotation</groupId><artifactId>spring-web-annotation</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><dependencies><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.2.4.RELEASE</version></dependency></dependencies>
</project>

现在,在spring-web-annotation/src/main/java/springweb/WebApp.java为MVC部件创建Servlet 3 Web初始化程序和Spring注释配置。

package springweb;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;public class WebApp extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class<?>[0];}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class<?>[]{ WebAppConfig.class };}@Overrideprotected String[] getServletMappings() {return new String[]{ "/" };}@Configuration@EnableWebMvc@ComponentScan("springweb.controller")public static class WebAppConfig {}
}

WebApp类扩展了Spring内置的Servlet3 Web初始化程序代码。 它允许Servlet3容器(例如Tomcat7)自动检测此Web应用程序,而无需进行web.xml配置设置。 因为我们不使用web.xml ,所以我们需要此类来允许Spring挂接到Servlet容器中以引导其调度程序servlet。 另外,我们现在可以使用基于WebAppConfig所有注释,而不是典型的Spring bean xml文件配置。

注意,我已经将WebAppConfig组合为内部类,但是您可以轻松地将其作为全面应用程序中的顶级类移出。 这是容器配置的Spring注释版本。 您可以通过在此处添加新的@Bean轻松定制应用程序。

注意:不要忘记用"/"覆盖getServletMappings方法,否则您的URL请求将不会定向到Spring调度程序进行处理! 这一步很容易被遗忘,您可能会发现自己在追逐为什么Spring控制器无法正常工作的原因。

以上实际上是启动战争项目所需的最低设置。 接下来,您要添加至少一个控制器以验证某些输出。 创建此控制器文件spring-web-annotation/src/main/java/springweb/controller/IndexController.java

package springweb.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class IndexController {@RequestMapping(value="/")public String index() {return "index";}
}

现在,您将需要JSP视图spring-web-annotation/src/main/webapp/index.jsp

Hello World.

现在cd进入spring-web-annotation并执行mvn org.apache.tomcat.maven:tomcat7-maven-plugin:run 。 您应该看到Spring应用程序已启动,并且能够浏览http://localhost:8080/spring-web-annotation URL。

Spring MVC有很多很酷的功能。 查看他们的真棒文档,了解更多详细信息。

参考: A程序员杂志博客上的JCG合作伙伴 Zemian Deng从基于注释的Spring MVC Web应用程序入门 。

翻译自: https://www.javacodegeeks.com/2013/10/getting-started-with-annotation-based-spring-mvc-web-application.html

spring基于注释的配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ad09只在一定范围内查找相似对象_dxp查找相似对象

(Edit→Find Similar Objects)ShifF 查找 相似对象 EOS(Edit→Origin→Set)设置坐标原点 ESN((Edit → Select → Net) 选中显示某个网 络 FA(......“ctrlA”全选,选择需要修改的器 件,点鼠标右键弹出如下图的菜单: 选择 “查找相似对象” 移动鼠标到需要修改的属性上,点“ok”…

首次适应算法_CVPR 2020丨?商汤TSD目标检测算法获得Open Images冠军

编者按&#xff1a;此前&#xff0c;在文章《商汤科技57篇论文入选ICCV 2019&#xff0c;13项竞赛夺冠》里&#xff0c;商汤君报道了商汤科技荣获Open Images Object Detection Challenge 2019 冠军。由Google AI主办的Open Images大赛是目前通用物体检测和实例分割两个领域中数…

玩JDK 12的Switch表达式

在博客文章“操作中的JDK语言功能预览&#xff1a;切换表达式 ”中&#xff0c;我讨论了JEP 325 [“切换表达式&#xff08; 预览 &#xff09;”&#xff09;如何作为指定的“ 预览语言功能 ”的早期应用&#xff0c;如JEP 12所述。预览语言和VM功能”]。 JEP 325 适用于JDK 1…

java 三元 代替 if_Java 中三元和 if else 哪个的效率比较高,有底层解释吗,谢谢了!...

Genokiller2018-12-28 18:16:11 08:00是否还有其他影响效率的地方两段简短的测试代码&#xff1a;Test2.java (三元运算符)public class Test2{public static void main(String args[]){int m 1, n2;String s m > n ? "a" : "b";}}Test3.java ( if...…

python 验证码_4行Python代码生成图像验证码

点击上方蓝色字体&#xff0c;关注我们最近无意看到网上有人使用Python编写几十行代码生成图像验证码&#xff0c;感觉很是繁琐&#xff0c;这里为各位朋友推荐两种方法&#xff0c;使用4行Python代码即可生成验证码。1captcha库第1步&#xff1a;安装captcha库pip install cap…

python3 多线程_Python3多线程爬虫实例讲解

多线程概述多线程使得程序内部可以分出多个线程来做多件事情&#xff0c;充分利用CPU空闲时间&#xff0c;提升处理效率。python提供了两个模块来实现多线程thread 和threading &#xff0c;thread 有一些缺点&#xff0c;在threading 得到了弥补。并且在Python3中废弃了thread…

java多条件组合查询6_elasticsearch组合多条件查询实现restful api以及java代码实现

elasticsearch组合多条件查询实现restful api以及java代码实现实际开发中&#xff0c;基本都是组合多条件查询。elasticsearch提供bool来实现这种需求&#xff1b;主要参数&#xff1a;must文档 必须 匹配这些条件才能被包含进来。must_not文档 必须不 匹配这些条件才能被包含进…

instanceof运算符_Java 8中的instanceof运算符和访客模式替换

instanceof运算符我有一个梦想&#xff0c;不再需要操作员和垂头丧气的instanceof &#xff0c;却没有访客模式的笨拙和冗长。 所以我想出了以下DSL语法&#xff1a; Object msg //...whenTypeOf(msg).is(Date.class). then(date -> println(date.getTime())).is(Strin…

python垃圾处理_利用python程序帮大家清理windows垃圾

前言大家应该都有所体会&#xff0c;在windows系统使用久了就会产生一些“垃圾”文件。这些文件有的是程序的临时文件&#xff0c;有的是操作记录或日志等。垃圾随着时间越积越多&#xff0c;导致可用空间减少&#xff0c;文件碎片过多&#xff0c;使得系统的运行速度受到一定影…

基于java家教管理系统_基于jsp的家教信息管理-JavaEE实现家教信息管理 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的家教信息管理, 该项目可用各类java课程设计大作业中, 家教信息管理的系统架构分为前后台两部分, 最终实现在线上进行家教信息管理各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类家教信息管理相关的实体…

如何从云功能调用外部REST API

在之前的博客文章中&#xff0c;我展示了如何创建您的第一个云功能 &#xff08;以及一个视频 &#xff09;。 您的云函数很可能需要调用外部REST API。 以下教程将向您展示如何创建此类功能&#xff08;非常简单&#xff09;。 登录到IBM Cloud帐户 点击目录 删除标签&…

sinx泰勒展开_高考中怎么用泰勒公式?

好久没有更新了&#xff0c;最近一直在准备天津市高数竞赛&#xff0c;今天才有空写高考的文章看&#xff0c;并且运用这篇文章的前提要求是已经掌握了绝大多数的高考题型然后了解泰勒拓展知识面什么是泰勒公式&#xff1f;你去百度肯定会有一大堆理论给你解释&#xff0c;今天…

java selenium 日志_java - 支持selenium日志_java_酷徒编程知识库

在自動測試中&#xff0c;Chrome創建了大量日誌&#xff0c;System.setProperty("webdriver.chrome.silentOutput","true");ChromeOptions options new ChromeOptions();options.addArguments("--disable-logging","--log-levelOFF",…

机器学习分类算法_机器学习分类算法

人们曾在自身的神经元得到启发&#xff0c;将机器学习中给出的特征输入与权重之积作为输出与阈值作比较&#xff0c;得到0或者1的输出。这就是我们感知器的实现原理感知器在实现过程中的步骤如下&#xff1a;①将权值初始化称为一个很小的向量②迭代训练所有样本&#xff1a;计…

scala 异步调用_非阻塞异步Java 8和Scala的Try / Success / Failure

scala 异步调用受Heinz Kabutz最近的时事通讯以及我在最近的书中研究的Scala的期货的启发&#xff0c;我着手使用Java 8编写了一个示例&#xff0c;该示例如何将工作提交给执行服务并异步地响应其结果&#xff0c;并使用了回调。无需阻止任何线程等待执行服务的结果。 理论认为…

java简单的事务单元_junit 单元测试事务自动回滚(亲测有效)

junit 单元测试事务会自动回滚。通过Rollback(true)注解来实现&#xff0c;默认是true&#xff0c;事务会回滚&#xff0c;可以不写。false时事务不会回滚&#xff0c;数据会写到数据库中。实例&#xff1a;package com.xiaolyuh.service;import java.util.Date;import org.jun…

linux系统如何打开python_手把手教你在Linux系统下使用Python虚拟环境

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤夕阳无限好&#xff0c;只是近黄昏。/1 前言/Hello小伙伴们&#xff0c;你们好&#xff0c;又是日常get新技能的一天&#xff0c;今天&#xff0c;咱们来整一…

Java EE 7中的资源和依赖注入

1.概述 上下文和依赖注入&#xff08;CDI&#xff09;是Java EE的一项功能&#xff0c;可帮助融合Java EE 6和更高版本中包含的平台的Web层和事务层。 从技术角度来看&#xff0c;这意味着CDI提供了依赖项注入框架&#xff0c;并且还管理了依赖项的生命周期。 今天在本教程中&…

java wrap方法_Java WritableCellFormat.setWrap方法代码示例

import jxl.write.WritableCellFormat; //导入方法依赖的package包/类/*** param workSheet to add the help to* param table to fetch metadata from* param startRow to start adding rows at* param helpTextRowNumbers - map to insert row numbers for each help field i…

python创建tcp socket_Python Socket如何建立TCP连接

在 Python 程序中创建 TCP 服务器时&#xff0c;创建通用 TCP 服务器的一般演示代码如下。需要记住的是&#xff0c;这仅是设计服务器的一种方式。一旦熟悉了服务器设计&#xff0c;可以修改下面的代码来操作服务器。ss socket() #创建服务器套接字ss.bind() #绑定套接字与地址…