最簡單的spring入門示例
spring至關重要的一環就是裝配,即配置文件的編寫,接下來我按剛才實際過程中一步步簡單講解。
首先,要在web.xml中配置DispatcherServlet,它是作為Spring MVC的前端控制器.必須在web.xml中配置好,如下
?
?????<servlet-name>ntx</servlet-name>?
?????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>?
?????<load-on-startup>1</load-on-startup>?
</servlet>
實際上,spring的配置文件可以分切到多個xml文件,我們這個簡單的示例就把它配置到ntx.xml中
?
<!DOCTYPE?beans?PUBLIC
????"-//SPRING//DTD?BEAN//EN"
????"http://www.springframework.org/dtd/spring-beans.dtd">?
?
<beans
??default-autowire="no"?
??default-lazy-init="false"?
??default-dependency-check="none"?
>?
?
????<bean?id="loginService"?class="ntx.service.serviceimpl.LoginServiceImpl"/>?
????????
????<bean??id="loginController"?class="ntx.controller.LoginController">?
????????<property?name="loginService">?
????????????<ref?bean="loginService"/>?
????????</property>?
????????<property?name="gotoUrl">?
????????????<value>/showResult.jsp</value>?
????????</property>?
????</bean>?
????
????<bean?id="SimpleUrlHandlerMapping"?class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">?
????????<property?name="mappings">?
????????????<props>?
????????????????<prop?key="/userLogin.do">loginController</prop>?
????????????</props>?
????????</property>?
????</bean>?
</beans>
?
配置好上面的這些后,要在WEB-INF下要建立ntx-servlet.xml如下:
?
<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">?
<beans>?
????<bean?id="viewResolver"?class="org.springframework.web.servlet.view.InternalResourceViewResolver">?
????????<property?name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>?
????????<property?name="prefix"><value></value></property>?
????????<property?name="suffix"><value></value></property>?
????????
????</bean>?
</beans>
?
接下來,要指明哪些請求將交給spring的DispatcherServlet來處理,所以在web.xml中添加<servlet-mapping>
????????<servlet-name>ntx</servlet-name>?
????????<url-pattern>*.do</url-pattern>?
</servlet-mapping>
為了能正確載入DispatcherServlet等配置文件,我們要在web.xml中配置一個上下文載入器ContextLoaderListener或者ContextLoaderServlet,我們這里為了兼容版本較低的Serlvet容器(實際上我采用的2.4),采用第二種:
?
?????<servlet-name>context</servlet-name>?
?????<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>?
?????<load-on-startup>100</load-on-startup>?
</servlet>
<web-app?version="2.4"?
????xmlns="http://java.sun.com/xml/ns/j2ee"?
????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?
????xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee?
????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
???<context-param>
???????<param-name>contextConfigLocation</param-name>
???????<param-value>/WEB-INF/ntx.xml</param-value>
???</context-param>
???<servlet>
?????<servlet-name>ntx</servlet-name>
?????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
?????<load-on-startup>1</load-on-startup>
???</servlet>
???<servlet>
?????<servlet-name>context</servlet-name>
?????<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
?????<load-on-startup>100</load-on-startup>
???</servlet>
???<servlet-mapping>
????????<servlet-name>ntx</servlet-name>
????????<url-pattern>*.do</url-pattern>
????</servlet-mapping>
????<welcome-file-list>
????????<welcome-file>index.jsp</welcome-file>
????</welcome-file-list>
</web-app>
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?org.springframework.web.servlet.ModelAndView;
import?org.springframework.web.servlet.mvc.Controller;
import?ntx.service.LoginService;
public?class?LoginController?implements?Controller...{
????private?LoginService?loginService?;
????private?String?gotoUrl;
????public?ModelAndView?handleRequest(HttpServletRequest?request,HttpServletResponse?response)?throws?Exception?...{
????????String?userName?=?request.getParameter("userName");
????????this.getUserInfo(request,?userName);
????????
????????return?new?ModelAndView(this.getGotoUrl());
????}
????
????private?void?getUserInfo(HttpServletRequest?request,String?userName)...{
????????String?userInfo?=?loginService.getUserInfo(userName);
????????request.setAttribute("userInfo",?userInfo);
????}
????
????public?String?getGotoUrl()?...{
????????return?gotoUrl;
????}
????public?void?setGotoUrl(String?gotoUrl)?...{
????????this.gotoUrl?=?gotoUrl;
????}
????public?LoginService?getLoginService()?...{
????????return?loginService;
????}
????public?void?setLoginService(LoginService?loginService)?...{
????????this.loginService?=?loginService;
????}
????
}
public?interface?LoginService?...{
????public?String?getUserInfo(String?userName);
}
import?ntx.service.LoginService;
public?class?LoginServiceImpl?implements?LoginService?...{
????public?String?getUserInfo(String?userName)...{
????????
????????return?"你的名字是:"?+?userName;
????}
}
好了,最后是兩個jsp文件,一個index.jsp用來顯示一個表單,輸入名字,一個showResult.jsp用來顯示結果,只貼出相關的代碼
<body>
??? This is my Test Spring page. <br>
??? <div>
??? ?<form method="post" action="/userLogin.do">
???? ?<input type="text" name="userName" size="30"/><br/>
???? ?<input type="submit" value="提交"/>
???? </form>
??? </div>
? </body>
<body>
??? This is the Result: <br>
?<c:out value="${userInfo}" default="沒有結果"/>
? </body>
發布到tomcat或者其它Servlet容器可以正常使用,提交以后將顯示:
This is the Result:
你的名字是:gavin
?