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>
相关推荐
一点都不含糊的说 Spring 代替了struts2它有了自己的控制器 自己的视图接口 关于系统的试用方式是,servler.xml复制到你的tomcat下 替换掉!然后在server.xml中的 ...
框架使用spring、hibernate作为后台技术,使用spring mvc强大功能替换struts处理,前台使用jquery组件各种显示效果 美观,框架搭建成熟,含 过滤器、国际化等。杜绝劣质代码,只提供优质源码!
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...
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作为MVC框架,负责处理用户的请求和响应,以及页面之间的跳转。Hibernate作为ORM框架,负责将Java对象映射到Oracle数据库中的表,使得开发者可以用面向对象的方式来操作数据库,而不需要编写复杂的SQL语句。...
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...
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 框架的 IOC 容器采用类型 2 和类型3 实现。 面向方面的编程 面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的...
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何...2.简单介绍您所了解的MVC。 3.简单介绍所了解的XML。 4.文档和编码规范 5.Java中的分页、效率考虑。 6.简单介绍您所了解的structs。
JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...
JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean...
代码分享网是用java语言开发的,采用的框架是:struts2+spring+spring jdbc,其中struts2仅仅作为转发功能使用,你可以很方便的修改成spring mvc版本。 测试方式 :,邮件注册登录后即可演示所有功能。 采用技术 : ...
• Spring MVC 以上框架都是非常优秀的。说实话,如果阿里巴巴网站在2001年开始,就有这么多可选择的话,无论选择哪一个都不会有问题。因为这些年来,所有的开源Web框架都在互相学习、并趋于相似。Webx也不例外,...
Spring MVC Spring WebFlow spring tx aop ioc Struts ibatis Mybatis CAS Dubbo 工作能力 软实力 应急能力 创新能力 管理能力 分享能力 学习能力 沟通能力 解决问题能力 经历 技术攻关案例 ...
Struts2是如何实现MVC模式的? 答:在Struts2里面是将每次页面的请求进行处理,然后将请求需要输出的数据转发到需要做数据显示的页面。Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据...
由于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...
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的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...