转载自:https://www.cnblogs.com/eczhou/p/6287852.html
原作者的这一篇博文(总共分成了三小篇)非常好,过程清晰的很,非常推荐大家去看一下!!!
1、Java JDK及Tomcat安装
我这里安装的是JDK 1.8 及 Tomcat 8,安装步骤详见:http://www.cnblogs.com/eczhou/p/6285248.html
2、下载Eclipse并安装
我这里安装的是Java EE neon 64位版本。
3、建立Spring MVC项目
3.1、打开安装好的eclipse ,选择File->new->other。在弹出的框内选择Web->Dynamic Web Project , 选择Next。
3.2、给项目起个名字,我们起个SpringDemo:
3.3、点击Finish之后项目就建立完成,见下图。
4、导入Spring MVC安装包
好了,上面我们已经建立完成一个动态网站项目,但这些和Spring MVC还没什么关系,所以我们现在要把Spring MVC相关的jar包导入到项目里。Spring MVC 已经经历过好几个版本,从最初的2.*到现在的4.*版本,我们肯定是用新版本啦。Spring 的官网地址打开速度很慢,http://projects.spring.io/spring-framework/ ,可以说基本打不开更别提下载了。还好我找到国内下载服务站点,免费提供给大家。
下载地址:http://repo.springsource.org/libs-release-local/org/springframework/spring/
各个主流版本都有。
我们选择4.3.5.RELEASE,但是发现竟然下载不了,于是依据下图中的红色部分名称去CSDN下载了一个。
解压缩下载的压缩包,其中libs里面就是Spring MVC 的jar包。
把这些包都负责到项目的/WebContent/WEB-INF/lib 目录里。Spring MVC项目运行时会自动加载里面的jar包。
如果想要正常运行项目,仅仅有Spring MVC 的jar包还是不够的,还需要servlet和 commons-loging 包 ,下载并存放到/WebContent/WEB-INF/lib 目录里。
1、servlet包可以从tomcat安装目录下拷贝servlet-api.jar,如下图所示:(不推荐)
(推荐)不过这样做,将项目部署到tomcat时有时会产生jar包冲突,建议在eclipse中针对项目配置server,具体方法为:Project -> Properties -> Java Build Path -> Add Library -> Server Runtime -> next -> 选择你的Server -> Finish
2、commons-loging包可以从http://commons.apache.org/proper/commons-logging/download_logging.cgi下载,我下载版本的如下所示:
将里面的commons-logging-1.2.jar和commons-logging-1.2-javadoc.jar拷贝到项目工程的/WebContent/WEB-INF/lib 目录里
1、站点配置文件web.xml
每一个Spring MVC 项目都必须有一个站点配置文件web.xml,他的主要功能吗....有一位大哥已经整理的很好,我借来了,大家看看:
引用博客地址: http://www.cnblogs.com/yqskj/articles/2233061.html
1、指定欢迎页面,例如:
<welcome-file-list>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index1.jsp</welcome-file>
</welcome-file-list>
PS:指定了2个欢迎页面,显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推。
关于欢迎页面:
访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在web.xml中指定欢迎页。但 web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。只不过网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件。
2、命名与定制URL。我们可以为Servlet和JSP文件命名并定制URL,其中定制URL是依赖命名的,命名必须在定制URL前。下面拿serlet来举例:
(1)、为Servlet命名:
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>org.whatisjava.TestServlet</servlet-class>
</servlet>
(2)、为Servlet定制URL、
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3、定制初始化参数:可以定制servlet、JSP、Context的初始化参数,然后可以再servlet、JSP、Context中获取这些参数值。
下面用servlet来举例:
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>org.whatisjava.TestServlet</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>Daniel</param-value>
</init-param>
<init-param>
<param-name>E-mail</param-name>
<param-value>125485762@qq.com</param-value>
</init-param>
</servlet>
经过上面的配置,在servlet中能够调用getServletConfig().getInitParameter("param1")获得参数名对应的值。
4、指定错误处理页面,可以通过“异常类型”或“错误码”来指定错误处理页面。
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
-----------------------------
<error-page>
<exception-type>java.lang.Exception<exception-type>
<location>/exception.jsp<location>
</error-page>
5、设置过滤器:比如设置一个编码过滤器,过滤所有资源
<filter>
<filter-name>XXXCharaSetFilter</filter-name>
<filter-class>net.test.CharSetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XXXCharaSetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6、设置监听器:
<listener>
<listener-class>net.test.XXXLisenet</listener-class>
</listener>
7、设置会话(Session)过期时间,其中时间以分钟为单位,假如设置60分钟超时:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
下面我们在/WebContent/WEB-INF/
下新建web.xml
文件,具体内容如下,里面有一些最基本的配置,里面的配置都有注释:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<description>
Spring MVC DEOM
</description>
<display-name>springMVC</display-name>
<!--
CharacterEncodingFilter类具有encoding和forceEncoding两个属性,其中encoding是表示设置request的编码,forceEncoding表示是否同时设置response的编码。
<filter>下的<filter-name>内的值和<filter-mapping>下的<filter-name>内的值要完全一致
-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<!-- /下的所有请求都为UTF-8编码 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
Spring MVC相关设置
<servlet>下的<servlet-name>内的值和<servlet-mapping>下的<servlet-name>内的值要完全一致
-->
<servlet>
<servlet-name>SpringMVC-DEOM</servlet-name>
<!-- DispatcherServlet主要负责流程的控制 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- Spring MVC配置文件路径 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springMVC-servlet.xml</param-value>
</init-param>
<!-- 表示启动容器时初始化该Servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC-DEOM</servlet-name>
<!-- 表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
有的初学者可能会说,看了注释好像还是不能完全明白其中的意思,我要说的是,先不要急于完全了解每个配置的含义,等到做的项目多了了解Spring MVC整个运行机制自然会慢慢明白,不可因为看不明白而不去学了,放弃了,要允许暂时存在一些疑问。
2、Spring MVC配置文件
大家肯定都注意到web.xml文件里有个配置为 “/WEB-INF/springMVC-servlet.xml” 这个文件是Spring MVC的配置文件,Spring官方文档上推荐的默认的文件名是[servlet-name]-servlet.xml
文件,这里 servlet-name 叫 springMVC,因此,我新建了一个springMVC-servlet.xml
。
我们现在在/WEB-INF/下建立一个/springMVC-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: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-4.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
<bean id = "helloworld" class="com.game.controller.Helloworld">
</bean>
</beans>
这个文件内容不多,里面真正有意义的内容为
<bean id = "helloworld" class="com.game.controller.Helloworld">
</bean>
这是啥意思呢? 这个东西叫做bean, Spring 中的bean是什么鬼? 简单来说在Spring启动之前bean就是一个普通java类,但不是说所有的java类都是bean ,如果一个普通类想要成为bean必须要在配置文件里配置,就是说每一个bean都要对应一个java类文件,就是上面你看到的。每一个Bean对应通常需要指定两个属性。
id:确定该Bean的唯一标识符,容器对Bean管理、访问、以及该Bean的依赖关系,都通过该属性完成。Bean的id属性在Spring 配置文件中是唯一的。
class:指定该Bean的具体实现类。注意这里不能使接口。通常情况下,Spring会直接使用new关键字创建该Bean的实例,因此,这里必须提供Bean实现类的类名。
当Spring 启动之后会把配置文件(<bean>)里的这些java类,new 一个对象,存在Spring 里(有的地方称为 Spring 容器),有可能会有很多对象在Spring 里面(多个bean),当我们写代码的时候就可以直接去用这些对象,而不用再去创建对象了。注意:只有在配置文件里声明过的类才会被创建对象,其他的类不会被创建为bean。
那么bean是什么呢? bean就是存在于Spring 容器中的对象。如果把Spring 比作一辆汽车,bean就是汽车里的各个模块零件,比如:发动机,变速箱,电路系统等,当汽车启动时候就已经将他们激活,就可以直接使用这些模块,而不用再去单独启动这些模块。
在Spring 的配置文件里,我们定义了一个bean ,Spring 会在启动时候会生成对象。
<bean id = "helloworld" class="com.game.controller.Helloworld">
</bean>
现在我们来看看这个文件
首先在Java Resource -> src上 右键点击-> new ->package 建立com.game.controller 建立一个包,之后在这个包上右键点击new->class ,类名为Helloworld,之后点击Finish.之后项目结构是这样:
下面我看看看Helloworld.java里面的内容:
package com.game.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Helloworld {
@RequestMapping("/helloworld") //此处控制浏览器里访问路径 具体为:/SpringDemo/helloworld
public void helloWorld(HttpServletRequest request, HttpServletResponse response) throws IOException {
//输出字符串
response.getWriter().append("hello world");
}
}
helloworld内容很简单通过servlet输出对象输出字符串“hello world”。下面我们启动服务器并且在浏览器里运行看看结果。
首先配置服务器(事先必须安装好tomcat),在Helloworld.java右键选择 Run Server,选中我们配置好的tomcat 8.5
启动服务器:
启动成功之后,打开浏览器输入http://localhost:8080/SpringDemo/helloworld :