在开发Spring mvc的时候
各种配置下来
往往项目跑起来了
但是一天不写
第二天又忘记怎么搭建了
所以
应该将搭建的思路写下来
这样
开发的时候就会方便许多
就像学武一样
有武功秘籍和没有武功秘籍一样
记住开发流程
思路会变得很清晰
开发起来也就更加快速
Spring mvc的开发流程如下
一配置基础
>配置目录结构比如基于eclipse格式还是Maven格式
>配置webxml主要是以下几个
orgspringframeworkwebservletDispatcherServlet
orgsprntextContextLoadListener
orgspringframeworkwebfilterCharacterEncoding
orgspringframeworkwebutilLogjConfigListener
二开发独立的业务逻辑并在配置文件中进行实例化(当然也可以直接new)
三添加web请求入口
如<a href= >登录</a>
四添加HandlerMapping
DispatchServlet接收到web请求后将寻求相应的HandlerMapping进行web请求到具体的Controller实现相应的匹配
五实现对应的Controler并添加到配置文件中
只有实现了ControllerDispatcherServlet并不会直到它的存在还需要将该控制器在配置文件中进行配置
六添加视图解析器
DispatchServlet根据Controller中的逻辑视图命查找相应的视图实现默认的是orgspringframeworkwebservletviewInternalResourceViewResolver
七实现相应视图
接下来按照上面的描述来建立一个最简单的Spring mvc项目
一配置目录结构
>采用的是eclipse目录
>配置webxml
<?xml version= encoding=UTF?><webapp xmlns:xsi=instance
xmlns= xmlns:web=app__xsd
xsi:schemaLocation= app__xsd
id=WebApp_ID version=>
<displayname>spring_mvc_</displayname>
<! The front controller of this Spring Web application responsible for
handling all application requests >
<servlet>
<servletname>dispatcher</servletname>
<servletclass>orgspringframeworkwebservletDispatcherServlet</servletclass>
<loadonstartup></loadonstartup>
</servlet>
<! Map all requests to the DispatcherServlet for handling >
<servletmapping>
<servletname>dispatcher</servletname>
<urlpattern>*do</urlpattern>
</servletmapping>
<! Bootstraps the root web application context before servlet initialization >
<listener>
<listenerclass>orgsprntextContextLoaderListener</listenerclass>
</listener>
<welcomefilelist>
<welcomefile>indexjsp</welcomefile>
</welcomefilelist>
<! Reads request input using UTF encoding >
<filter>
<filtername>characterEncodingFilter</filtername>
<filterclass>orgspringframeworkwebfilterCharacterEncodingFilter</filterclass>
<initparam>
<paramname>encoding</paramname>
<paramvalue>UTF</paramvalue>
</initparam>
<initparam>
<paramname>forceEncoding</paramname>
<paramvalue>true</paramvalue>
</initparam>
</filter>
<filtermapping>
<filtername>characterEncodingFilter</filtername>
<urlpattern>/*</urlpattern>
</filtermapping></webapp>
由于只使用Springmvc所以没有配置ContextLoadListener
二开发独立的业务逻辑并添加到配置文件中
package comspringservice;import monsloggingLog;import monsloggingLogFactory;public class UserService {
protected static Log log = LogFactorygetLog(UserServiceclass)
public boolean login(String username String passworld) {
(username + \t + passworld)
if (usernameequals(admin) && passworldequals(admin)) {
return true;
}
return false;
}}
因为只是为了演示思路所以业务逻辑很简单并在配置文件中进行配置
<?xml version= encoding=UTF?><beans xmlns=
xmlns:xsi=instance xmlns:p=
xmlns:context=
xmlns:mvc=
xsi:schemaLocation= mvcxsd
beansxsd
contextxsd>
<bean id=userService class=comspringserviceUserService></bean></beans>
三添加web请求入口
<%@ page language=java contentType=text/html; charset=UTF
pageEncoding=UTF%><!DOCTYPE html PUBLIC //WC//DTD HTML Transitional//EN ><html><head><meta httpequiv=ContentType content=text/html; charset=UTF><title>LOGIN</title></head><body>
<form action=logindo 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>
我的是logindo注意不是/logindo
四添加HandlerMapping
<! 定义映射 >
<bean id=handlerMapping
class=orgspringframeworkwebservlethandlerBeanNameUrlHandlerMapping></bean>
采用的是BeanNameUrlHandlerMapping这是Springmvc默认的也可以不配置要求是需要保证视图模板请求路径与容器中的HandlerBeanName一致
五实现对应的Controller并添加到配置文件中
LoginController
package ntroller;import javaxservlethttpHttpServletRequest;import javaxservlethttpHttpServletResponse;import monsloggingLog;import monsloggingLogFactory;import orgspringframeworkwebservletModelAndView;import orgspringframeworkwebservletmvcAbstractController;import comspringserviceUserService;public class LoginController extends AbstractController {
protected static Log log = LogFactorygetLog(LoginControllerclass)
private UserService userService;
public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
thisuserService = userService;
}
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request
HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView()
boolean isSuccess = userServicelogin(requestgetParameter(username)
requestgetParameter(password))
Systemoutprintln(isSuccess)
mvaddObject(login isSuccess)
if (isSuccess) {
mvsetViewName(success)
} else {
mvsetViewName(failed)
}
Systemoutprintln(mvgetViewName())
return mv;
}}
配置文件
<! 定义控制器 >
<bean name=/logindo class=ntrollerLoginController>
<property name=userService ref=userService></property>
</bean>
注意我请求路径是logindo所以过根据BeanNameUrlHandlerMapping所以配置文件中的也是/logindo如果请求路径是/logindo将会出现错误
六添加视图解析器
<! 定义ViewReSover >
<bean id=viewResolver
class=orgspringframeworkwebservletviewInternalResourceViewResolver>
<property name=prefix value=/WEBINF/views/></property>
<property name=suffix value=jsp></property>
</bean>
七实现相应视图
<%@ page language=java contentType=text/html; charset=UTF
pageEncoding=UTF%><html><head><meta httpequiv=ContentType content=text/html; charset=UTF><title>Insert title here</title></head><body>Hello Spring MVC<br>欢迎${login}登录成功</body></html>
到此一个简单的Springmvc项目就搭建成功了不过要注意的是这七个步骤并不是一定要按照这个顺序顺序可以有变动但是开发过程中记住这七个步骤思路将会更加清晰