javascript
SpringMVC学习(一)——快速搭建SpringMVC开发环境(非注解方式)
目錄
- 1、開(kāi)發(fā)環(huán)境準(zhǔn)備
- 1.1、首先電腦需要安裝JDK環(huán)境(略)
- 1.2、準(zhǔn)備一個(gè)以供開(kāi)發(fā)的tomcat
- 1.3、準(zhǔn)備Maven工具
- 1.4、準(zhǔn)備IDE編譯器
- 1.5、準(zhǔn)備一個(gè)本地的數(shù)據(jù)庫(kù),
- 2、搭建SpringMVC開(kāi)發(fā)環(huán)境
- 2.1、創(chuàng)建web工程
- 2.2、使用maven引入相關(guān)的依賴
- 2.3、項(xiàng)目的整體結(jié)構(gòu)圖
- 2.4、新增springmvc-servlet的配置文件
- 2.5、web.xml核心配置
- 2.5、第一個(gè)HelloController
- 2.6、配置Tomcat服務(wù)并啟動(dòng)
- 2.7、增加數(shù)據(jù)庫(kù)配置
- 2.8、訪問(wèn)數(shù)據(jù)庫(kù)測(cè)試
- 3、框架搭建過(guò)程注意事項(xiàng)
- 3.1、創(chuàng)建maven項(xiàng)目特別緩慢?
- 3.2、applicationContext.xml和springmvc-servlet.xml區(qū)別?
- 3.3、ApplicationContext和WebApplicationContext的關(guān)系?
1、開(kāi)發(fā)環(huán)境準(zhǔn)備
1.1、首先電腦需要安裝JDK環(huán)境(略)
說(shuō)明:本機(jī)使用的是JDK1.8.0_45,一定要記得配置環(huán)境變量。
1.2、準(zhǔn)備一個(gè)以供開(kāi)發(fā)的tomcat
說(shuō)明:本機(jī)使用的是Tomcat 8.0.35。
1.3、準(zhǔn)備Maven工具
說(shuō)明:因?yàn)楸緳C(jī)使用的是maven構(gòu)建項(xiàng)目,本機(jī)使用的Maven版本為apache-maven-3.1.0。
1.4、準(zhǔn)備IDE編譯器
說(shuō)明:本次開(kāi)發(fā)使用的是IDEA,如果使用Eclipse也不影響開(kāi)發(fā)。
1.5、準(zhǔn)備一個(gè)本地的數(shù)據(jù)庫(kù),
說(shuō)明:本機(jī)使用的是mysql數(shù)據(jù)庫(kù),目的是為了測(cè)試數(shù)據(jù)庫(kù)連接以及訪問(wèn),數(shù)據(jù)庫(kù)版本為mysql 5.1.41。
注意一下,上面是本次開(kāi)發(fā)使用的開(kāi)發(fā)環(huán)境的前期準(zhǔn)備工作,如果是沒(méi)有進(jìn)行過(guò)開(kāi)發(fā)的小白可提前把開(kāi)發(fā)環(huán)境搭建好,搭建開(kāi)發(fā)環(huán)境的案例很多,本次就不再贅述了。
2、搭建SpringMVC開(kāi)發(fā)環(huán)境
2.1、創(chuàng)建web工程
首先使用Maven工具創(chuàng)建一個(gè)webapp工程,選擇 File -> New Module ->Maven,選中“Create from archetype”,選擇如下圖的webapp工程
然后選擇“下一步”填入相應(yīng)的字段知道完成項(xiàng)目創(chuàng)建,如果此處創(chuàng)建過(guò)程非常慢,請(qǐng)參考注意事項(xiàng)3.1。
2.2、使用maven引入相關(guān)的依賴
本例中使用的spirngmvc的版本為4.3.25.RELEASE
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- springmvc核心依賴 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- tomcat中存在此web運(yùn)行的jar包 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency><!-- 使用SpringJDBC進(jìn)行數(shù)據(jù)庫(kù)配置 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- mysql數(shù)據(jù)庫(kù)連接的驅(qū)動(dòng)--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency><!-- Spring-test配合junit使用 --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency>2.3、項(xiàng)目的整體結(jié)構(gòu)圖
本例中的springmvc的整體結(jié)構(gòu)圖如下圖所示:
2.4、新增springmvc-servlet的配置文件
在resources目錄下新增加一個(gè)myspringmvc-servelet.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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 處理器映射器,將處理器Handler的name作為URL進(jìn)行查找 --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean><!-- 處理器適配器,適配處理器中handlerRequest方法的調(diào)用 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean><!-- 配置視圖解析器,把handler方法返回的邏輯視圖解析為實(shí)際的物理視圖 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/></bean> </beans>2.5、web.xml核心配置
增加springmvc的核心配置DispatcherServlet,配置效果如下所示:
<servlet><!-- 配置核心控制 servlet的名字決定了核心配置文件的命名:springmvc-servlet.xml --><servlet-name>myspringmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 指定spring配置文件的位置,如果不配置默認(rèn)/WEB-INF/[servlet-name]-servlet --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:myspringmvc-servlet.xml</param-value></init-param><!-- 項(xiàng)目啟動(dòng)時(shí)加載 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myspringmvc</servlet-name><!-- 配置url-pattern,設(shè)置為"/"表示攔截到所有的URL請(qǐng)求并映射到myspringmvc,包括靜態(tài)資源如html, js, jpg等--><url-pattern>/</url-pattern></servlet-mapping>2.5、第一個(gè)HelloController
編寫(xiě)第一個(gè)SpringMVC的Controller,需要繼承自org.springframework.web.servlet.mvc.Controller
示例代碼如下:
上面的示例中需要在/WEB-INF/views/增加一個(gè)“success”的測(cè)試頁(yè)面,測(cè)試頁(yè)面的代碼如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <h2>你好,跳轉(zhuǎn)到success了!!!</h2> <h3>${data}</h3> </body> </html>編寫(xiě)完HelloController后需要在myspringmvc-servlet.xml中增加這個(gè)controller的配置
<!-- 第一個(gè)springMVC測(cè)試程序 --><bean id="helloController" name="/hello" class="com.leo.controller.HelloController"></bean>好了,第一個(gè)Controller到這里已經(jīng)編寫(xiě)完畢了,現(xiàn)在開(kāi)始啟動(dòng)測(cè)試一下了。
2.6、配置Tomcat服務(wù)并啟動(dòng)
然后配置啟動(dòng)的tomcat的位置和參數(shù),可以參考筆者配置
部署項(xiàng)目的war包并且配置上下文路徑,參考筆者如下圖
啟動(dòng)tomcat
訪問(wèn)地址:http://localhost:8080/springmvc/
2.7、增加數(shù)據(jù)庫(kù)配置
新增加數(shù)據(jù)庫(kù)的配置信息,在pom.xml中增加如下配置(如果已經(jīng)添加的請(qǐng)忽略),本示例中沒(méi)有引入第三方框架,使用的是spring內(nèi)置的jdbc框架
<!-- 使用SpringJDBC進(jìn)行數(shù)據(jù)庫(kù)配置 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- mysql數(shù)據(jù)庫(kù)連接的驅(qū)動(dòng)--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency>在resources目錄下新增applicationContext.xml配置文件,并且添加如下內(nèi)容:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- Spring內(nèi)置連接池 --><bean id="driverManagerDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/springframework_learning"></property><property name="username" value="root"></property><property name="password" value="root"></property></bean><!--指定連接池--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="driverManagerDataSource"></property></bean><!-- 將這個(gè)工具類實(shí)例化給spring容器管理,不然會(huì)報(bào)空指針異常 --><bean id="beanUtil" class="com.leo.util.ApplicationContextUtil"></bean><!-- 測(cè)試的bean --><bean id="userInfoService" class="com.leo.service.impl.UserInfoServiceImpl"></bean> </beans>并且在web.xml中將配置文件applicationContext.xml添加進(jìn)去
<!-- 配置應(yīng)用公共配置 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 定義Spring監(jiān)聽(tīng)器,加載Spring --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>這里要注意一下applicationContext.xml和myspringmvc-servlet.xml都可以注入bean那他們的區(qū)別是什么?答案參考3.2
2.8、訪問(wèn)數(shù)據(jù)庫(kù)測(cè)試
需要新寫(xiě)一個(gè)Controller,代碼參考如下
public class GetUserInfoController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {UserInfoService userInfoService = (UserInfoService) ApplicationContextUtil.getBean("userInfoService");System.out.println("GetUserInfoController獲取用戶信息");ModelAndView modelAndView = new ModelAndView();//訪問(wèn)數(shù)據(jù)庫(kù)List userInfoList = userInfoService.getUserInfoList();System.out.println(userInfoList);modelAndView.addObject("data", userInfoList);modelAndView.setViewName("success");//跳轉(zhuǎn)到/WEB-INF/views/success.jspreturn modelAndView;} }還需要將新的Controller注冊(cè)到myspringmvc-servlet.xml配置文件中
<!-- 獲取用戶信息 --><bean id="getUserInfoController" name="/getUserInfo" class="com.leo.controller.GetUserInfoController"></bean>然后啟動(dòng)tomcat訪問(wèn):http://localhost:8080/springmvc/getUserInfo
具體的代碼地址為:chapter-1-springmvc-quickstart
(https://gitee.com/leo825/spring-framework-learning-example.git)
3、框架搭建過(guò)程注意事項(xiàng)
3.1、創(chuàng)建maven項(xiàng)目特別緩慢?
如果遇到創(chuàng)建maven過(guò)程特別緩慢的情況,需要在Setting添加一些mirror配置。操作如下:
首先找到項(xiàng)目中maven的settings配置文件位置,File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven
其次,在maven的settings配置文件的“mirrors”節(jié)點(diǎn)下添加mirror配置,然后保存,重新創(chuàng)建一下webapp試試。
3.2、applicationContext.xml和springmvc-servlet.xml區(qū)別?
二者區(qū)別如下:
applicationContext.xml這個(gè)一般是采用非spring mvc架構(gòu),用來(lái)加載Application Context。應(yīng)用于多個(gè)servlet,配合listener一起使用。
如果直接采用SpringMVC,只需要把所有相關(guān)配置放到xxx-servlet.xml中就OK了。 如果直接使用SpringMVC是可以不添加applicationContext.xml文件的。 也可以使用applicationContext.xml添加一些公共類的bean和配置。
3.3、ApplicationContext和WebApplicationContext的關(guān)系?
ApplicationContext是Spring容器上下文,WebApplicationContext是Web容器上下文,WebApplicationContext繼承自ApplicationContext,因此只要是ApplicationContext中注冊(cè)的Bean都能在WebApplicationContext中獲取到,反之則不然。
總結(jié)
以上是生活随笔為你收集整理的SpringMVC学习(一)——快速搭建SpringMVC开发环境(非注解方式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SpringMVC学习——对于Sprin
- 下一篇: Spring容器中获取Bean实例的七种