Spring MVC 学习笔记一 HelloWorld

Spring MVC 学习笔记一 HelloWorld

Spring MVC 的使用可以按照以下步骤进行(使用Eclipse):

  1. 加入JAR包
  2. 在web.xml中配置DispatcherServlet
  3. 加入Spring MVC的配置文件
  4. 编写处理请求的处理器,并添加对应注解
  5. 编写视图

下面按照国际惯例先来一个HelloWorld,在新建项目前最好是在Eclipse中安装一个名叫Spring IDE的插件,它会在你以后进行Spring相关开发中提供诸多便捷功能。新建一个Dynamic Web Project。

点击两次Next,来到向导的第三个界面上,选中红框中的复选框。这个选项是用来生成web.xml文件的,也可以在第一个界面中直接点击Finish而不生成web.xml,在Eclipse将项目文件和目录生成以后自己手动添加(能生成还是直接生成吧!费那劲干啥!:) )

项目生成以后就是下面这个样子:

下面开始Spring MVC的使用:

1、加入JAR包,需要以下JAR包:

commons-logging-1.2.jar
spring-aop-4.3.2.RELEASE.jar
spring-beans-4.3.2.RELEASE.jar
spring-context-4.3.2.RELEASE.jar
spring-core-4.3.2.RELEASE.jar
spring-expression-4.3.2.RELEASE.jar
spring-web-4.3.2.RELEASE.jar
spring-webmvc-4.3.2.RELEASE.jar

Spring Framework我使用的是4.3.2的,也可以是其他4.x版本。其中commons-logging这个包不是Spring Framework中自带的,需要自己下载,这是Spring用来做日志的。

找到以上JAR包并复制(Ctrl+C),然后到Eclipse项目中WEB-INF下的lib目录上粘贴(Ctrl+V)就导入到项目中了,导入后就是下面这个样子。

2、配置web.xml

打开WEB-INF下的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>HelloWorld</display-name><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>

我们把DispatcherServlet的配置写在<welcome-file-list>节点之后,如果你觉得这个<welcome-file-list>节点碍眼的话删了也可以。这里在配置DispatcherServlet的时候用到了Spring IDE的辅助功能:在XML文件的编辑区内按Alt + / 在弹出的列表中选择“dispatcherservlet - DispatcherServlet declaration”,会自动插入DispatcherServlet需要的配置信息,非常方便!

当你在列表中选择“dispatcherservlet - DispatcherServlet declaration”后生成的配置信息如下(未改动前):

<?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>HelloWorld</display-name><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><!-- The front controller of this Spring Web application, responsible for handling all application requests --><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>location</param-value></init-param><load-on-startup>1</load-on-startup></servlet><!-- Map all requests to the DispatcherServlet for handling --><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><url-pattern>url</url-pattern></servlet-mapping>
</web-app>

下面是修改后的实际配置

<?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>HelloWorld</display-name><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><!-- 配置DispatcherServlet --><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置初始化参数:配置Spring MVC配置文件的位置和名称 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-config.xml</param-value></init-param><!-- load-on-startup 为 1,是指当Web App被加载时DispatcherServlet就会被创建,而不是在处理第一次请求时候 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springDispatcherServlet</servlet-name><!-- / 表示响应所有请求 --><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

3、DispatcherServlet的配置写好了,但是我们还没有创建springmvc-config.xml这个配置文件,所以现在就创建它。在项目的src目录上点击右键,选择New--Other打开新建对话框,做如下选择:

生成的springmvc-config.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/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"></beans>

在继续配置之前我们先在src目录内创建一个包,这个包的名字就叫com.demo.controller(你可以取一个你认为合适的包名称!),然后继续配置springmvc-config.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/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"><!-- 配置自动扫描的包 --><context:component-scan base-package="com.demo.controller"></context:component-scan><!-- 配置视图解析器 把Controller方法返回的视图解析为实际视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/views/"></property><!-- 后缀 --><property name="suffix" value=".jsp"></property></bean>
</beans>

4、编写处理请求的处理器,并添加对应注解

现在我们创建用于响应请求的Controller,在刚才新建的包内创建HelloWorld类,IDE会生成HelloWorld.java,这个就是我们的Controller的源码文件。我们在这个文件中添加响应请求的方法并添加注解。完成后如下:

