您的位置:首页 > 编程语言 > Java开发

从零开始spring-mvc到hello-world

2017-02-19 00:12 411 查看
jdk: 1.8

eclipse java ee: 4.6

tomcat: 8.5

spring 4.3.6

想用spring-mvc开发web应用有两种方式:

1. new project->Dynamic Web Project

2. new project->Maven Project

两种有什么区别呢?

主要就再于处理依赖方面,一种是手动自己搞定,一种是自动搞定而且还可以复用,网上的多数文章都是第一种。

第一种 创建工程后 要自己去 spring.io 官网 去下载 spring-framework 这个zip 包,解压后(自己看文档或者看别人的文章或者自己瞎琢磨),在一堆 jar 包中找到那些用于 spring-mvc web 开发的 jar 包 ,复制-〉粘贴到 项目目录

WEB-INF/lib


这个目录下。spring-mvc 这个东西是没有单独的可下载的 都在 spring-framework 这个主包中。相省点事的可以直接下载 spring-boot 这个是个独立的 project 可单独下载这个是专门用于 web 开发的。是不是挺麻烦,就是嘛!

第二种 用maven 来自动管理依赖

which mvn


运行一下这个命令 没有自己去安装

brew install maven  其它的系统自己的脑补吧


File->Maven Project



开发webapp就不要去勾选上面的
create a simple project
因为勾选的话创造的就是普通java类项目会缺少用于webapp开发的一些
比如 特定的文件夹 webapp WEB-INF web.xml
等等 当然如果你要说你要自已动手丰衣足食也可以,不过 一些内容 一些设置你也要自己动手搞了,搞不明白的还要去网上搜文章,不累吗?

点击
next




在这个界面选择
结尾是 -webapp
这个选项,就是创建的 web项目。

点击
next




在这个界面有三个选项需要添写

Group id(包名): com.example.demo

Artifact id(项目名):app02

Version 默认就好

Package: 会随着 Group id 变化 当然也可以自己设定

设定好就可以
finish




生成的目录结构

这个
红叉
不要紧,为工程 添加
tomcat类库
即可
在项目右键




library
这个选项卡 点击
add library
选择
Server runtime




选择你本机安装的tomcat 博主安装的是最新版 8.5
ok



此时的目录结构
红叉已消失




现在需要 maven 来帮助搞定spring-mvc 框架依赖 修改 pom.xml

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>4.3.6.RELEASE</version>

</dependency>


如果你官网狂了半天,找了半天肯定是找不到 因为 spring-mvc 不是独立 project 存在的。官网 spring-framework 工程给出的 maven 依赖包的设置是

........

<artifactId>spring-context</artifactId>

.......


spring-context.jar

  这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。


  

spring-context.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,commons-collections.jar,aopalliance.jar


官方给的这个maven依赖包设置主要是针对 spring framework 基本核心 jar 包。

嗯 所以无所谓 spring-mvc 是不是独产工程 ,spring 整个框架都是模块化的,spring-mvc也是一个独立的模块,maven会自动帮你处理好所需其它它依赖的模块。

接下来需要配置
部署描述符(web.xml)


<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>app02</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/app02-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app02</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>


这里此时主要是配置
org.springframework.web.servlet.DispatcherServlet


servlet调度器,其实就相当动态语言框架单入口一样,根据 url 中的地址去调用并实例化相应的类,spring中的
DispatcherServlet
开箱即用相当方便

<servlet-name>app02</servlet-name>
servlet-name 随便命名

<load-on-startup>1</load-on-startup>
值为
1
确定在加载时

初始化
org.springframework.web.servlet.DispatcherServlet
servlet调度器


当初始时会调用
DispatcherServlet
init方法
然后去默认的目录
/WEB-INF
中查找一个
<servlet-name>
命名的xml文件 这里是
app02-servlet.xml
这个形式的文件名是
约定的 xx-servlet.xml


如果配置了
<init-param>
这个参数
DispatcherServlet
调度器会去
<param-value>
配置的路径中查找。

<servlet-mapping>
这里配置是把url地址路径 映射到
<servlet-name>app02</servlet-name>
只对没有反缀名的url路径
http://xx/xx/xx/xx/
起作用, 如果是有后缀名的url路径
http://xx/xx/xx/xx.css|js|png
等等将不会起作用 其实本就不应该起作用,不然你怎么看
css js png
这些文件。

配置
app02-servlet.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"
xsi:schemaLocation=" 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.xsd">

<context:component-scan base-package="org.example.controller"></context:component-scan>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>


这个配置文件是需要被
DispatcherServlet
读取调用的 并告诉
servlet调度器
如何查找你的
控制器类


beans xmlns
这些属性是必需加的,日后会随着需要
xmlns
也会跟着再多加几条。

<context:component-scan base-package="org.example.controller">
这个配置就是告诉 spring 里哪个包里找你自己编写的控制器类,
mvc嘛
model controller 肯定是分包存储的。

bean id="viewResolver"
这个配置主要是减少编写代码时读取
view
时的工作量 比如 一个view文件是 hello.jsp 在控制器类中 直接
return hello
返回view就可以了。

新建一个控制器类
HelloWorld.java


package org.example.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/hello")
public class HelloWorld {
@RequestMapping(method = RequestMethod.GET)
public String say(){
System.out.println("hello world!!! running");
return "hello";
}
}


这是注解方式。

展示一下完整的项目结构:



运行:

项目右键 Run As->Run on Server 选择你已经配置好的tomcat服务器,在eclipse中就可以看到 服务器启动状况与程序运行情况,
hello world
即刻出现在了你的眼前.



eclipse 自带的浏览器或者你本机浏览器

http://localhost:8080/app02/hello/



注1:tomcat 下载安装完后,eclipse 设置 server->runtime environments 配置添加你已经安装的 tomcat ,把eclipse 与 tomcat 关联起来,编写与调试程序会非常方便 你的代码文件有任何改 eclipse 都会让 tomcat 自动 reload.

终于写完了,这篇文章应该是网络最直白最明了的 spring-mvc 入门文章了吧.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: