Spring MVC:使用基于Java的配置创建一个简单的Controller

这是我博客上与Spring MVC相关的第一篇文章。 开端总是令人兴奋的,因此我将尽量简洁明了。 Spring MVC允许以最方便,直接和快速的方式创建Web应用程序。 开始使用这项技术意味着需要Spring CORE的知识。 在文章中,您将了解有关创建简单的Spring MVC Controller的信息。 我更喜欢基于Java的应用程序配置,因此示例将包含此方法。

主要目的是创建将处理请求的控制器。 因此,单击链接后,您将在Spring控制器的帮助下重定向到具体页面。

制备

在Eclipse中创建一个新的Dynamic Web Project,然后将其转换为Maven项目 。 验证您的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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>SimpleController</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>

index.jsp将在应用程序中充当主页的角色,将其放置在src / main / webapp / index.jsp中 ; 这是index.jsp的代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
...
<h1>Home page</h1>
<p>This is a Home Page.</p>
...

结果,项目的结构将如下所示:

项目结构弹簧mvc开头

设置依赖

接下来,我需要将一些依赖项添加到pom.xml文件中。 我不再谈论依赖关系,下面将对代码进行注释:

<properties><spring.version>3.1.1.RELEASE</spring.version></properties><dependencies><!-- Spring --><dependency><groupid>org.springframework</groupid><artifactid>spring-context</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-webmvc</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-beans</artifactid><version>${spring.version}</version></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-web</artifactid><version>${spring.version}</version></dependency><!-- CGLIB is required to process @Configuration classes --><dependency><groupid>cglib</groupid><artifactid>cglib</artifactid><version>2.2.2</version></dependency><!-- Servlet API, JSTL --><dependency><groupid>javax.servlet</groupid><artifactid>javax.servlet-api</artifactid><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupid>jstl</groupid><artifactid>jstl</artifactid><version>1.2</version></dependency></dependencies>

您可以在官方博客上找到有关Spring依赖项的更多信息。

基于Java的配置

现在该为应用程序创建配置了。 正如我上面提到的,这种方法很方便,原因之一就是注释的使用。 首先,我将创建WebAppConfig类

package com.sprmvc.init;import org.springframework.context.annotation.Bean;
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.view.JstlView;
import org.springframework.web.servlet.view.UrlBasedViewResolver;@Configuration //Specifies the class as configuration
@ComponentScan('com.sprmvc') //Specifies which package to scan
@EnableWebMvc //Enables to use Spring's annotations in the code
public class WebAppConfig {@Beanpublic UrlBasedViewResolver setupViewResolver() {UrlBasedViewResolver resolver = new UrlBasedViewResolver();resolver.setPrefix('/WEB-INF/pages/');resolver.setSuffix('.jsp');resolver.setViewClass(JstlView.class);return resolver;}}

指出所有JSP的存储路径已完成。 为了使用其他可读的URL,这是必需的。

现在轮到初始化程序类了。

package com.sprmvc.init;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;public class Initializer implements WebApplicationInitializer {@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();ctx.register(WebAppConfig.class);ctx.setServletContext(servletContext);	Dynamic servlet = servletContext.addServlet('dispatcher', new DispatcherServlet(ctx));servlet.addMapping('/');servlet.setLoadOnStartup(1);}}

注意,Initializer类实现了WebApplicationInitializer接口。 这是避免Web应用程序的XML配置所必需的。

控制器的JSP

在向您展示如何创建一个简单的控制器之前,我需要创建一个JSP文件,控制器将引导我们进入该文件。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>...<p>Hello world: ${message}</p><p>Well done!</p>
...

这是JSP文件的路径: src / main / webapp / WEB-INF / pages / hello.jsp
请注意,在WebAppConfig类中,我指定了诸如sufix和prefix之类的路径部分。

控制者

最后是LinkController类的代码

