在開發Spring mvc的時候
各種配置下來
往往項目跑起來了
但是一天不寫
第二天又忘記怎麼搭建了
所以
應該將搭建的思路寫下來
這樣
開發的時候就會方便許多
就像學武一樣
有武功秘籍和沒有武功秘籍一樣
記住開發流程
思路會變得很清晰
開發起來也就更加快速
Spring mvc的開發流程如下
一配置基礎
>配置目錄結構
比如基於eclipse格式還是Maven格式
>配置web
xml
主要是以下幾個
org
springframework
web
servlet
DispatcherServlet
org
sprntext
ContextLoadListener
org
springframework
web
filter
CharacterEncoding
org
springframework
web
util
Log
jConfigListener
二開發獨立的業務邏輯並在配置文件中進行實例化(當然
也可以直接new)
三添加web請求入口
如
<a href=
>登錄</a>
四添加HandlerMapping
DispatchServlet接收到web請求後
將尋求相應的HandlerMapping進行web請求到具體的Controller實現相應的匹配
五實現對應的Controler並添加到配置文件中
只有實現了Controller
DispatcherServlet並不會直到它的存在
還需要將該控制器在配置文件中進行配置
六添加視圖解析器
DispatchServlet根據Controller中的邏輯視圖命查找相應的視圖實現
默認的是org
springframework
web
servlet
view
InternalResourceViewResolver
七實現相應視圖
接下來
按照上面的描述來建立一個最簡單的Spring mvc項目
一配置目錄結構
>采用的是eclipse目錄
>配置web
xml
<?xml version=
encoding=
UTF
?><web
app xmlns:xsi=
instance
xmlns=
xmlns:web=
app_
_
xsd
xsi:schemaLocation=
app_
_
xsd
id=
WebApp_ID
version=
>
<display
name>spring_mvc_
</display
name>
<!
The front controller of this Spring Web application
responsible for
handling all application requests
>
<servlet>
<servlet
name>dispatcher</servlet
name>
<servlet
class>org
springframework
web
servlet
DispatcherServlet</servlet
class>
<load
on
startup>
</load
on
startup>
</servlet>
<!
Map all requests to the DispatcherServlet for handling
>
<servlet
mapping>
<servlet
name>dispatcher</servlet
name>
<url
pattern>*
do</url
pattern>
</servlet
mapping>
<!
Bootstraps the root web application context before servlet initialization
>
<listener>
<listener
class>org
sprntext
ContextLoaderListener</listener
class>
</listener>
<welcome
file
list>
<welcome
file>index
jsp</welcome
file>
</welcome
file
list>
<!
Reads request input using UTF
encoding
>
<filter>
<filter
name>characterEncodingFilter</filter
name>
<filter
class>org
springframework
web
filter
CharacterEncodingFilter</filter
class>
<init
param>
<param
name>encoding</param
name>
<param
value>UTF
</param
value>
</init
param>
<init
param>
<param
name>forceEncoding</param
name>
<param
value>true</param
value>
</init
param>
</filter>
<filter
mapping>
<filter
name>characterEncodingFilter</filter
name>
<url
pattern>/*</url
pattern>
</filter
mapping></web
app>
由於只使用Springmvc
所以沒有配置ContextLoadListener
二開發獨立的業務邏輯並添加到配置文件中
package com
spring
service;import mons
logging
Log;import mons
logging
LogFactory;public class UserService {
protected static Log log = LogFactory
getLog(UserService
class)
public boolean login(String username
String passworld) {
(username +
\t
+ passworld)
if (username
equals(
admin
) && passworld
equals(
admin
)) {
return true;
}
return false;
}}
因為只是為了演示思路
所以業務邏輯很簡單
並在配置文件中進行配置
<?xml version=
encoding=
UTF
?><beans xmlns=
xmlns:xsi=
instance
xmlns:p=
xmlns:context=
xmlns:mvc=
xsi:schemaLocation=
mvc
xsd
beans
xsd
context
xsd
>
<bean id=
userService
class=
com
spring
service
UserService
></bean></beans>
三添加web請求入口
<%@ page language=
java
contentType=
text/html; charset=UTF
pageEncoding=
UTF
%><!DOCTYPE html PUBLIC
//W
C//DTD HTML
Transitional//EN
><html><head><meta http
equiv=
Content
Type
content=
text/html; charset=UTF
><title>LOGIN</title></head><body>
<form action=
login
do
method=
post
>
用戶名 <input type=
text
name=
username
id=
username
/> <br> 密碼
<input type=
text
name=
password
id=
password
/> <br> <input
type=
submit
value=
提交
/>
</form></body></html>
我的是login
do注意
不是/login
do
四添加HandlerMapping
<!
定義映射
>
<bean id=
handlerMapping
class=
org
springframework
web
servlet
handler
BeanNameUrlHandlerMapping
></bean>
采用的是BeanNameUrlHandlerMapping
這是Springmvc默認的
也可以不配置
要求是
需要保證視圖模板請求路徑與容器中的HandlerBeanName一致
五實現對應的Controller並添加到配置文件中
LoginController
package ntroller;import javax
servlet
http
HttpServletRequest;import javax
servlet
http
HttpServletResponse;import mons
logging
Log;import mons
logging
LogFactory;import org
springframework
web
servlet
ModelAndView;import org
springframework
web
servlet
mvc
AbstractController;import com
spring
service
UserService;public class LoginController extends AbstractController {
protected static Log log = LogFactory
getLog(LoginController
class)
private UserService userService;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this
userService = userService;
}
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request
HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView()
boolean isSuccess = userService
login(request
getParameter(
username
)
request
getParameter(
password
))
System
out
println(isSuccess)
mv
addObject(
login
isSuccess)
if (isSuccess) {
mv
setViewName(
success
)
} else {
mv
setViewName(
failed
)
}
System
out
println(mv
getViewName())
return mv;
}}
配置文件
<!
定義控制器
>
<bean name=
/login
do
class=
ntroller
LoginController
>
<property name=
userService
ref=
userService
></property>
</bean>
注意
我請求路徑是
login
do
所以過根據BeanNameUrlHandlerMapping
所以配置文件中的也是
/login
do
如果請求路徑是
/login
do
將會出現
錯誤
六添加視圖解析器
<!
定義ViewReSover
>
<bean id=
viewResolver
class=
org
springframework
web
servlet
view
InternalResourceViewResolver
>
<property name=
prefix
value=
/WEB
INF/views/
></property>
<property name=
suffix
value=
jsp
></property>
</bean>
七
實現相應視圖
<%@ page language=
java
contentType=
text/html; charset=UTF
pageEncoding=
UTF
%><html><head><meta http
equiv=
Content
Type
content=
text/html; charset=UTF
><title>Insert title here</title></head><body>Hello Spring MVC<br>歡迎${login}登錄成功</body></html>
到此一個簡單的Springmvc項目就搭建成功了
不過要注意的是
這七個步驟並不是一定要按照這個順序
順序可以有變動
但是開發過程中
記住這七個步驟
思路將會更加清晰
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25579.html