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