技术开发 频道

入门也流行简单 最简单的Spring入门示例

【IT168技术文档】应一位朋友的要求,写一个最简单的spring示例,使用spring的MVC,并应用了spring的依赖注入,实现简单应用,索性放在这里供还没入门的spring爱好者参考,初步感受一下spring应用(spring高手就不必看了,这里并没有涉及高级特性,比如与ORM框架的整合,事务管理,远程调用,代理等这些功能)

  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-class4<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 7default-autowire="no" 8default-lazy-init="false" 9default-dependency-check="none" 1011 12<bean id="loginService" class="ntx.service.serviceimpl.LoginServiceImpl"/13 14<bean id="loginController" class="ntx.controller.LoginController"15<property name="loginService"16ref 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如下:

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
  接下来,要指明哪些请求将交给spring的DispatcherServlet来处理,所以在web.xml中添加<servlet-mapping>

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),采用第二种:

1<servlet> 2 <servlet-name>context</servlet-name> 3 <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class4 <load-on-startup>100/load-on-startup> 5/servlet> 6 7
  这样就全部配置完毕了,当然,上面的ntx.xml是我在项目完成以后才配置完成的,这里不再多讲,有bean元素的配置大家可以参考有关资料理解,很容易理解的,下面再给出完整的web.xml配置以及java<?xml version="1.0" encoding="UTF-8"?>

1<web-app version="2.4" 2xmlns="http://java.sun.com/xml/ns/j2ee" 3xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 5http://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-class14 <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-class19 <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*/ 6package ntx.controller; 7 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11import org.springframework.web.servlet.ModelAndView; 12import org.springframework.web.servlet.mvc.Controller; 13 14import 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*/ 29public class LoginController implements Controller...{ 30 31private LoginService loginService ; 32private String gotoUrl; 33public 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 39private void getUserInfo(HttpServletRequest request,String userName)...{ 40 String userInfo = loginService.getUserInfo(userName); 41 request.setAttribute("userInfo", userInfo); 42} 43 44public String getGotoUrl() ...{ 45 return gotoUrl; 46} 47public void setGotoUrl(String gotoUrl) ...{ 48 this.gotoUrl = gotoUrl; 49} 50public LoginService getLoginService() ...{ 51 return loginService; 52} 53public void setLoginService(LoginService loginService) ...{ 54 this.loginService = loginService; 55} 56 57} 58

  还有service层的接口以及实现,较简单。

1package ntx.service; 2public interface LoginService ...{ 3 public String getUserInfo(String userName); 4}package ntx.service.serviceimpl; 5 6import ntx.service.LoginService; 7 8public class LoginServiceImpl implements LoginService ...{ 9 public String getUserInfo(String userName)...{ 10  return "你的名字是:" + userName; 11 } 12} 13 14
  好了,最后是两个jsp文件,一个index.jsp用来显示一个表单,输入名字,一个showResult.jsp用来显示结果,只贴出相关的代码:

1<body> 2This 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> 12This is the Result: <br> 13<c:out value="${userInfo}" default="没有结果"/14/body> 15

  发布到tomcat或者其它Servlet容器可以正常使用,提交以后将显示:

  This is the Result:

  你的名字是:gavin



  这是一个简单的入门示例,希望有助于刚接触spring的人加深对spring的理解。
0
相关文章