Spring简单入门实例

前言

这一篇只是简单感受一下Spring MVC.

环境和jar包准备

1.  IDE- eclipse3.7

2. Spring 下载地址:

3.2.3 是Spring 较新的版本, 目前最高的版本是4.0.0。

为什么这里给两个版本的地址?

原因是:
spring 需要一些其他的依赖包的支持,比如 log4j, jstl 等,

spring 的版本发布中, 有的版本有同步发布依赖包的下载, 有的却没有。 以上3.0.2的版本有, 3.2.3 的版本却没有。(猜想可能是依赖包没有更改的缘故吧)

如果只是学习的话, 直接下载3.0.2的版本就可以了; 如果是开发,要求使用spring 的最新版的话,就搭配使用spring 的最新版和依赖包的旧版。


这里的例子很简单, 就是用spring mvc 从一个index.jsp 的页面转到一个登录的页面 (login.jsp)。


步骤

1. 在Eclipse 下新建Dynamic Web Project.

(这里project 取名为"springweb")

2. 将下载的spring 包和依赖包拷到工程的 WebContent/WEB-INF/lib 下。

3. 修改 WEB-INF 下的web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>springweb</display-name>

  <servlet>  
        <servlet-name>spring-dispatcher</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
           <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath*:com/oscar999/resource/spring-dispather.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
  </servlet>   
    
  <servlet-mapping>  
        <servlet-name>spring-dispatcher</servlet-name>  
        <url-pattern>*.do</url-pattern>  
  </servlet-mapping>  
  
  <welcome-file-list>  
        <welcome-file>index.jsp</welcome-file>  
  </welcome-file-list>  
</web-app>

这里配置了核心控制器, 拦截 *.do 的请求,交由spring 处理,

处理的依据是spring-dispather.xml 这份文件。

这个文件的配置方式是: classpath*:com/oscar999/resource/spring-dispather.xml, 也就是配置xml 文件的路径, 在javasrc 的 com.oscar999.resource  这个包下面。

4. 添加  index.jsp

在WebContent 路径下添加 index.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <jsp:forward page="login.do" />
</body>
</html>

很简单, 进入主页面之后,直接导入到登录页面。

注意这里的page 并不是 login.jsp, 而是login.do


5. 新增IOC容器所需要的XML配置文件

也就是上面提到的spring-dispather.xml 这个文件。这个文件的命名和路径可以指定,也可以不指定。

如果不指定路径和名称: 只spring 会自动到到/WEB-INF目录下找命名为<servlet-name>-servlet.xml的文件。

指定路径和名称,就是 以上描述的方式了。

在java src 下新增com.oscar999.resource的package. 新增spring-dispather.xml, 内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="  
        http://www.springframework.org/schema/util  
        http://www.springframework.org/schema/util/spring-util-3.1.xsd  
        http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
        http://www.springframework.org/schema/context   
        http://www.springframework.org/schema/context/spring-context-3.1.xsd  
        http://www.springframework.org/schema/mvc  
       http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">  
       
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
         <props>
             <prop key="login.do">loginController</prop>
         </props>
    </property>
    </bean>    
    <bean id="loginController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
    	<property name="viewName" value="login" />
    </bean>
    <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
    </bean>
 </beans>
这里定义了一个action 和 Controller,

当action 是 "login.do" 的时候,使用loginController,  找到viewName 是 "login"; 再配合UrlBasedViewResolver.

最后组出 处理这个action 的 jsp 是  ==> /WEB-INF/jsp/login.jsp


6. 新建login.jsp

这里面的内容就无所谓了;

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h5 style="color:pink" >Spring MVC Demo 用户注册</h5>
<form action="user.do" method="post">
      <table>
          <tr><td>账号:</td><td><input type="text" name="id" /></td></tr>

          <tr><td>姓名:</td><td><input type="text" name="name" /></td></tr>

          <tr><td>生日:</td><td><input type="text" name="birth" /></td></tr>

          <tr><td>卡号:</td><td><input type="text" name="cardID" /></td></tr>

          <tr><td><input type="submit" value=" 提 交 "/></td><td align="center"><input type="reset" value=" 重 置 "/></td></tr>
      </table>
</form>
</body>
</html>

总结

从这个例子来看, 只是使用 *.do 取代了  *.jsp 的方式。

然后在xml 去配置 那个 *.do action 最终使用 哪个jsp.

隐约看上去是实现了C 和 V的分离。

Spring 更多的优势, 就要深入学习了....


附加

1.

以上

    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
         <props>
             <prop key="login.do">loginController</prop>
         </props>
    </property>
    </bean>    
    <bean id="loginController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
    	<property name="viewName" value="login" />
    </bean>
可以替换成以下方式也可以

    <bean name="/login.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
    	<property name="viewName" value="login" />
    </bean>

2. UrlFilenameViewController

该Controller对XXX.do解析成XXX.jsp


3. ParameterizableViewController 创建带有参数化视图的控制器 

 可以配置 viewName 的property 配置view 的名字。

以上例子可以是login  , 也可以是login2, 对应建立对应的jsp 就可以了。


评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oscar999

送以玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值