package com.sprmvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;@Controller
public class LinkController {@RequestMapping(value='/hello-page')public ModelAndView goToHelloPage() {ModelAndView view = new ModelAndView();view.setViewName('hello'); //name of the jsp-file in the 'page' folderString str = 'MVC Spring is here!';view.addObject('message', str); //adding of str object as 'message' parameterreturn view;}}

现在,您需要通过在其中添加指向Hello页面的链接来更新index.jsp文件:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
...
<h1>Home page</h1>
<p>This is a Home Page.</p>
<p><a href="hello-page.html">Hello world link</a></p>
...

最终的项目结构为:

最终项目结构弹簧mvc开头

启动项目,打开index.jsp并单击链接,您将获得:

Spring MVC开始的结果

摘要

有时教程确实很有帮助,但是学习如何使用Spring的最好方法是阅读官方文档,因此我建议您在Spring博客上进行更深入的研究。

参考: Spring MVC:在Fruzenshtein的注释博客中,由我们的JCG合作伙伴 Alex Fruzenshtein 使用基于Java的配置创建了一个简单的Controller 。

翻译自: https://www.javacodegeeks.com/2013/03/spring-mvc-creation-of-a-simple-controller-with-java-based-config.html

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

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

相关文章

2、创建分类器笔记

创建分类器 简介&#xff1a;分类是指利用数据的特性将其分类成若干类型的过程。分类与回归不同&#xff0c;回归的输出是实数。监督学习分类器就是用带标记的训练数 据建立一个模型&#xff0c;然后对未知的数据进行分类。分类器可以实现分类功能的任意算法&#xff0c;最简单…

复习上学期的HTML CSS(1)

自己跟着网上教程复习上学期的HTML CSS&#xff0c;因为已经忘得差不多了&#xff0c;而且现在学的js也要以HTML CSS为基础&#xff0c;坚持每天持续更新。 n B/S 网络结构 Browser/Server 浏览器/服务器&#xff0c;这是现在最流行的网络模式。如新浪网、凤凰网等。 C/S Clie…

星战前夜服务器维护时间,EVE星战前夜开测时间在什么时候 什么时候测试

EVE星战前夜什么时候开测&#xff0c;EVE星战前夜的测试时间在什么时候&#xff0c;想要知道EVE星战前夜测试时间的小伙伴一起来看看EVE星战前夜的相关资讯&#xff0c;了解一下游戏的开测时间吧。EVE星战前夜目前仍在开发阶段&#xff0c;目前没有进行大范围的测试&#xff0c…

3、预测模型笔记

预测模型 1、简介 预测建模&#xff08;Predictive modeling&#xff09;是一种用来预测系统未来行为的分析技术&#xff0c;它由一群能够识别独立输入变量与反馈目标关联关系的算法构成。根据观测值创建一个数学模型&#xff0c;然后用这个模型去预测未来发生的事情。 预测模型…

常见问题_智能切膜机常见问题

hoco.智能切膜机&#xff0c;如果使用了错误方式&#xff0c;会导致操作失误&#xff0c;整理4个常见问题&#xff0c;还有错误示范&#xff0c;请跟随视频去了解&#xff0c;你使用正确了吗?1. 膜切反这个需要留意切割膜的正反&#xff0c;有文字面就是正面&#xff0c;无文字…

bootstrap的栅格系统和响应式工具

关于bootstrap的响应式布局&#xff0c;昨天看了杨老师的视频教学https://www.bilibili.com/video/av18357039豁然开朗&#xff0c;在这里记录一下 一&#xff1a;meta标签的引用 <meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" conte…

小熊错误_新手爸妈第一年带娃时,很容易犯的7个错误,对照看看你中了没

文 /关注小熊育儿&#xff0c;帮您轻松育儿带娃不是一件容易的事&#xff0c;对爸妈的时间和体力都是一种考验&#xff0c;不仅“熊孩子”让人头疼&#xff0c;育儿知识差&#xff0c;不懂科学育儿理念的“熊爸妈”也是让人很无奈的&#xff0c;最终受伤的还是孩子&#xff0c;…

python--装饰器、生成器、迭代器、元类

一、装饰器 def w1(func):def inner():func()return innerw1 def f1():print(1111111) 1.只要python解释器执行到装饰器&#xff0c;就会自动进行装饰&#xff0c;而不是等到调用的时候才进行装饰。 2.有参数的函数&#xff0c;装饰器定义方法 def w1(func):def inner(*args, *…

scss的使用方式(环境搭建)

我用的是Koala。 IDE是intellij_idea&#xff08;其他IDE也可&#xff09; 下载Koala&#xff1a;http://koala-app.com/ 2.安装&#xff08;选好位置&#xff0c;下一步即可&#xff09; 3.打开Koala&#xff0c;创建项目 》创建css文件夹》创建XXX.scss文件&#xff0c;拖到…

小程序 按需_小程序想要留住用户需哪些举措?

**当下许多企业在进行长沙小程序开发后&#xff0c;都会费劲心思在推广引流上&#xff0c;很多企业也确实起到了不错的效果&#xff0c;用户们也是纷纷来到企业的小程序中。只不过有的小程序却无法将用户留下来&#xff0c;导致用户流失&#xff0c;令推广付之东流。下面长沙小…

渍渍渍~来一发豆瓣自动登录玩玩~

今天来一个比较屌的自动化登陆工具&#xff0c;selenium模块&#xff0c;这个模块&#xff0c;比较装逼啦~具体自行百度吧&#xff01;这篇博客实现了什么功能呢~可以自动使用用户名和密码登录&#xff0c;当然&#xff0c;豆瓣对登录次数还有ip地址做了一些策略&#xff0c;例…

Redis数据库入门学习(下载与安装、常用命令、在Java中操作Redis)

简介 下载与安装 数据类型 常用命令 1.字符串操作命令 2.哈希操作命令 3.列表操作命令 push是将元素总是插入到第一个 0表示第一个&#xff0c;1表示第二个。-1表示倒数第一个&#xff0c;-2表示倒数第二个。当前命令的意思是第一个到倒数第一个&#xff0c;即就是全部元素 rpo…

.NET使用Office Open XML导出大量数据到 Excel

我相信很多人在做项目的都碰到过Excel数据导出的需求&#xff0c;我从最开始使用最原始的HTML拼接&#xff08;将需要导出的数据拼接成TABLE标签&#xff09;到后来happy的使用开源的NPOI, EPPlus等开源组件导出EXCEL&#xff0c;但不久前&#xff0c;我在一个项目碰到一个需求…

CSS自定义消息提示

1.效果 2.源码 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><style type"text/css">#confirm{position: absolute;z-index: 1;display: inline-block;border: 1px solid black;backgr…

file 选择的文件胖多有多大_如何删除 macOS 压缩包中的隐藏文件?

如何删除 macOS 压缩包中的隐藏文件&#xff1f;在工作中&#xff0c;压缩打包文件是不可缺少的一项工作。为了避免文件的损坏和缺失&#xff0c;我们通常在macOS系统中&#xff0c;把多个文件或文件夹压缩后进行传输&#xff0c;我们一般使用访达&#xff08;Finder&#xff0…

CSS画各种二维图形

1.效果 2.源码 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><style type"text/css">#triangle_top{display: inline-block;width:0;height:0;border-left:50px solid transparent;bor…

数据库的开启与关闭

今天&#xff0c;为了一些原因&#xff0c;要重启数据库&#xff0c;但因为当时安装的时候&#xff0c;同学随便装了&#xff0c;导致很多文件都找不到&#xff0c;想使用绝对路径重启数据的计划卡死在了路上。以下&#xff0c;我写下我的数据库开启、关闭的方法&#xff0c;方…

leetcode怎么用时间刷_刷完700多题后的首次总结:LeetCode应该怎么刷?

推荐观看&#xff1a;java技术进阶&#xff1a;膜拜&#xff01;字节大神总结的666页大师级算法宝典&#xff0c;分分钟团灭LeetCode​zhuanlan.zhihu.com2020最新马士兵老师联手左程云老师丨数据结构与算法丨面试BATJ必备​www.bilibili.com我是大二的时候开始接触LeetCode的&…

IntelliJ IDEA:使用Google Guava生成equals,hashCode和toString

问题 在Java领域&#xff0c;我们经常需要编写equals &#xff0c; hashCode和toString方法。 老实说&#xff0c;这通常只是一个样板义务。 得益于智能IDE&#xff0c;我们通常不再自己这样做。 我们只是让和IDE一起努力。 不过有一个问题。 生成的代码通常非常丑陋。 让我们…

Appscan_web安全测试工具 (含修改启动浏览器的方法)

安全测试应该是测试中非常重要的一部分&#xff0c;但他常常最容易被忽视掉。 尽管国内经常出现各种安全事件&#xff0c;但没有真正的引起人们的注意。不管是开发还是测试都不太关注产品的安全。当然&#xff0c;这也不能怪我们苦B的“民工兄弟”。因为公司的所给我们的时间与…