02【SpringMVC基礎】使用SpringMVC搭建第一個javaweb項目


本文尤爲枯燥,請同步觀看:【SpringMVC】項目具體請求流程

目錄
1.概念
2.搭建一個簡單的javaweb項目
1).新建一個動態web項目
2).導入springMVC所需要的jar包
3).配置DispatcherServlet
3.5).這裏插入一點內容:
4).配置處理器適配器SimpleControllerHandlerAdapter
5).編寫處理器Handler
6).配置處理器handler(即配置自己新建的處理器的類)
7).配置處理器映射器BeanNameUrlHandlerMapping
8).編寫jsp視圖View
9).配置視圖View解析器
10).運行項目
11).可能會遇到的bug及解決之道


 

1.概念

什麼是MVC?
MVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用於應用程序的分層開發。

2.搭建一個簡單的javaweb項目

1).新建一個動態web項目

(以本項目爲例)整個項目下來,主要有這四個文件:
①編寫處理器文件LoginAction.java
②web配置文件web.xml
③配置處理器、適配器、映射器等配置信息spring-servlet.xml
④視圖View文件helloppp.jsp

2).導入springMVC所需要的jar包


可以右擊src文件夾,構建路徑,在“庫”中添加外部jar引用這些包;
也可以直接複製這些jar包,粘貼在WEB-INF的lib文件夾下

3).配置DispatcherServlet

web.xml文件下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>mvcdemo</display-name>

	<!-- 初始化servlet,用於響應客戶端請求 -->
	<servlet>
		<!-- 命名 -->
		<servlet-name>mvcfy</servlet-name>

		<!-- 配置DispatcherServlet -->
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

		<!-- 初始化servlet某些值 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring-servlet.xml</param-value><!-- 用於指定spring-servlet.xml配置文件路徑 -->
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- servlet映射 -->
	<servlet-mapping>
		<!-- 因爲是映射,所以要映射上面servlet初始化時的name -->
		<servlet-name>mvcfy</servlet-name><!-- 與上面一致 -->
		<url-pattern>*.action</url-pattern><!-- 與路徑有關 -->
	</servlet-mapping>

	<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>

3.5).這裏插入一點內容:

spring-servlet.xml文件(已包含4、6、7、9步驟的配置信息):

<?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:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 	註解驅動配置
    <mvc:annotation-driven/> -->
<!--    配置controller掃描(未)
	<context:component-scan base-package="com.springMVC.*.controller"/> -->
	
    <!-- 配置處理器映射器 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

    <!-- 配置處理器Control適配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
    <!-- 配置處理器 -->
    <bean name="/loginAction.action" class="com.fy.mvcdemo.handler.LoginAction"></bean><!-- 訪問地址 -->
    <!-- 配置視圖View解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 視圖的目錄 -->
        <property name="prefix" value="/view/"></property><!-- value="/"代表根目錄 -->
       <!--  視圖的後綴 -->
    	<property name="suffix" value=".jsp"></property>
    </bean>
</beans>

4).配置處理器適配器SimpleControllerHandlerAdapter

spring-servlet.xml文件下配置:

<!-- 配置處理器Control適配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

5).編寫處理器Handler

處理器LoginAction.java文件:

package com.fy.mvcdemo.handler;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class LoginAction implements Controller {
	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		// TODO 自動生成的方法存根
		ModelAndView mav = new ModelAndView();
		mav.addObject("message","你好,熟知宇某!");//映射到視圖文件的${message}
		mav.setViewName("helloppp");//要視圖helloppp.jsp限定名匹配
		return mav;
	}

}

6).配置處理器handler(即配置自己新建的處理器的類)

spring-servlet.xml文件下配置:

<!-- 配置處理器Handler:LoginAction.java -->
    <bean name="/loginAction.action" class="com.fy.mvcdemo.handler.LoginAction"></bean><!-- 訪問地址 -->

7).配置處理器映射器BeanNameUrlHandlerMapping

spring-servlet.xml文件下配置:

<!-- 配置處理器映射器 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

8).編寫jsp視圖View

視圖文件helloppp.jsp(爲什麼起一個這麼尬的名字,因爲這樣可用於驗證第五步驟的處理器中的setViewName與之是否要一致,答案:是的,要一致)

<%@ 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=UTF-8">
<title>Insert title here</title>
</head>
<body>
	登陸成功:${message}<!-- message被映射到處理器Handler,即LoginAction.java文件 -->
</body>
</html>

9).配置視圖View解析器

spring-servlet.xml文件下配置:

 <!-- 配置視圖View解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 視圖文件helloppp.jsp的目錄 -->
        <property name="prefix" value="/view/"></property><!-- value="/"代表根目錄 -->
       <!--  視圖的後綴 -->
    	<property name="suffix" value=".jsp"></property>
    </bean>

10).運行項目

11).可能會遇到的bug及解決之道


舉個栗子:
xx類無法加載:java.lang.ClassNotFoundException: org.springframework.web. servlet.DispatcherServle
ClassNotFound****DispatcherServle這裏的意思是找不到DispatcherServle
①檢查是否正確引入jar包了;
②在jar包文件下,找是否存在這個類,有可能是jar包版本太低;
③找到是哪個文件調用了這個類,檢查名字是否寫錯了;
這裏的錯,是類的名字沒寫對。你知道哪裏沒寫對嗎?
這個類是在web.xml調用:

<!-- 配置DispatcherServlet -->
		<servlet-class>org.springframework.web.servlet.DispatcherServle</servlet-class>

你看看,就會豁然開朗!

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章