[Spring]01_环境配置

1.1 Spring jar包下载


1进入官网http://repo.spring.io

2在资源库界面点击Artifacts标签,然后点击libs-release-local,展开后依次点击org -> springframework -> spring。

 

然后,就可以看到发布的各个版本,选一个自己需要的版本,点击Download

(我这里下载的是当前最新版本spring-framework-4.1.6.RELEASE-dist)

 

 

1.2 Hello World


SpringMVC 配置过程中很容易出现各式各样的问题,很是费劲。

下面提供傻瓜式创建HelloWorld工程的方式,希望大家少走弯路。

1)创建一个Dynamic Web Project

点击File -> New -> Other, 输入web 可以找到Dynamic Web Project

新建一个名为SpringHello的工程。可参考下图的配置 。

2)导入springjar

WEB-INF目录下新建一个lib目录(如果没有lib目录)。

将下载的spring-framework-4.1.6.RELEASE-dist\spring-framework-4.1.6.RELEASE\libs中的jar包拷贝到WEB-INF\lib目录下

为图省事,本人将所有jar都拷贝进来了。

此外,spring框架还依赖一个外部jar包:commons-logging-1.2.jar,需要下载并导入。

:顺便提一下,spring-framework-4.1.6.RELEASE-dist\spring-framework-4.1.6.RELEASE\libs下的jar包分为普通jar包、sources jar包和javadoc jar包。sources javadoc分别包含了普通jar包的源码和java文档。

有兴趣想看spring源码的朋友可以导入,导入方法网上有很多介绍,这里不赘述。

 

3)添加web.xml

web.xml文件中声明了servlet的清单。

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="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.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
 
 
       <display-name>SpringHello</display-name>
 
    <!-- 声明前端控制器 -->
       <servlet>
              <servlet-name>spring</servlet-name>
              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                     <!-- 如果不设置的话,默认的servlet配置文件名为xxx-servlet.xml -->
                     <param-name>contextConfigLocation</param-name>
                     <param-value>/WEB-INF/spring.xml</param-value>
              </init-param>
              <load-on-startup>1</load-on-startup>
       </servlet>
 
       <!-- 声明DispatcherServlet处理哪些URL -->
       <servlet-mapping>
              <servlet-name>spring</servlet-name>
              <url-pattern>/</url-pattern><!-- 映射到/表示会处理所有的请求 -->
       </servlet-mapping>
</web-app>
复制代码

SpringMVC的核心是DispatcherServlet,这个servlet的角色是前端控制器。所有的servlet都是在web.xml中配置的,DispatcherServlet当然也不例外。

如果不指定contextConfigLocation,默认情况下servlet配置文件的名字形式应该为servlet-servlet.xml这个servlet名就是<servlet-name>标签中的名字。

 

4)添加servlet——spring.xml

新建一个名为spring.xml的文件(这个文件名必须和web.xml中的servlet对应上),内容如下:

复制代码
<?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:p
="http://www.springframework.org/schema/p"
       xmlns:context
="http://www.springframework.org/schema/context"
       xmlns:util
="http://www.springframework.org/schema/util"
       xmlns:mvc
="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation
="
       http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
 
       <!-- 默认的注解映射的支持 -->
       <mvc:annotation-driven />
      
       <!-- 如果当前请求为“/”时,则转发到“/login/index” -->
       <mvc:view-controller path="/" view-name="forward:/login/index" />
      
       <!-- 设置后,将查找使用@Component(@Controller是它的一种具体化)注解的类并将其注册为Bean -->
       <context:component-scan base-package="com.demo.web.controllers" />
 
       <!-- 配置视图解析器 (该配置的是jstl解析器的一个扩展解析类) -->
       <bean
              
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <property name="prefix" value="/WEB-INF/view/" />
              <property name="suffix" value=".jsp" />
       </bean>
</beans>
复制代码

 

(5) 添加Controller——LoginController.java

ControllerSpringMVC的控制器,用于处理页面请求。

新建一个名为LoginControllerjava文件,内容如下:

复制代码
package com.demo.web.controllers;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class LoginController {
      @RequestMapping(value="/login/index", method = RequestMethod.GET)
      public ModelAndView index() {
            ModelAndView mav = new ModelAndView();
            mav.addObject("message", "Hello World! First program!");
            mav.setViewName("index"); // 设置视图名称
            return mav;
      }
}
复制代码

