spring至关重要的一环就是装配,即配置文件的编写,接下来我按刚才实际过程中一步步简单讲解。
首先,要在web.xml中配置DispatcherServlet,它是作为Spring MVC的前端控制器.必须在web.xml中配置好,如下
1<servlet> 2
<servlet-name>ntx</servlet-name> 3
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 4
<load-on-startup>1</load-on-startup> 5
</servlet> 6
实际上,spring的配置文件可以分切到多个xml文件,我们这个简单的示例就把它配置到ntx.xml中
1<?xml version="1.0" encoding="UTF-8"?> 2
<!DOCTYPE beans PUBLIC 3
"-//SPRING//DTD BEAN//EN" 4
"http://www.springframework.org/dtd/spring-beans.dtd"> 5
6
<beans 7
default-autowire="no" 8
default-lazy-init="false" 9
default-dependency-check="none" 10
> 11
12
<bean id="loginService" class="ntx.service.serviceimpl.LoginServiceImpl"/> 13
14
<bean id="loginController" class="ntx.controller.LoginController"> 15
<property name="loginService"> 16
<ref bean="loginService"/> 17
</property> 18
<property name="gotoUrl"> 19
<value>/showResult.jsp</value> 20
</property> 21
</bean> 22
23
<bean id="SimpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 24
<property name="mappings"> 25
<props> 26
<prop key="/userLogin.do">loginController</prop> 27
</props> 28
</property> 29
</bean> 30
</beans> 31
配置好上面的这些后,要在WEB-INF下要建立ntx-servlet.xml如下:
接下来,要指明哪些请求将交给spring的DispatcherServlet来处理,所以在web.xml中添加<servlet-mapping>1<?xml version="1.0" encoding="UTF-8"?> 2
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 3
<beans> 4
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 5
<property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> 6
<property name="prefix"><value></value></property> 7
<property name="suffix"><value></value></property> 8
</bean> 9
</beans> 10
11
1<servlet-mapping> 2
<servlet-name>ntx</servlet-name> 3
<url-pattern>*.do</url-pattern> 4
</servlet-mapping>
为了能正确载入DispatcherServlet等配置文件,我们要在web.xml中配置一个上下文载入器ContextLoaderListener或者ContextLoaderServlet,我们这里为了兼容版本较低的Serlvet容器(实际上我采用的2.4),采用第二种:
这样就全部配置完毕了,当然,上面的ntx.xml是我在项目完成以后才配置完成的,这里不再多讲,有bean元素的配置大家可以参考有关资料理解,很容易理解的,下面再给出完整的web.xml配置以及java<?xml version="1.0" encoding="UTF-8"?>1<servlet> 2
<servlet-name>context</servlet-name> 3
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> 4
<load-on-startup>100</load-on-startup> 5
</servlet> 6
7
1<web-app version="2.4" 2
xmlns="http://java.sun.com/xml/ns/j2ee" 3
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 5
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 6
7
<context-param> 8
<param-name>contextConfigLocation</param-name> 9
<param-value>/WEB-INF/ntx.xml</param-value> 10
</context-param> 11
<servlet> 12
<servlet-name>ntx</servlet-name> 13
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 14
<load-on-startup>1</load-on-startup> 15
</servlet> 16
<servlet> 17
<servlet-name>context</servlet-name> 18
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> 19
<load-on-startup>100</load-on-startup> 20
</servlet> 21
<servlet-mapping> 22
<servlet-name>ntx</servlet-name> 23
<url-pattern>*.do</url-pattern> 24
</servlet-mapping> 25
<welcome-file-list> 26
<welcome-file>index.jsp</welcome-file> 27
</welcome-file-list> 28
</web-app> 29
根据ntx.xml知道,总共有三个java文件,LoginController.java是控制器,继承了最简单的Controller(实际上spring有很多控制器供我们选择),接下来是一个简单控制器的源码:
1/**//** *//**//** 2
* program NtxSpring 3
* date 2006-9-27 4
* @author 张逸轩 5
*/ 6
package ntx.controller; 7
8
import javax.servlet.http.HttpServletRequest; 9
import javax.servlet.http.HttpServletResponse; 10
11
import org.springframework.web.servlet.ModelAndView; 12
import org.springframework.web.servlet.mvc.Controller; 13
14
import ntx.service.LoginService; 15
16
/**//** *//**//**@spring.bean id="loginController" 17
* @spring.property name="gotoUrl" value="/showResult.jsp" 18
* @spring.property name="loginService" ref="loginService" 19
*/ 20
21
/**//** *//**//** 22
* 作用描述:spring示例 23
* 24
* 说明:spring示例,以上的spring标签方便使用xdoclet生成spring配置文件 25
* 26
* @author 张逸轩 27
* Copyright(c)2006 cleverfox 28
*/ 29
public class LoginController implements Controller......{ 30
31
private LoginService loginService ; 32
private String gotoUrl; 33
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception ......{ 34
String userName = request.getParameter("userName"); 35
this.getUserInfo(request, userName); 36
return new ModelAndView(this.getGotoUrl()); 37
} 38
39
private void getUserInfo(HttpServletRequest request,String userName)......{ 40
String userInfo = loginService.getUserInfo(userName); 41
request.setAttribute("userInfo", userInfo); 42
} 43
44
public String getGotoUrl() ......{ 45
return gotoUrl; 46
} 47
public void setGotoUrl(String gotoUrl) ......{ 48
this.gotoUrl = gotoUrl; 49
} 50
public LoginService getLoginService() ......{ 51
return loginService; 52
} 53
public void setLoginService(LoginService loginService) ......{ 54
this.loginService = loginService; 55
} 56
57
} 58
还有service层的接口以及实现,较简单。
好了,最后是两个jsp文件,一个index.jsp用来显示一个表单,输入名字,一个showResult.jsp用来显示结果,只贴出相关的代码:1package ntx.service; 2
public interface LoginService ......{ 3
public String getUserInfo(String userName); 4
}package ntx.service.serviceimpl; 5
6
import ntx.service.LoginService; 7
8
public class LoginServiceImpl implements LoginService ......{ 9
public String getUserInfo(String userName)......{ 10
return "你的名字是:" + userName; 11
} 12
} 13
14
1<body> 2
This is my Test Spring page. <br> 3
<div> 4
<form method="post" action="/userLogin.do"> 5
<input type="text" name="userName" size="30"/><br/> 6
<input type="submit" value="提交"/> 7
</form> 8
</div> 9
</body> 10
11
<body> 12
This is the Result: <br> 13
<c:out value="${userInfo}" default="没有结果"/> 14
</body> 15
发布到tomcat或者其它Servlet容器可以正常使用,提交以后将显示:
This is the Result:
你的名字是:gavin
这是一个简单的入门示例,希望有助于刚接触spring的人加深对spring的理解。
