简单搭建SpringMVC框架详解

时间:2023-03-09 20:15:09
简单搭建SpringMVC框架详解

  在公司待了两年,用的一直是Spring+SpringMVC+Hibernate框架,都是公司自己搭建好的,自己从来没有主动搭建过,闲来无聊,自己搭建试试。一下即我搭建的过程以及搭建所遇到的问题,有部分是来自网上搜索的,会有标注。不过这不是重点,重点是自己查询排错之后会让自己印象更深。

  第一步:配置环境变量,有些过于基础就简单说说。下载JDK,点击安装即可。右键计算机,找到属性,然后高级系统设置,设置环境变量,添加JAVA_HOME,JAVA_HOME后边变量为jdk的安装目录。创建或者修改已有的CLASS_PATH,在后边添加   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 这段话即可(切记最前边有个"."),然后打开cmd命令窗口,输入java -version,下面会出现如下三行字,代表配置环境变量成功。

java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

  第二步:下载eclipse,按照安装步骤下一步、下一步、下一步直到完成即可。

  第三步:下载tomcat,有的只需要解压即可,配置到eclipse中即可。 该链接有详解 :  https://jingyan.baidu.com/article/ca2d939dd90183eb6d31ce79.html

  第四步:下载安装mysql。链接有详解: https://jingyan.baidu.com/article/d7130635f1c77d13fdf475df.html

  第五步:下载SpringMVC的jar包。

  第六步:打开eclipse,创建一个web项目。创建项目时,如果直接点击的finish,可能不会直接创建web.xml文件,就需要手工在WebContent创建web.xml文件如下图一,创建web.xml文件的时候请顺便再创建一个lib文件夹,跟它同级即可,里面放上第五步准备的jar包(忘了这一步了,写到第十一步才想起来),加上之后记得鼠标放在项目名上点击右键Bild Path一下,然后再把jar包加进去如下图二。

如下图一:

简单搭建SpringMVC框架详解

 

下图为图二

简单搭建SpringMVC框架详解

 第七步:在Java Resources 下的src下创建一个springMVC.xml文件,文件名可以自己随意命名(网上有教程是直接跟web.xml同级,但是我亲生试验后出错了,后来百度之后才放在目前这个目录下),如果感觉有点乱可以加一个config文件夹,如下图:

简单搭建SpringMVC框架详解

  第八步:如果你的web.xml文件是在你创建web项目时,点击两次next,然后勾选上如下图一的选项时,那么恭喜你,你不在需要手动添加一个web.xml文件了。因为这个选项时自动生成web.xml文件。下图二为自动生成的web.xml文件时,里面自己生成的代码。

以下为图一

简单搭建SpringMVC框架详解

以下为图二

简单搭建SpringMVC框架详解

  第九步:如果没有web.xml文件也没事,别担心自己手动创建一个咯。现在主要是把首地址配置好即可,也就是上图二中的<welcome-file-list>这个标签,并将首地址自己命名,举例说明首地址为index.jsp。接着就需要在WebContent(建在这个目录下!建在这个目录下!!建在这个目录下!!!重要的事情说三遍切记一定要建在这个目录下,不然首地址你都进不去的,这个是我出现的问题,千万别犯这种低级问题)下创建index.jsp文件,如下图:

简单搭建SpringMVC框架详解

  此时,你就可以在index.jsp文件里肆意妄为了,想写什么写什么了,我的index.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=ISO-8859-1">
<title></title>
</head>
<body>
<!-- 这个a标签可有可无 -->
<a href="hello.html" ><h1>兔兔是个大懒兔</h1></a>
</body>
</html>

  

写完了之后就可以在浏览器上输入htttp://localhost:8080/MyFirstObject,就可以直接访问到你在index.jsp文件肆意妄为的痕迹了。不过不要太高兴啊,这只是初步的准备,没有什么技术含量的!接下来就是重点了,后退几步,准备好接大招了啊。

  第十步:在web.xml文件中就要开始配置了,首先设置这个<context-param>标签,这个标签的作用解读如下8点:

1.启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: 和

2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.

3.容器将转化为键值对,并交给ServletContext.

4.容器创建中的类实例,即创建监听.

5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得
ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的键");

6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.
换句话说,这个时候,你对中的键值做的操作,将在你的WEB项目完全启动之前被执行.

7.举例.你可能想在项目启动之前就打开数据库.
那么这里就可以在中设置数据库的连接方式,在监听类中初始化数据库的连接.