Spring2.5版本引入了注解方式,所以,我们可以很方便的使用@Controller来将一个类标注为控制器。

spring.xml中,我们定义了<context:component-scan>标签,这样LoginController会自动被发现并注册为Bean。需要注意的是pacake要相互对应。

@RequestMapping可以将一个URL映射到一个实体类或一个特殊的handler方法上。RequestMethod.GET表示只接受get请求。

 

(6)添加视图——index.jsp

/WEB-INF文件夹下新建一个view文件夹,并添加一个名为indexjsp文件,内容如下:

复制代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
       pageEncoding
="ISO-8859-1"%>
<!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>Spring Hello World</title>
</head>
<body>
       <h1>${message}</h1>
</body>
</html>
复制代码

 

7)运行项目

经过上面的步骤,项目文件结构如下

运行项目,选择Run As -> Run On Server结果如下:

 本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/p/4503462.html,如需转载请自行联系原作者

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

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

相关文章

深度学习基础(三)loss函数

loss函数&#xff0c;即损失函数&#xff0c;是决定网络学习质量的关键。若网络结构不变的前提下&#xff0c;损失函数选择不当会导致模型精度差等后果。若有错误&#xff0c;敬请指正&#xff0c;Thank you&#xff01; 目录 一、loss函数定义 二、常见的loss算法种类 1.M…

Shift键关闭大小写

同事说他的大写开了之后无法关闭&#xff0c;我检查了下&#xff0c;的确是&#xff0c;非常奇怪&#xff0c;然后我不小心按了下下面的Shift键&#xff0c;大写指示灯灭了&#xff0c;我立即明白是怎么回事&#xff0c;原来是文字和语言设置里的Key setting改了&#xff0c;如…

深度学习之pytorch(一) 环境安装

快2周没更新博客了&#xff0c;别问为什么&#xff01;我才不会告诉你忙的飞起&#xff01;说心里话&#xff0c;个人更喜欢用tensorflow来做深度学习&#xff01; 一、环境配置 1.win10 64位系统&#xff1b; 2.anaconda3&#xff1b; 3.不管是CPU还是GPU具有&#xff08;…

CAD——将图形移动到指定点的方法(此处以捕捉坐标系原点为例)

1、在CAD中画一个正方形&#xff0c;没有任何角点在坐标原点上 2、点击修改工具栏的“移动命令”&#xff0c;选择刚刚画好的图形&#xff0c;选择一个点为第一个基点&#xff1b; 3、先输入#号&#xff08;shift3&#xff09;,再输入0,0&#xff0c;用英文逗号隔开&#xff0c…

容器的综合应用:文本查询程序

需求 程序读取用户指定的任意文本文件&#xff0c;允许用户从该文件中查找单词。查询结果是该单词出现的次数&#xff0c;并列出每次出现所在行&#xff0c;如果某单词在同一行中多次出现&#xff0c;程序将只显示该行一次。行号按升序显示&#xff0c;即第 7 行应该在第 9 行之…

Anaconda 安装操作及遇到的坑

最近刚用Pytorch&#xff0c;编译开源代码的时候发现缺少n个package&#xff0c;原来是之前在Anaconda3 创建的虚拟环境各自是独立的&#xff0c;tensorflow下安装的不能在别的环境下使用&#xff0c;所以要重新安装。然而关键是国内各种屏蔽资源&#xff0c;无法FQ去直接下载安…

IE浏览器历史版本图标大全

上个月IE团队庆祝了IE的15周岁生日&#xff0c; 并晒了晒IE各个历史版本的图标&#xff1a; Internet Explorer 1.0 图标 Internet Explorer 2.0 图标 Internet Explorer 3.0 图标 Internet Explorer 4.0 图标 Internet Explorer 5.0 图标 Internet Explorer 6.0 图标 Internet…

7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)

视频地址&#xff1a;http://edu.51cto.com/sd/be679 在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询&#xff0c;当然你也可以用包装类来实现。不过这里不说&#xff0c;做关联查询的步骤可以简单的总结为以下的几步&#xff1a;…

ANSYS——查看某一截面的云图分布(也叫做切片图)

