`
v5browser
  • 浏览: 1138788 次
社区版块
存档分类
最新评论

Spring + ExtJS 配置

 
阅读更多

1.起因

近期Chinese office的同事需要我帮忙写一个管理Test Case和Test Task的Web小应用,正好和印度合作开发的网管是基于ExtJS+Spring+Hibernate的模式。考虑到Test Team对于编码方面的掌握没有我们熟悉,决定去掉Hibernate重新搞一个Frame给她们用。不过由于在H3C荒废了太久的时间,很多技术都是知其然,不知其所以然。在这里用F开头的单词问候H3C一下。哈哈。

2.探索

好了,先从网络上找个Spring例子吧。我发现这个网站不错,http://www.vaannila.com/里面很多例子可以参考。并且有打包好的例子下载。废话不多说,先下载一个Example10看看吧。首先是web.xml配置文件,没有什么特别的。就只有一个DispatchServlet的配置

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>SpringExample10</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>

</web-app>

dispatcher-servlet.xml

然后是dispatcher-servlet.xml。其中dispatcher是上面servelet的名字。这个要对应好

<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />

<bean name="/user/*.htm" class="com.vaannila.web.UserController" />

</beans>

UserController.java

其中的UserController.java代码如下。其中的add,delete都是方法字。

package com.vaannila.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class UserController extends MultiActionController {

public ModelAndView add(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("Add method called");
return new ModelAndView("user", "message", "Add method called");
}

public ModelAndView remove(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("Remove method called");
return new ModelAndView("user", "message", "Remove method called");
}
}

随便创建一个web工程,把这些代码拷贝进去,覆盖原来的*.xml文件即可。启动tomcat即可运行。

问题

1.UserController 的各种方法返回一个ModelandView对象,其中第一个参数表示对应的视图名称,这个很重要,请看Dispatcher-servelet.xml里面还有一个<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />,配置,指明了这些JSP文件的路径在哪里。比如你返回一个 ModelAndView("user", "message", "Remove method called"); 那么系统就会主动到web-inf/jsp目录下面找名字开头是use.jsp的文件来展示这些内容。.

User.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!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=ISO-8859-1">
<title>Success Page</title>
</head>
<body>
${message}
</body>
</html>

好了,至此如果只是Spring,就一切Okay了,Spring can work well now.


ExtJS + Spring

如果需要支持ExtJS, 就需要对这些进行一下改进。当然我的改进并不是完美的,毕竟本人不是乔布斯那种大牛。

修改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>SpringExample10</display-name>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Context configuration -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/ContextConfiguration.xml
</param-value>
</context-param>



<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>

</web-app>

增加绿色部分。指定一个Context,当然我不确定是一定需要这么干。毕竟是为以后的扩张留下好的接口嘛。

ContextConfiguration.xml

这个ContextConfiguration.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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<context:component-scan base-package="my.package"/>

<bean id="xmlFileViewResolver"
class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="order">
<value>1</value>
</property>
</bean>


</beans>

红色部分很重要。如果不写这个,下面的views.xml里面的东东就不会起作用!!!!

增加一个新文件views.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.5.xsd">
<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/>

</beans>

大家都知道ExtJS会采用Json来传递Ajax信息。这里就是配置Json视图的,注意bean name = 'JsonView'这里。

好, 最后给个例子,

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Hello World Window Example</title>
    <link rel="stylesheet" type="text/css" href="ext-3.3.1/resources/css/ext-all.css" />

    <!-- GC -->
    <!-- LIBS -->
    <script type="text/javascript" src="ext-3.3.1/adapter/ext/ext-base.js"></script>
    <!-- ENDLIBS -->

    <script type="text/javascript" src="ext-3.3.1//ext-all.js"></script>

    <script language="javascript" src="hello.js"></script>

<!-- Common Styles for the examples -->
<link rel="stylesheet" type="text/css" href="../shared/examples.css" />

    <style type="text/css">
    .x-panel-body p {
        margin:10px;
        font-size:12px;
    }
    </style>
</head>
<body>
<script type="text/javascript" src="../shared/examples.js"></script><!-- EXAMPLES -->

<h1>Hello World Window</h1>
<p>This example shows how to create a very simple Window with "autoTabs" from existing markup.</p>
<input type="button" id="show-btn" value="Hello World" /><br /><br />
<p>Note that the js is not minified so it is readable. See <a href="hello.js">hello.js</a> for the full source code.</p>

<div id="hello-win" class="x-hidden">
    <div class="x-window-header">Hello Dialog</div>
    <div id="hello-tabs">
        <!-- Auto create tab 1 -->
        <div class="x-tab" title="Hello World 1">
            <p>Hello...</p>
        </div>
        <!-- Auto create tab 2 -->
        <div class="x-tab" title="Hello World 2">
            <p>... World!</p>
        </div>
    </div>
</div>
</body>
</html>

上面的HTML不重要,重要的是JS脚本

/*!
* Ext JS Library 3.3.1
* Copyright(c) 2006-2010 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
Ext.onReady(function(){
var win;
var button = Ext.get('show-btn');

button.on('click', function(){
// create the window on the first click and reuse on subsequent clicks
if(!win){
win = new Ext.Window({
applyTo:'hello-win',
layout:'fit',
width:500,
height:300,
closeAction:'hide',
plain: true,

items: new Ext.TabPanel({
applyTo: 'hello-tabs',
autoTabs:true,
activeTab:0,
deferredRender:false,
border:false
}),

buttons: [{
text:'Submit',
disabled:true
},{
text: 'Close',
handler: function(){
Ext.Ajax.request({
url: 'user/add.htm',
method: 'POST',
success:function(result, request){

alert('good');

},
failure: function(form, action){
alert('fuck');
} ,
scope: this
});

}
}]
});
}
win.show(this);
});
});

请注意红色部分,当button被click的时候会触发这个方法。那么我们会send一个ajax request到URL 'user/add.htm, 这里的时候请看dispatcher-servlet.xml里面的配置,当然这个add.htm并不存在, 就是一个标志。程序会自动到UserController里面去寻找add方法!!!

当然,add方法也对应做一点点点的修改即可。Just look below:

public ModelAndView add(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("Add method called");
return new ModelAndView("jsonView", "message", "Add method called");
}

看到没有,这里的jsonView就是上面在配置文件里面写道的bean的名字。写错了就搞不定了!!!

最后一点就是在/WEB-INF/lib里面放入足够的jar文件,一旦缺少某些jar文件,就不能保证一定能够Okay了。compile的时候不会出问题,当时Run的时候就会各种诡异的现象出现了。


分享到:
评论

相关推荐

    Spring+Hibernate+Extjs项目实例

    SpringMVCHibernate+Extjs项目实例是j2ee比较常见的企业级网站开发框架,里面代码需要配置一定环境在Myeclipse下,要下载extjs自己的库,保证可以运行

    Java源码 Spring+MVC4+Hibernate4+ExtJS5

    Java源码 Spring+MVC4+Hibernate4+ExtJS5 系统说明如下: 1、系统导入后发布到应用服务器,例如tomcat上即可运行。 2、导入项目后请将项目编码设置为UTF-8,不是GBK。 3、导入后如果出现感叹号,请修改实际的...

    最新SSH集成+Extjs5+struts2.3.20+hibernate4.3.8+spring4.1.4

    最新SSH集成+Extjs5+struts2.3.20+hibernate4.3.8+spring4.1.4 包括动态菜单配置功能

    extShop(Struts2+Hibernate+Spring+ExtJs)

    不知道jar包问题还是配置文件问题。后来我把代码移植到自己的SSH项目上,才运行起来,稍微修改一点代码。前台用Extjs,数据库也在里面,其实不需要数据库的,hibernate可以自动生成,前提先建好数据库。主要用来学习...

    spring+hibernate+servlet+extjs+axis2

    初学axis2,这是我的第一个项目,比较简单,希望对大家有帮助。由于jar包太大,我没有权限上传,所以只截了张图在项目里。包里有struts2的包,放在里面没关系。里面默认的数据库是oracle,...配置文件里面都配好了。

    struts2+extjs2.1+json+hibernate+spring

    上网找资料,都是一些不全的. struts2+extjs2.1+json+hibernate+spring 自己整合的例子. 当中hibernate数据源可以配置自己的.后台输送json 前台接收.

    SpringMVC+ExtJS完美集成(数据传输方式为JSON和model)

    SpringMVC+ExtJS完美集成(数据传输方式为JSON和model),同时还支持controller页面配置、页面消息可配置(类似于国际化)、intercepter示例。

    MVC+Extjs架构WebMis自动生成

    大家知道CRUD,查询分页都是重复的代码,更头疼的是Extjs文件的编写更愁人,而这些系统都可以根据你配置的表自动产生出来,不用再重复无用功了。 系统可以产生IDAO、DAO、Model、Nhibernate映射文件、IBLL、BLL、...

    基于SpringBoot+ExtJs4.0+Echarts实现的出租房屋管理系统源代码+数据库+项目文档

    基于SpringBoot+ExtJs4.0+Echarts实现的出租房屋管理系统源代码+数据库+项目文档 软件技术栈 前端:ExtJs4.0(JavaScript的一个框架),大数据展示用到Echarts 后端:SpringBoot, JPA ...运行配置: 内存4G及以上

    Spring.net+NHibernate示例源码

    这是GoldArch(本人命名为黄金框架)的中间产品,框架最后成型于asp.net+mvc+spring.net+nhibernate+extjs(and coolite) ,实现了Spring.net+NHibernate的封装。主要是泛型DAO的配置和应用。同时多数据库连接(权限...

    stutsspringibatis+extjs图书管理系统

    本系统所用框架 struts2 spring ibatis extjs 数据库采用sqlserver 实现图书基本管理功能,对学习这些框架的人来说是难得的资源,包占空间大大我没放进来,我把包的名称都写下来了,系统没有问题,配置跑不通自己好好...

    extjs+jersey+spring+jpa Security 安全验证

    一个简单的 安全验证的dome 自己看配置文件 在mysql下建库 自动生成表 添加好权限 权限表 role 内容最少如下 id name value 1 admin ROLE_ADMIN 2 user ROLE_USER value值必须以ROLE_开头 配置好 用户与 权限边的...

    MVC3+Spring.net+NHibernate+ExtJs的简单架构

    对于MVC3、Spring.net、NHibernate、ExtJs等单个的技术点使用起来,并不是很复杂,出问题比较多的还是配置相关的问题;下面我们来一步一步的实现4个框架的融合配置;首先我们来谈谈4个框架的各自负责的事情::...

    HSSEADemo:Hibernate3.3.2+Spring2.5.5+Struts2.1.6+Extjs3.0.0 Annotations方式快速开发框架

    这是一个整合Hibernate, Spring, Struts2,并配合Extjs来快速开发增删改查功能的架构示例,对于系统中需要的配置信息大部分是以注解代替配置文件的方式实现。 以下链接是对其实现过程进行详细解说的博客:

    Extjs4.1+Spring3.2+hibernate4.1+MySql5网上商城完整项目

    网上商城完整项目Extjs4.1+Spring3.2+hibernate4.1+MySql5 安装jdk1.6以上版本 安装tomcat服务器 配置tomcat下的service.xml文件

    基于SpringBoot+ExtJS+Echarts实现的出租房屋管理系统源码+数据库+项目文档,毕业设计

    前端:ExtJs4.0(JavaScript的一个框架),大数据展示用到Echarts 后端:SpringBoot, JPA 开发环境:Eclipse 2021-12版本,JDK17.0.1,Tomcat8.5 运行配置: 内存4G及以上 采用区域网格化节点管理模式,完成流动...

    spring4.0+hibernate4.3+freemarker+jquery+ext4.2

    spring4.0+hibernate4.3+freemarker+jquery+extjs4.2 在实现了漂亮的首页,图表拖拉都实现了,这里重点是spring4.0和freemarker的搭建,注意其中的包的变化以及配置的不同 main.view为spring的入口,ext的节目为main...

    ExtJS 2.2图书管理系统源码(mysql版)

    使用struts2(json-plugin) + spring2 + ibatis2 + extjs2.2 + mysql5.0架构开发的图书管理系统,对学习struts2,json-plugin,spring2,ibatis2, extjs2.2及其整合开发有很大帮助。 原作地址:...

    Extjs3.2+struts2.0+spring2.5+hibernate3.5+weblogic10+oracle10g含全包5

    proxool_cofig.xml为连接池配置 此项目可做基础项目开发原型方便,启动此项目在weblogic10中会有antlr-2.7.6rc1.jar此包的异常请配置其先加载并将次包考入 bea\wlserver_10.0\server\lib目录下,再将bea\user_projects...

Global site tag (gtag.js) - Google Analytics