`
yxw22
  • 浏览: 24960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

体验Spring3 MVC,替换Struts2

阅读更多

Java的WEB框架中,Struts2应该是最著名的,不过最近试了试Spring3 MVC,感觉好爽啊,几乎像ASP.Net MVC3一样舒服,以后就用它了。简单记录一下过程,没有技术含量。

1、准备包
下载的是spring framework 3.2.0,从中抽取以下jar到工程的WEB-INF/lib下:
spring-beans-3.2.0.RELEASE.jar 
spring-context-3.2.0.RELEASE.jar 
spring-core-3.2.0.RELEASE.jar 
spring-expression-3.2.0.RELEASE.jar 
spring-web-3.2.0.RELEASE.jar 
spring-webmvc-3.2.0.RELEASE.jar 
另外还需要几个第三方jar包,记录日志和处理json:
commons-logging-1.1.1.jar 
jackson-core-als-1.9.11.jar 
jackson-mapper-asl-1.9.11.jar 
 
2、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>mvc</display-name> 
   
    <!--指定spring配置文件--> 
    <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>/WEB-INF/spring-servlet.xml</param-value> 
    </context-param> 
  
    <listener>      
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>      
    </listener>  
   
    <servlet> 
        <!--servlet名字,随意--> 
        <servlet-name>spring</servlet-name>      
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      
        <load-on-startup>1</load-on-startup>      
    </servlet>      
 
    <servlet-mapping> 
        <!--servlet名字--> 
        <servlet-name>spring</servlet-name>    
        <!--拦截所有请求,对静态文件会有问题,在spring-servlet.xml中解决--> 
        <url-pattern>/</url-pattern>      
    </servlet-mapping>  
   
    <welcome-file-list> 
        <welcome-file>index.htm</welcome-file> 
        <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 
 
3、WEB-INF/spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:context="http://www.springframework.org/schema/context" 
 xmlns:p="http://www.springframework.org/schema/p" 
 xmlns:mvc="http://www.springframework.org/schema/mvc" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context.xsd 
      http://www.springframework.org/schema/mvc 
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
       
     <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射--> 
     <mvc:annotation-driven /> 
 
     <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean --> 
     <context:component-scan base-package="com.test.mvc.web" /> 
 
     <!-- 对模型视图名称的解析,在WEB-INF/jsp目录下找对应的jsp文件 --> 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> 
      
    <!--放过/scripts下的静态文件--> 
    <mvc:resources mapping="/scripts/**" location="/scripts/" /> 
</beans> 
 
4、WEB-INF/applicationContext.xml
spring的配置文件,由于我们不使用它的其它功能,暂时放个空的就好了。
<?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:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
            http://www.springframework.org/schema/util 
            http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 
</beans> 
 
5、写Controller
package com.test.mvc.web; 
 
import org.springframework.stereotype.*; 
import org.springframework.web.bind.annotation.*; 
import org.springframework.web.servlet.*; 
 
/** 
 * 控制器,用Controller注解 
 */ 
@Controller 
public class HomeController { 
 
    /** 
     * 映射到/welcome 
     */ 
    @RequestMapping(value = "/welcome") 
    public ModelAndView welcome(){ 
         
         ModelAndView mv = new ModelAndView("welcome");     //使用welcome.jsp,如果不写,根据url默认也是welcome.jsp 
         mv.addObject("hello", "Hello");    //model中增加一个名为hello的字符串 
          
         Client client = new Client(); 
         client.setName("User"); 
         mv.addObject("client", client);    //再增加一个名为client的自定义对象 
 
         return mv; 
    } 
     
    /** 
     * 如果不需要Model,直接返String更简单,对应的view为login_page.jsp 
     */ 
    @RequestMapping(value = "/login") 
    public String login(){ 
        return "login_page"; 
    } 
     
    /** 
     * 一个返回json的方法,用ResponseBody标识 
     * 可以在url中定义参数中,实现RESTful真是太简单了 
     * 传参很灵活,可以从url中取,也可以定义普通的 
     */ 
    @RequestMapping(value="/client/{name}", method = RequestMethod.GET) 
    @ResponseBody 
    public Client getClient(@PathVariable String name, String title){ 
        Client client = new Client(); 
        client.setName(title+ " " + name); 
         
        return client; 
    } 
里面用到了Client,很简单的POJO:
package com.test.mvc.web; 
 
/** 
 * 自定义一个POJO 
 */ 
public class Client { 
    private String name; 
    public String getName() { 
        return name; 
    } 
    public void setName(String name) { 
        this.name = name; 
    } 
 
6、写视图
根据spring-servlet.xml中的配置,视图要放到WEB-INF/jsp下,新建welcome.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>Spring MVC</title> 
<script src="scripts/jquery-1.4.2.js"></script> 
<script> 
$(function(){ 
    $("#btnGet").click(function(){ 
        $.ajax({ 
            type: 'GET', 
            url : 'client/Tian',   //通过url传递name参数
            dataType : 'json', 
            data: {title: "Mr"},   //通过data传递title参数
            success : function(data) { 
                alert(data.name);   
            }, 
            error : function(data) {   
                alert(data.responseText); 
            }   
        });  
    }); 
}); 
</script> 
</head> 
<body> 
<!-- 显示model中的hello字符串和client对象的name -->
${hello} 
${client.name} 
<br/> 
<input id="btnGet" type="button" value="get client" /> 
</body> 
</html> 
 
一切就绪,把Tomcat跑起来吧,用浏览器访问 localhost:8080/mvc/welcome 就能看到页面了。
分享到:
评论

相关推荐

    基于spring mvc、hibernate的校园微博设计与实现

    一点都不含糊的说 Spring 代替了struts2它有了自己的控制器 自己的视图接口 关于系统的试用方式是,servler.xml复制到你的tomcat下 替换掉!然后在server.xml中的 ...

    spring、hibernate后台框架及前台技术

    框架使用spring、hibernate作为后台技术,使用spring mvc强大功能替换struts处理,前台使用jquery组件各种显示效果 美观,框架搭建成熟,含 过滤器、国际化等。杜绝劣质代码,只提供优质源码!

    spring security 参考手册中文版

    5.1.3使用Spring MVC的AbstractSecurityWebApplicationInitializer 32 5.2 HttpSecurity 32 5.3 Java配置和表单登录 34 5.4授权请求 35 5.5处理注销 36 5.5.1 LogoutHandler 37 5.5.2 LogoutSuccessHandler 37 5.5.3...

    Spring in Action(第二版 中文高清版).part2

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    车辆管理系统(struts+hibernate+spring+oracle)130225.rar

    Struts作为MVC框架,负责处理用户的请求和响应,以及页面之间的跳转。Hibernate作为ORM框架,负责将Java对象映射到Oracle数据库中的表,使得开发者可以用面向对象的方式来操作数据库,而不需要编写复杂的SQL语句。...

    Spring in Action(第二版 中文高清版).part1

    16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...

    spring in action英文版

     10.1.2 实现知晓Spring的Struts action  10.1.3 委托action  10.2 使用Tapestry  10.2.1 替换Tapestry引擎  10.2.2 装载Spring Bean至Tapestry页面中  10.3 集成JavaServer Faces  10.3.1 解析...

    Spring面试题

    Spring 框架的 IOC 容器采用类型 2 和类型3 实现。 面向方面的编程 面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的...

    java面试题大全--java基础,struts,spring,ejb等

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何...2.简单介绍您所了解的MVC。 3.简单介绍所了解的XML。 4.文档和编码规范 5.Java中的分页、效率考虑。 6.简单介绍您所了解的structs。

    java web技术开发大全(最全最新)

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    java web开发技术大全

    JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...

    积分兑换系统java源码-wisdomfei:智飞

    代码分享网是用java语言开发的,采用的框架是:struts2+spring+spring jdbc,其中struts2仅仅作为转发功能使用,你可以很方便的修改成spring mvc版本。 测试方式 :,邮件注册登录后即可演示所有功能。 采用技术 : ...

    webx3框架指南PDF教程附学习Demo

    • Spring MVC 以上框架都是非常优秀的。说实话,如果阿里巴巴网站在2001年开始,就有这么多可选择的话,无论选择哪一个都不会有问题。因为这些年来,所有的开源Web框架都在互相学习、并趋于相似。Webx也不例外,...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    Spring MVC Spring WebFlow spring tx aop ioc Struts ibatis Mybatis CAS Dubbo 工作能力 软实力 应急能力 创新能力 管理能力 分享能力 学习能力 沟通能力 解决问题能力 经历 技术攻关案例 ...

    java面试题

    Struts2是如何实现MVC模式的? 答:在Struts2里面是将每次页面的请求进行处理,然后将请求需要输出的数据转发到需要做数据显示的页面。Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    千方百计笔试题大全

    3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8 7、Java 有没有goto? 8 8、int 和Integer 有什么区别? 9 9...

    java面试宝典

    3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否通过? 8 6、short s1 = 1; s1 = s1 + 1;有什么错? 8 7、Java 有没有goto? 8 8、int 和Integer 有什么区别? 9 9...

    基于J2EE框架的个人博客系统项目毕业设计论...

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...

Global site tag (gtag.js) - Google Analytics