1.确定截面的位置 此处以图中红色处截面为例 2.将工作平面经过坐标变化移动到指定截面处(工作平面的XY平面与截面重合) 工作平面坐标系默认是与总体坐标系重合的,这里是先平移再进行旋转

深度学习之keras (一) 初探

之前一段时间里&#xff0c;学习过tensorflow和Pytorch也写了点心得&#xff0c;目前是因为项目原因用了一段时间Keras&#xff0c;觉得很不错啊&#xff0c;至少从入门来说对新手极度友好&#xff0c;由于keras是基于tensoflow的基础&#xff0c;相当于tensorflow的高级API吧&…

swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...

swift&#xff1a;高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符&#xff0c;Swift还有许多复杂的高级运算符&#xff0c;包括了C语和Objective-C中的位运算符和移位运算。 不同于C语言中的数值计算&#xff0c;Swift的数值计算默…

收集、报告或保存系统活动信息:sar命令

2019独角兽企业重金招聘Python工程师标准>>> 索引 sar命令的使用常用方法 查看网络设备&#xff08;网卡&#xff09;的状态信息查看socket使用情况查看cpu使用情况(默认)查看内存和交换空间使用情况查看内存的统计信息查看tty设备的活动状态查看等待运行的进程数和…

【GOF23设计模式】原型模式

【GOF23设计模式】原型模式 来源&#xff1a;http://www.bjsxt.com/ 一、【GOF23设计模式】_原型模式、prototype、浅复制、深复制、Cloneable接口 浅复制 1 package com.test.prototype;2 3 import java.util.Date;4 5 /**6 * 浅复制7 */8 public class Sheep implements C…

Deepfacelab 小白教程

不小心入了AI换脸的坑&#xff0c;但是感觉AI换脸很有意思&#xff0c;第一次感觉科研使我快乐。 目录 一、AI换脸软件简介 二、Deepfacelab下载安装 三、Deepfacelab Demo实现 四、Deepfacelab 填坑 五、总结 一、AI换脸软件简介 这个没有具体使用过&#xff0c;目前我…

Underscore.js 的模板功能

Underscore是一个非常实用的JavaScript库&#xff0c;提供许多编程时需要的功能的支持&#xff0c;他在不扩展任何JavaScript的原生对象的情况下提供很多实用的功能。 无论你写一段小的js代码&#xff0c;还是写一个大型的HTML5应用&#xff0c;underscore都能帮上忙。目前&…

ANSYS——查看剖面图的应力分布云图以及工作平面的相关设置

剖面图和切片图其实差不多,只是切片图只有一个截面,而剖面图是切去一部分保留另一部分模型,不但可以看到截面处应力分布还可以看到剩余模型的应力分布 切片应力云图可见:https://blog.csdn.net/qq_45769063/article/details/106357700 1.剖面云图的查看 首先将工作平面的…

2016.8.2

高端内存映射方式 高端内存映射分为三种&#xff1a;永久映射、临时映射和非连续动态内存映射。高端内存一般是指896MB以上的页框&#xff0c;这段区间内核一般不能直接访问。 1.永久映射 永久内核映射允许内核建立高端页框到内核地址空间的长期映射。它们使用主内核页表中的一…

深度学习之pytorch(三) C++调用

玩深度学习&#xff0c;个人觉得基于anaconda的python适合开发与测试&#xff0c;C适合实际的工程部署&#xff01;而pytorch官方有编译好的libtorch&#xff0c;特别方便&#xff0c;适合于我这样的伸手党和手残党(win10下编译tensorflow编译了好久都没通过&#xff0c;好忧伤…

机器学习(一) 基于sklearn库的数据集划分(交叉验证)

机器学习中首要环节就是数据集的处理&#xff0c;其中数据集的处理从个人理解(如有错误敬请谅解)的角度来说包括两个方面&#xff1a;数据集划分和数据清理。其中数据集划分是指训练集、验证集和测试集的数据类别划分&#xff1b;数据清理是指数据的清洗、删除等等方面。这两天…

敏捷项目开源管理软件ScrumBasic(2)- 多项目支持

1.加入Project对象模型 public class Project{[Key][MaxLength(32)]public string ID { get; set; }public string Name { get; set; }public int Order { get; set; }public ICollection<UserStory> Stories { get; set; }public ApplicationUser Creator { get; set; }…