轉自https://my.oschina.net/gaussik/blog/385697





文章2: http://blog.csdn.net/cleverlzc/article/details/50864582
<properties> <spring.version>4.2.6.RELEASE</spring.version> <hibernate.version>5.1.0.Final</hibernate.version> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.10.1.RELEASE</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-c3p0</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency>
之所以用別人的,主要是擔心版本不兼容的問題。
<build> <finalName>springmvcdemo</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>

<web-app> <display-name>Archetype Created Web Application</display-name> <filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
該servlet名為mvc-dispatcher(名稱可修改),用於攔截請求(url-pattern為 / ,說明攔截所有請求),並交由Spring MVC的后台控制器來處理。這一項配置是必須的。
為了能夠處理中文的post請求,再配置一個encodingFilter,以避免post請求中文出現亂碼情況。
error:The content of element type "web-app" must match
錯誤:The content of element type "web-app" must match "(icon ,display-
name ,description ,distributable ,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-
mapping*,session-config ,mime-mapping*,welcome-file-list ,error-page*,taglib*,resource-env-
ref*,resource-ref*,security-constraint*,login-config ,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
- No grammar constraints (DTD or XML schema) detected for the document.
原因:文檔內容標簽順序不符合web-app_2_3.dtd規范(我把filter放在servlet后面了)
解決方案:嚴格按照提示上的順序排列
6. MVC框架有model、view、controller三部分組成。model一般為一些基本的Java Bean,view用於進行相應的頁面顯示,controller用於處理網站的請求。
在src\main\java中新建一個用於保存controller的package(com.euphe.controller),在里面創建一個java文件(MainController)
@Controller public class MainController { @RequestMapping(value = "/",method = RequestMethod.GET) public String index(){ return "index"; } }
(1)@Controller注解:采用注解的方式,可以明確地定義該類為處理請求的Controller類;
(2)@RequestMapping()注解:用於定義一個請求映射,value為請求的url,值為 / 說明,該請求首頁請求,method用以指定該請求類型,一般為get和post;
(3)return "index":處理完該請求后返回的頁面,此請求返回 index.jsp頁面。
回到mvc-dispatcher-servlet.xml,進行相關配置。
首先加入component-scan標簽,指明controller所在的包,並掃描其中的注解(最好不要復制,輸入時按IDEA會在beans xmlns中添加相關內容)
<!--指明 controller 所在包,並掃描其中的注解--> <context:component-scan base-package="com.gaussic.controller"/> <!-- 靜態資源(js、image等)的訪問 --> <mvc:default-servlet-handler/> <!-- 開啟注解 --> <mvc:annotation-driven/> <!--ViewResolver 視圖解析器--> <!--用於支持Servlet、JSP視圖解析--> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean>
我們刪除 webapp 目錄下的 index.jsp 文件,在WEB-INF目錄下新建文件夾pages,再在pages目錄下新建 index.jsp,並修改為如下所示:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- 上述3個meta標簽*必須*放在最前面,任何其他內容都*必須*跟隨其后! --> <title>SpringMVC Demo 首頁</title> <!-- 新 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"> <!--[if lt IE 9]> <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <h1>這里是SpringMVC Demo首頁</h1> <h3>出現此頁面,說明配置成功。</h3> <!-- jQuery文件。務必在bootstrap.min.js 之前引入 --> <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script> <!-- 最新的 Bootstrap 核心 JavaScript 文件 --> <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> </body> </html>
這里使用了Bootstrap的CDN加速服務,如果要使用本地的Bootstrap,請前往Bootstrap官網下載,並放在 webapp 目錄下,然后引入到 index.jsp 中。
7.配置 Tomcat