package com.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;//使用Controller注解使之成为可以响应请求的控制器
@Controller
public class HelloWorld {/*** 使用RequestMapping注解映射要响应的URL* 该方法的返回值会被视图解析器解析为实际物理视图* 通过我们配置的视图解析器(InternalResourceViewResolver)解析后的实际视图为:前缀 + returnValue + 后缀* 结合我们的Spring MVC配置文件中配置的前缀和后缀组合起来就是:/WEB-INF/views/welcome.jsp*/@RequestMapping("/helloworld")public String hello() {//打印一句话我们将在控制台中看到,不会显示到页面上System.out.println("Hello World");return "welcome";}
}

有了Controller我们还需要一个视图,也就是我们在public String hello()这个方法中返回的welcome这个视图,在项目的WEB-INF目录上点右键选择New--Folder新建一个目录(我们配置的视图的前缀“/WEB-INF/views/”,是WEB-INF目录下的views目录),在这个新建的目录上点右键选择New--JSP File新建一个叫welcome的JSP文件,也就是我们的视图文件。

在这这个视图文件中添加点内容,让它看起来像那回事儿!

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello world</title>
</head>
<body><h2>Hello World</h2>
</body>
</html>

需要准备的东西都差不多,现在写一个页面来测试一下我们的Hello World是否可以正常工作。在WebContent目录下新建一个JSP文件,名字随便,我这里叫index.jsp,写个超链接来访问我们在HelloWorld这个Controller里映射的URL。

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><!-- 访问我们映射的URL -->访问<a href="helloworld">helloworld</a>
</body>
</html>

好了,现在在这个index.jsp文件上点右键,选择Run As --- Run on Server(或者使用快捷键:Alt+Shift+X R),如果之前没有配置服务器则会出现下面第一个窗口让你先配置一个服务器,配置好以后第二次使用Run As --- Run on Server时就是下面第二个窗口的界面了,直接点Finish即可。

(我本机上安装的是Tomcat7,所以选择Tomcat v7.0 Server,如果你安装的是Tomcat6或Tomcat8请选择对应的版本)

如不出什么意外我们应该能看到下面的界面:

上面就是index.jsp页面,点击页面上的那个超链接就可以跳转到下面的页面(我们的welcome视图):

到这里我们的helloworld就完成了,这是最基础的Spring MVC的应用,能成功完成就算是有个好的开始了。

最后贴一张整个项目的目录结构

转载于:https://www.cnblogs.com/huixch/p/5854976.html

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

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

相关文章

php 避免xss_PHP防止XSS注入

我们在做网站的时候&#xff0c;经常有input提交&#xff0c;通常前端对input中的内容不做判断&#xff0c;只做不为空等简单的操作。但是&#xff0c;有的input中会提交一些javascript或者html,会给网站造成一定的危害。为此&#xff0c;防止XSS注入的任务交给了后端&#xff…

为什么选择Docker?

容器并不是什么新鲜事物&#xff0c;但是实现它们总是比需要的要复杂一些。 Docker在简化容器方面取得了长足的进步&#xff0c;并从此引爆了整个世界。 让我们看看为什么。 为什么Docker成为家喻户晓的名字 Docker不是很老。 2014年5月&#xff0c;当我写了一篇煽动性博客文章…

全字符微信名 php,PHP方法处理微信昵称特殊符号过滤

我们在通过PHP获取微信昵称&#xff0c;并且存于数据库的时候&#xff0c;由于一些昵称带有特殊符号&#xff0c;所以存不进去&#xff0c;这时候我们可以通过下面的方式来处理。方法二protected function removeEmoji($clean_text) {// Match Emoticons$regexEmoticons /[\x{…

[转载]我的PMP复习备考经验谈(下篇)——一本关于PMP备考的小指南

原文地址&#xff1a;我的PMP复习备考经验谈(下篇)——一本关于PMP备考的小指南作者&#xff1a;羽少宸PMP复习备考经验谈&#xff08;下篇&#xff09;——PMP备考小指南 总结经验&#xff0c;展望未来&#xff0c;以此纪念PMP复习备考时光 继上篇&#xff0c;猛击直达四、如何…

java如何抽象一辆车,java新职篇:面向对象之抽象

面向对象编程的一个实质性的要素是抽象。人们通过抽象(abstraction)处理复杂性。例如&#xff0c;人们不会把一辆汽车想象成由几万个互相独立的部分所组成的一套装置&#xff0c;而是把汽车想成一个具有自己独特行为的对象。这种抽象使人们可以很容易地将一辆汽车开到杂货店&am…

Test on 09/04/2016

滑稽树 (huajitree.pas/c/cpp) 【问题描述】 JZYZ的湖畔边有一棵滑稽树&#xff0c;每年的冬天滑稽树上都会长出很多个滑稽果。我们用一个二维平面N,M描述每个滑稽果所能落下的位置&#xff0c;即每个滑稽果不可能落到我们所描述的二维平面之外。 滑稽大师cdc钟爱于收集滑稽…

php项目私有化部署保护代码,ThinkPHP项目安全配置解决方案

前言:ThinkPHP MVC框架越来被开发者接受,众多的开发者选择了这个框架&#xff0c;也有很多的优秀项目使用的ThinkPHP框架。最近整理了一下ThinkPHP项目的一些安全配置。可能并不适用全部项目&#xff0c;大家可以适当的使用如下的安全配置。前置知识:web容器和各类组件的版本&a…

Apache-SimpleEmail 简单应用

比JavaMail使用方法要直接&#xff0c;jar包只需要在JavaMail的基础上添加commons-email-1.4.jar即可。 代码&#xff1a; // QQ邮箱发送邮件 SimpleEmail simpleEmail new SimpleEmail(); simpleEmail.setHostName("smtp.qq.com"); simpleEmail.setAuthentication(…

php7.0 百度百科,PHP 7.0.10正式发布

原标题&#xff1a;PHP 7.0.10正式发布PHP 7.0.10 正式发布了。下载地址&#xff1a;http://php.net/distributions/php-7.0.10.tar.gz改进日志如下&#xff1a;- Core:. Fixed bug #72629 (Caught exception assignment to variables ignores references). (Laruence). Fixed …

javascript中构造函数的说明

1.1 构造函数是一个模板 构造函数&#xff0c;是一种函数&#xff0c;主要用来在创建对象时对 对象 进行初始化&#xff08;即为对象成员变量赋初始值&#xff09;&#xff0c;并且总是与new运算符一起使用。 1.2 new 运算符 new运算符创建一个新对象。关键字new后跟随一个函数…

大数据分析 es hive_使用Hive和iReport进行大数据分析

大数据分析 es hive每个JJ Abrams的电视连续剧疑犯追踪从主要人物芬奇先生一个下列叙述情节开始&#xff1a;“ 你是被监视。 政府拥有一个秘密系统-每天每天每小时都会对您进行监视的机器。 我知道是因为...我建造了它。 “当然&#xff0c;我们的技术人员知道得更多。 庞大的…

datetime unix php,PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】...

本文实例讲述了PHP基于DateTime类解决Unix时间戳与日期互转问题。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这个问题主要在32位的系统下出现&#xff0c;64位的不存在这样的问题。php 5.2提供了DateTime类来处理这样的问题&#xff0c;参考方案如下(请注意时区的处…

Java中的使用了未经检查或不安全的操作

1。 javac -Xlint:unchecked MyMath.java检查不安全的操作 /***************************************************/ MyMath.java:29: 警告: [unchecked] 对作为原始类型ArrayList的成员的add(E)的调用未经过检查 array.add("1"); ^ 其中, E是类型变量: E扩展已在类 …

java+jsp+网页制作,java+jsp+mysql网页制作总结(2)

错误&#xff1a;url通过get传递时汉字出错解决&#xff1a;url通过get传递时汉字会乱码&#xff0c;1.String name1request.getParameter("name");String name new String(name1.getBytes("ISO-8859-1"),"gbk");2.通过post传递参数错误&#x…

Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)

