本次的教程是打算用Spring,SpringMVC以及傳統的jdbc技術來制作一個簡單的增刪改查項目,對用戶信息進行增刪改查,就這么簡單。
1.新建項目
首先,打開eclipse,新建一個web項目。項目名稱就叫做student,注意,新建項目的時候,因為是eclipse。所以你需要選擇Dynamic Web Project。
點擊Next。
不管,繼續Next。
Finish完成。
項目的目錄結構如下:
接下來,把我們需要用到的jar包全部拷貝進來。
其中,simple-jdbc是我自己封裝了一些jdbc操作,可以看成是一個小型的jdbc框架,具體如何使用會在以后講到。
這些jar包,有的會用到,有的可能用不到。現在先不管,就把他們全部拷貝進來。
2.集成SpringMVC
SpringMVC在本項目中起到的作用就是一個請求分發器,所有的請求,我們都通過SpringMVC來分發。打開web.xml:
<?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>student</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
welcome-file-list是歡迎頁的配置,我們不管,在前加上如下配置:
<!-- 配置SpringMVC分發器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>namespace</param-name>
<param-value>spring-mvc</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
這和配置普通Servlet的方式是一樣,其中
<init-param>
<param-name>namespace</param-name>
<param-value>spring-mvc</param-value>
</init-param>
這個配置的意思是在創建DispatcherServlet類的時候,就把其中的一個namespace屬性賦值“spring-mvc”。這個名字是我們自己定的,你可以取別的名字,也可以就叫做spring-mvc,它對應的是 WEB-INF 目錄下的 spring-mvc.xml 文件。現在,我們是沒有這個文件的,所以得新建一個。
將一下代碼拷貝進spring-mvc.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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!-- 包掃描器 -->
<context:component-scan base-package="com.app.*"></context:component-scan>
<!-- 開啟注解驅動,寫了以后,Spring的注解機制就開始生效 -->
<mvc:annotation-driven >
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 配置Fastjson支持 -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json</value>
</list>
</property>
<property name="features">
<!--
Fastjson的SerializerFeature序列化屬性:
QuoteFieldNames———-輸出key時是否使用雙引號,默認為true
WriteMapNullValue——–是否輸出值為null的字段,默認為false
WriteNullNumberAsZero—-數值字段如果為null,輸出為0,而非null
WriteNullListAsEmpty—–List字段如果為null,輸出為[],而非null
WriteNullStringAsEmpty—字符類型字段如果為null,輸出為”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果為null,輸出為false,而非null
-->
<list>
<value>QuoteFieldNames</value>
<value>WriteMapNullValue</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 配置SpringMVC的視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" /><!--可為空,方便實現自已的依據擴展名來選擇視圖解釋類的邏輯 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
</beans>
第一個配置,包掃描器:
<context:component-scan base-package="com.app.*"></context:component-scan>
這個是啥意思呢,就是說,Tomcat容器啟動的時候,會去掃描com.app下面所有的包和類,如果是符合要求的類,就new一下,裝進Spring的bean工廠。
我們先把對應的目錄結構建起來:
然后,建一個controller包:
這樣一來,這個controller就是將來會被掃描的對象。現在,我們在里面新建一個ViewController類。
代碼:
package com.app.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ViewController {
@RequestMapping("/test")
public void test(){
System.out.println("test");
}
}
我們給這個類打上@controller標記,到時候Sping框架就會認識他,在Tomcat服務器啟動的時候就new出這個類,放到Spring的bean工廠中。
@RequestMapping的含義是請求路徑。
關於這兩個標記,我在 這篇文章 中已經做了詳細的說明,在此就不再贅述。接着,我們可以去發布我們的項目了。
如果你還不會用eclipse和tomcat發布web項目,就看一下 Tomcat的安裝配置與JavaWeb入門教程 。我在這里就不詳細說了。
啟動tomcat,打開瀏覽器,在地址欄輸入:
http://localhost/student/test.do
回車,可以看到在控制台打印出了test字樣:
這就說明,流程已經走通了。注意,因為我本地tomcat配置的端口號是80,所以直接寫localhost,不需要寫localhost:80了。還有,為什么后面跟test.do?那是因為我們在配置Spring分發器的時候就規定了,只攔截所有 *.do 的請求。
<!-- 配置SpringMVC分發器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>namespace</param-name>
<param-value>spring-mvc</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
本章就到這里,先撤了。