8.这个监听是自己写的一个类,除了初始化方法,它还有销毁方法.用于关闭应用前释放资源.比如说数据库连接的关闭.

  个人认为,你可能看完了还是不太懂,但是看到了第7条也就是标红处,应该大致了解一点了。那么就需要你进行配置了,因为你要在项目配置之前就加载SpringMVC相关的配置文件,也就是你在第七步中创建的springMVC.xml文件,那么直接配置上即可,如以下代码,代码中有注释。监听器以及编码格式可以自动忽略的。请记住一定要先加载SpringMVC的jar包你才能找到对应的核心控制器,也就是DispatcherServlet。

<?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>MyFirstObject</display-name> <!-- 这里很重要 如果不设置<param-value>的值可能会默认找到/WEB-INF/applicationContext.xml]这里 就会报错 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring-servlet.xml</param-value>
</context-param> <servlet>
<servlet-name>spring</servlet-name> <!-- DispatcherServlet为SpringMVC核心控制器 位于spring-webmvc-xxx.RELEASE.jar目录下的第一个包的第二个文件 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring-servlet.xml</param-value>
</init-param>
<!-- load-on-starup 表示启动容器时就初始化servlet -->
<load-on-startup></load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>spring</servlet-name>
<!-- url-pattern 表示哪些url请求交给springMVC进行处理 “/”默认是servlet映射的 -->
<url-pattern>/</url-pattern>
</servlet-mapping> <welcome-file-list>
<!-- 制定首页面,当输入地址后进入的第一个页面 -->
<welcome-file>/index.jsp</welcome-file> </welcome-file-list> <!-- 设置编码格式 -->
<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-</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter> <!-- 配置监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
</web-app>

  第十一步:好了,宝贝儿,web.xml文件已经可以告一段落了,现在咱们要开始鼓捣鼓捣springMVC.xml文件了。首先开启注解模式启动!开启注解模式驱动!!开启模式注解驱动!!!就是<mvc:annotation-driven></mvc:annotation-driven>这个标签。然后就是<context:component-scan base-package="controller"></context:component-scan>这个标签,这两个标签可以颠倒顺序的啊!废话不多说,代码中都有详细注解,大家直接看代码吧!

<?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"> <!-- 开启注解模式驱动 必须开启注解模式驱动 不然无法扫描-->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 扫描的基本包路径 包的路径一定要检查清楚,很容易弄错的,实在不行有个验证方法,就是将具体的类名(去掉后边的.java)放在后边,
通过按住Ctrl键,鼠标右键点击验证看是否能够跳过去 -->

<context:component-scan base-package="controller"></context:component-scan> <mvc:default-servlet-handler/>
<!-- 用于支持Servlet、JSP视图解析 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" > <!-- viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包; -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" ></property> <!-- prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),-->
<property name="prefix" value="/WEB-INF/jsp/" ></property>
<property name="suffix" value=".jsp" ></property>
</bean>
</beans>

  第十二步:就是在controller包下创建你的class类了,并且在类中表明@Controller标签以及@RequestMapping标签,如以下代码:

package controller;

import javax.servlet.http.HttpServletResponse;
//请注意,请注意,请注意,这些包不要引错哟!!!尤其是下面第二个,RepuestMapping有两个的,请注意了!!!
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
public class HelloSpringMVController { @RequestMapping("/hello")
public ModelAndView helloSpring(HttpServletResponse response){ //为了防止传输到页面全是问号,需要设置一下编码格式
response.setContentType("application/json;charset=UTF-8");
String msg = "兔兔,你太懒了!!!"; ModelAndView mav = new ModelAndView();
mav.addObject("message", msg); //返回到的页面
mav.setViewName("hello");
return mav; } }

  好了,接下来你就可以开始装逼了,直接在浏览器上打上http://localhost:8080/项目名,就可以了,然后就会弹出首页面,

如下图一:

简单搭建SpringMVC框架详解

  然后再点击这个链接就可以进入你想要进入的页面了,也就是hello.jsp页面,前边忘了说了,在WEB-INF目录下需要创建一个jsp文件夹,放置你的页面,也就是所谓的hello.jsp页面,如下图和代码

<%@ page language="java" contentType="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>你是最棒的!!!</title>
</head>
<body>
<b>这是我自己搭建的框架,试试行不行</b>
<!--${message}为el表达式,可以拿到后台controller中传输过来的数据 -->
<b><h1>后台返回的数据 ${message}</h1> </b>
</body>
</html>

  简单搭建SpringMVC框架详解

  或者说直接在浏览器输入http://localhost:8080/MyFirstObject/hello 也可以跳转到最终页面的。

如下图:

简单搭建SpringMVC框架详解

好了恭喜你总算完成了这个搭建过程,自己可以连接数据库的,不过哥们得后续再自己进行尝试了,去做饭了!!!