https://blogs.technet.microsoft.com/robertsmith/2012/02/07/analyzing-storage-performance-using-the-windows-performance-analysis-toolkit-wpt/转载于:https://www.cnblogs.com/zengkefu/p/5864455.html

Redis聚类

本文是我们学院课程的一部分&#xff0c;标题为Redis NoSQL键值存储 。 这是Redis的速成班。 您将学习如何安装Redis并启动服务器。 此外&#xff0c;您将在Redis命令行中乱七八糟。 接下来是更高级的主题&#xff0c;例如复制&#xff0c;分片和集群&#xff0c;同时还介绍了…

Java宣言的时候,Java基础恶补——宣言及访问控制

Java基础恶补——声明及访问控制[SCJP Sun Certified Programmer for Java 6 Study Guide (Exam 310-065)] chapter 1一. 标识符1. 标识符只能由字母、下划线、货币符号、数字组成&#xff0c;除数字外其余均可作为标识符的开头符号。(PS&#xff1a;汉字作为标识符也是合法的…

域策略禁用usb

文档及模板可在 http://pan.baidu.com/s/1qYTcjTy 下载 pro_usb_users.adm 此模板可禁用到 指定盘符&#xff0c;针对用户策略 pro_usb_computers.adm 此模板 针对计算机&#xff0c;一般只要它就好了。 可以从 3 个方面下手 adm 配置 文件。注册表usb驱动其实 adm配置文件&…

java常用代码,Java常用代码

Java常用代码/*** author he*** 把Date转换成String&#xff0c;以yyyy-MM-dd HH:mm:ss的形式显示*/public static String DateToString(Date tempDate) {String date_str "";SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); …

【Effective Java】6、使用复合优先于使用继承

这个&#xff0c;不管是什么书都会这样说&#xff0c;因为常常我们并不需要继承&#xff0c;而只是想把类进行一定的扩展&#xff0c;而我们想扩展的属性或方法对应的类都有&#xff0c;这个时候如果两者是is a的关系&#xff0c;这种关系是确实存在的&#xff0c;那么就可以使…