struts1.X如何向jsp中传递对象一个数组两个乘积最接近X

学习struts时,可以大致将struts中的常见类划归为不同的MVC模式中的组件,这样有助于理解struts的原理。这些常见的类有ActionServlet、Action Classes、ActionMapping(ActionForward)、ActionFormBean等。首先来看一下ActionForm,查看struts文档,官方将ActionForm归类为控制层组件而不是模型层的。ActionForm作为控制层组件为模型层和视图层传递数据。在struts中,开发者实现商务逻辑的类和自己写的相关的JavaBean。视图是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用它们可以快速建立应用系统的界面。而控制器就是前面所提到的前端控制器以及它将客户端请求转发到相应的后端控制器Action类。从上面可以看出,struts的主要功能部件在控制器这一块,模型层几乎没有,视图层也只有一套JSP定制标签库。接下来就来逐个分析struts里面这些常见的类。
ActionServlet是中心控制器,它继承自javax.servlet.http.HttpServlet类,所以对于web应用来说,它就是一个servlet,需要在web.xml中配置ActionServlet的映射。ActionServlet作为中心控制器,它提供了一个中心位置来处理全部的终端请求(*.do),它的作用有接受请求、填充数据、派发请求、响应用户等。标准的ActionServlet初始化时是基于其配置的servlet初始化参数,通常之需要配置config参数,这个参数名时固定的,不能更改的。通常配置文件是放置在WEB-INF目录下的,也可以放置在其它地方,但是配置的时候要写对应的目录名。config参数也可以不配置,因为如果没有找到config参数的配置,会默认去/WEB-INF/struts-config.xml路径下读取配置文件。因此如果将配置文件放置在默认位置且名字也保持默认,则应用程序能照常运行。而且配置文件可以不只一个,可以用以逗号分隔的相对应用程序根目录的全路径名进行配置。
Action也是属于控制器层的,它是HTTP请求内容与相应的需要执行的业务逻辑之间的适配器。Action是何时初始化的?比较简单的想法一个是当ActionServlet初始化读取配置文件的时候,还一个就是当用户的请求到达ActionServlet的时候。为了说明问题,可以建立一个工程来验证一下,可以在前面的AddStudentAction中添加如下的构造方法:
public AddStudentAction(){
System.out.println("初始化了...");
添加了如上构造方法后,再次运行web应用程序,会发现刚启动的时候并没有该语句打印出来,但是当在浏览器中发送第一次请求后,控制台就打印出了该语句。这说明Aciton是在请求第一次到达的时候进行初始化的。了解了什么时候初始化,还需要知道的是每个Action初始化几次?这个很简单就能解决了,可以在上次的基础上再开一个浏览器继续发送一个请求,这次请求执行完后发现在控制台上没有再次出现上面的打印语句,所以这就说明了一个Action只初始化一次,并且是在第一次请求到来的时候进行唯一的一次初始化。还有一个问题可以测试一下,就是当两个Action配置的path不同但是type相同时,struts也只是初始化一次该Action。读struts api文档发现Action需要用线程安全的方式编程,因为控制器对多个同步的请求会共享同一个实例。因此就需要遵循以下原则:
1.实例变量和静态变量不能存储与某一个请求情况相关的信息,但是它们可以用来共享访问同一个Action的全局的资源信息。
2.如果某些资源需要保护,那么访问这些资源时就应该进行同步处理。
下面利用这个特性来做一个统计一个Action访问次数的应用,同时也写了一个比较另类的Action,直接往客户端写数据,不跳转到显示层的的页面。
public class CountAction extends Action {
private Integer count = 0;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
synchronized (count) {
PrintWriter out = response.getWriter();
out.println("count="+ count);
以上就是Action的代码,设置一个实例变量,然后在execute方法中进行同步自增运算,每次请求后将当前值输出到浏览器端。然后在配置文件中配置一个action元素就可以了,只有path和type属性。最后这个例子就实现统计Action的访问次数的功能。
Struts1和Struts2核心控制器的执行原理
Struts11、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web、xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-c...
Struts功能详解 ——ActionServlet
ActionServlet类是Struts框架的内置核心控制器组件,它继承了javax.servlet.http.HttpServlet类。Struts的启动通常从加载ActionServlet开始。...
今天主要讲了消息文件、表单验证和struts的各种DispatchAction。消息文件用于存放本地化消息文本。消息文件只是一个文本文件,它包含的是”关键字/值”对。在struts-confi...
没有更多推荐了,Struts2与Struts1.X
作者:用户
本文讲的是Struts2与Struts1.X,
Apache Struts2原本就是举世闻名的Webwork2,在各自经历几年的发展之后,Struts和WebWork社区决定合二为一,也就是今天的Struts2。
  Struts是一个基于Model2的MVC
Apache Struts2原本就是举世闻名的Webwork2,在各自经历几年的发展之后,Struts和WebWork社区决定合二为一,也就是今天的Struts2。
  Struts是一个基于Model2的MVC框架,为应用程序的WEB层提供了良好的结构严谨的实现。Struts发展较早,早期的Struts1.X已被很多J2EE程序员熟悉,经过多年来的发展,这支队伍变得越来越大,很多企业级应用程序都是基于Struts的。
  Struts2与Struts1.X已经不能再放到一起比较,虽然都是对MVC架构模式的实现,本质却完全不同。Struts2的前身是WebWork,其实现方式和功能都要优于Struts1.X,但是,Struts先入为主,很多应用程序都基于Struts,其生命力和普及度使得WebWork落于下风。随着新思想和新架构的不断涌入,特别是WEB2.0被大量提及,Struts1.x显然无法跟上日新月异的变化,在很多应用上显得力不从心,最终催生了Struts2.0。可以说Struts2.0是为变而变。
  很大程度上,Struts2.0无法避开投机取巧的嫌疑。不过,借助Struts的名声,加上WebWork构建良好的框架,二者取长补短,确实不失为一种黄金组合和一种绝佳的宣传方式。
  笔者杜撰此文时,可以下载到的最新版本为2.1.0,但他的魅力已初露尖角,应该会有很好的前途。
  Struts2的新特征
如果读者熟悉Struts1.X,会发现Struts2比Struts1.X有了巨大的变化:
  Action 类:
  o Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
  o Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
  线程模式:
  o Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
  o Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
  Servlet 依赖: 
  o Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
  o Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
  可测性:
  o 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
  o Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
  捕获输入:
  o Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
  o Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。
  表达式语言:
  o Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
  o Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).
  绑定值到页面(view):
  o Struts 1使用标准JSP机制把对象绑定到页面中来访问。
  o Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
  类型转换:
  o Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
  o Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。
  校验: 
  o Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
  o Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
  Action执行的控制:
  o Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
  o Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
  注:以上资料从网上搜集,来源:Struts开发组,翻译:tianxinet(胖猴)。
  Struts2的环境要求
    Apache Struts2的环境需求如下:
  Servlet API 2.4
  JSP API 2.0
  Java 5
  需要提醒的是,在Struts中会用到Annotation,所以请将JDK版本升级到1.5.
  Struts2环境搭建
4.1Struts的下载
   从游览器输入http://people.apache.org/builds/struts/,即可看到Struts的各个版本。从下图中可以发现,现在Struts2.0的最新版是2.1.0,发布于。      
  (图1)
   (图2)
  从图2中可以看出,即可以分开下载,又可以一次全部下载。全部下载的大小为83M,
   下表注明了各个压缩包的作用。
  压缩包名称
  struts-2.1.0-docs.zip
  ,包含了Struts2API
  struts-2.1.0-lib.zip
  构建Struts2工程所需要的包
  struts-2.1.0-src.zip
  Struts2的所有源代码
  struts2-blank-2.1.0.war
  空白工程
  struts-2.1.0-all.zip
  大集成,包括上面所有的内容
4.2 开发工具介绍
   目前J2EE开发工具主要分为Eclipse和NetBeans两大阵营,Eclipse的最高版本为3.3,NetBeans的最高版本为6.0.今天刚刚从新闻上看到,NetBeans6.0的英文正式版正式发布了,真是可喜可贺。
   笔者在开发时以Eclipse为主,但Eclipse并不支持WEB开发,需要安装相应插件。MyEclipse是一个功能强大且框架支持非常广泛的WEB开发插件,该产品是收费项目。目前MyEclipse的最高版本为6.0,即便如此,尚不支持Struts2.0,我们只能手工配置Struts2.0的开发环境。
4.3 库文件
   从网站上下载的Struts2包含了二三十个库文件,但大多数是可选的,有些库是插件,用于和其他框架的整合。
   读者可自行下载struts2-blank-2.1.0.war压缩包,展开后是一个非常简单的项目,从WEB-INF/lib目录中可以看到5个库文件,解释如下:
  commons-logging-1.0.4.jar
  日志管理
  freemarker-2.3.8.jar
  表现层框架,定义了struts2的可视组件(theme)
  ognl-2.6.11.jar
  OGNL表达式语言,struts2支持该EL
  struts2-core-2.0.10.jar
  struts2的核心库
  xwork-2.0.4.jar
  webwork的核心库,自然需要它的支持
   (图3)
4.3 使用Eclipse搭建Struts2的开发环境4.3.1创建用户库
   将Struts2所需的包建成用户库,可以更加方便地进行管理和使用,这是一个好的习惯——编程从习惯开始。
   1.选择菜单Window-&Preferences-&Java-&Build Path-&User Libraries。如图4:
   (图4)
   2.点击右侧的New…按钮,创建一个新的用户库,弹出如图5所示对话框:
   (图5)
    3.输入用户库的名称,如:Struts2,点击OK按钮,该对话框自动关闭。结果如图6所示:
   (图6)
   此时,右侧的按钮被点亮。
   4.点击“Add JARS…”按钮,添加用户库所需的库文件,在Struts2中,至少要包含上文中提到的5个库文件。添加后效果如图7所示:
   (图7)
   5.点击“OK”完成。
4.3.2开发第一个Struts2应用程序——世界,你好
   开发WEB应用程序,本文使用了MyEclipse插件。该插件为收费软件,目前提供英文版和日文版,不同的版本可以运行在Windows、Linux等操作系统上。为了方便用户,MyEclipse有一个Full版,连同Eclipse一起安装,对于初学者而言,可以减少很多麻烦和困扰。
   读者可自行去http://www.myeclipseide.com/网站下载该软件的共享版本。建议读者下载MyEclipse5.5(这也是笔者使用的版本),这个版本相对比较稳定,MyEclipse6.0还处于测试之中。
   入门总是以HelloWorld作为学习的第一步,自然笔者也不例外。本示例从游览器输入网址,提交请求后在页面中显示“世界,你好”的信息。
   1.新建WEB工程,如图8所示:
   (图8)
   2.点击“Next”,输入工程名,如图9所示:
   (图9)
   3.点击“Finish”完成。
   4.现在将Struts2的库导入到工程中,右击工程名称弹出快捷菜单,选择Build Path-&Add Libraries…,如图10所示。
   (图10)
   5.从弹出的对话框中选择“User Libraries”,如图11所示。
   (图11)
   6. 单击下一步,我们看到,上文中创建的用户库出现在列表中,在“Struts2”前的复选框上打勾,点击“Finish”完成。如图12。
   (图12)
   7.将Struts2所带的过滤器org.apache.struts2.dispatcher.FilterDispatcher配置到工程的web.xml文件中,默认情况下,该过滤器拦截请求字符串中以.action结尾的请求,并将该请求委托给指定的Action进行处理。最直观的表现就是调用Action的execute()方法。代码如下:
  代码清单1:web.xml
  &filter&
    &filter-name&struts2&/filter-name&
    &filter-class&
      org.apache.struts2.dispatcher.FilterDispatcher
    &/filter-class&
  &/filter&
  &filter-mapping&
    &filter-name&struts2&/filter-name&
    &url-pattern&/*&/url-pattern&
  &/filter-mapping&
  注:在Sturts1.X中,该行为由Servlet完成。
  8.创建包com.lizanhong.action,并在该包中创建HelloWorldAction类,该类继承自com.opensymphony.xwork2.ActionSupport。理论上,Action可以不继承任何类或实现任何接口,以增强程序的可测试性,这也是和Struts1.X不同的地方。但是,继承自ActionSupport可以减少更多的编码工作。
   在ActionSupport中,定义了方法execute(),当用户向该Action发送请求时,会自动调用。程序代码如下:
  代码清单2:HelloWorldAction.java
package com.lizanhong.
import com.opensymphony.xwork2.ActionS
publicclass HelloWorldAction extends ActionSupport {
  @Override
  public String execute() throws Exception {
    System.out.println("Action执行了。");
    returnSUCCESS;
  注:ActionSupport是Struts2提供的类,功能类似于Struts1.x中的Action类,该类封装了几个有用的功能,比如:
  getText():从资源文件中获取国际化消息。
  addFieldError():验证输入未通过时添加错误消息,支持国际化。
  execute():该方法一般会被重写,当客户端向Action发送请求时,会调用此方法。
  总结起来,该类主要提供了错误消息的支持和国际化支持。
   在工程类路径下创建struts.xml文件,这是Struts2的配置文件,类似于Struts1.x中的struts-config.xml,在struts.xml文件中可以配置Action、Bean、Interceptor等组件。
  代码清单3:struts.xml
&!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"&
  &include file="struts-default.xml"&&/include&
  &package name="a" extends="struts-default"&
    &action name="helloworld" class="com.lizanhong.action.HelloWorldAction"&
      &result&/result.jsp&/result&
    &/action&
  &/package&
  注:WEB应用程序的类路径是指WEB-INF/classes目录,在Eclipse中,创建在src目录下的文件最终发布后会自动复制到WEB-INF/classes目录下。
  代码清单3中涉及到很多标签,以下是简单的解释:
  标签名称
  include
  包含其他xml文件,在示例中,这意味着struts.xml可以访问定义在struts-default.xml文件中的组件。
  该元素可以使得Struts2定义多个配置文件,“分而治之”。
  要注意的是,任何一个struts2配置文件都应该和struts.xml有相同的格式,包括doctype,并且可以放在类路径下的任何地方。
  package
  为Action或截拦器分组。
  name:名称,必填项,名称自定义,没特别要求。方便别的package引用。
  extends:package能继承其他的package,即通过该属性实现,值为另一个package的name。
  在示例中,extends =”struts-default”是从struts-default.xml中继承的。
  action
  定义Action,name属性为访问时用到的名称,class属性是Action的类名。
  result
  根据Action的返回值定义页面导航。
  Action的预定义的返回值有:
  String SUCCESS = "success";
  String NONE  = "none";
  String ERROR  = "error";
  String INPUT  = "input";
  String LOGIN  = "login";
  比如,当Action返回SUCCESS时希望转到ok.jsp页面,则可以这样写:
  &result name=”success”&ok.jsp&/result&
  其中,name的缺省为success。
   9.result.jsp是一个非常简单的jsp页面,输出“世界,你好”。
  代码清单4:result.jsp
&%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
  &base href="&%=basePath%&"&
  &title&My JSP 'result.jsp' starting page&/title&
  &meta http-equiv="pragma" content="no-cache"&
  &meta http-equiv="cache-control" content="no-cache"&
  &meta http-equiv="expires" content="0"&  
  &meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
  &meta http-equiv="description" content="This is my page"&
  &link rel="stylesheet" type="text/" href="styles.css"&
  世界,你好. &br&
  9.发布工程,在浏览器中输入:http://localhost:8081/Struts2Demo/helloworld.action,在控制台输出“Action执行了。”
  10.在浏览器的结果
  struts.xml的定义文件
代码清单5:struts-2.0.dtd
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索myeclipse
,以便于您获取更多的相关知识。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备
云栖社区(yq.aliyun.com)为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!最近在写三大框架整合 其实主要就是一些配置文件问题,三大框架整合其实也就是Struts和Spring的整合 ,因为Hibernate和Spring的整合 eclipse已经帮我们做得很好了!而Struts和Spring的整合,主要是因为Spring的注入式管理bean方式,所以也要求在Struts和DWR中用到的bean也交给Spring来管理。所以这里就要求Spring的配置文件的解析时机(我的个人理解)。[color=red]时机一:[/color]web容器读取web.xml时候 ,通过web.xml配置加载spring上下文环境。
修改web.xml配置:&?xml version="1.0" encoding="UTF-8"?&&web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&
[color=red]
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/classes/applicationContext.xml&/param-value&
&/context-param&
[color=brown]&!-- 通过listener加载
&listener&
&listener-class&
org.springframework.web.context.ContextLoaderListener
&/listener-class&
&/listener&--&
&!--或者通过servlet加载--&
[color=brown]
&servlet-name&context&/servlet-name&
&servlet-class&
org.springframework.web.context.ContextLoaderServlet
&/servlet-class&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-name&action&/servlet-name&
&servlet-class&org.apache.struts.action.ActionServlet&/servlet-class&
&init-param&
&param-name&config&/param-name&
&param-value&/WEB-INF/struts-config.xml&/param-value&
&/init-param&
&init-param&
&param-name&debug&/param-name&
&param-value&3&/param-value&
&/init-param&
&init-param&
&param-name&detail&/param-name&
&param-value&3&/param-value&
&/init-param&
&load-on-startup&0&/load-on-startup& &/servlet& &servlet-mapping&
&servlet-name&action&/servlet-name&
&url-pattern&*.do&/url-pattern& &/servlet-mapping&
&servlet&&/web-app&
[color=red] 时机2:容器读取strut-config.xml[/color]
使用Struts插件在struts-config.xml中&plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"&&set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/&&/plug-in&这时需要对&action path=[color=blue]"/login"[/color] type=""/&配置中属性type做更改:
这里又有两种方法:
a 使用 org.springframework.web.struts.DelegatingActionProxy :
将所有的action type属性改为这个,这样做的好处是可以不用任何spring特定的类编写Struts Action,也有不足之处就是不太直观,所有的路径都映射到了一个类。这样也就有了第二种方法:
b 请求委托
&controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/&实际上这里内部是让spring去代理我们的action(由于jdk代理只能代理接口类,所以这里应该是cglib代理)。 与此同时,我们还需要对applicationContext.xml做相应修改 配置各种需要的bean。由于spring的dtd 规定id中不能出现"/",所以我们使用name定义path,这里path要求与struts-config.xml中path一致。
:&bean name="[color=blue]/login[/color]" class="com.time.struts.action.LoginAction"&在此过程中 发现 使用第一时机配置使用DWR可以正常使用 而使用第二时机不行。DWR配置
dwr.xml:&?xml version="1.0" encoding="UTF-8"?&&!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"& &dwr&
&create[color=orange] creator="spring"[/color] javascript="testDWR"&
&param [color=orange]name="beanName"[/color] value="[color=red]testDWR[/color]"&
&include method="test"/&
&/allow&&/dwr&spring中配置:&bean id="[color=red]testDWR[/color]" class="com.time.util.TestDWR"&&/bean&
Struts1.X与Spring集成——第一种方案
spring+struts(第一种方案)
集成原理:在Action中取得BeanFactory,通过BeanFactory取得业务逻辑对象
一,新建一个项目Spring_Struts_01,项目结...
springmvc和DWR的整合
首先定义运行环境:
jdk:1.8tomcat:8.5.11spring:4.3.9mybatis:3.4.4mybatis-spring:1.3.0dwr:3.0
注意此处的问题!!
若要使用d...
DWR+SpringMVC整合的3种方式之三
方式三:这种方式和方式二差不多,主要使用annotation配置和注解
说明:这种的耦合度也是和方式二差不多,本人最推荐用方式一,写的清楚,配置也清楚。这种方式的时候也遇到了一个很无语的问题,我原来...
Spring完全整合DWR
DWR的优势在项目中很容易体现出来,近乎完美的封装,超级简单的配置,在现在的Web项目中不使用DWR不是明智的举动。
给人直观的感觉就是可以在JSP页面中直接调用Service Bean中的方法...
spring4整合dwr3
在使用dwr插件必先下载dwr的jar包及所依赖的jar包,此处不赘述。
在web.xml中的配置如下:
org.directwebremoting.se...
DWR+SpringMVC整合的3种方式之一
早上写了一篇dwr的基础文章,下午看了孔浩老师的dwr与springmvc的整合视频,自己跟着动手把各种方式都练习了一下,遇到些问题,记录给自己以后用dwr的时候复制吧。
方式一:各干各的,耦合度...
spring boot完美集成dwr3.0.2-RELEASE
第一步:注册SpringDwrServlet到spring容器中
import java.util.HashM
import java.util.M
import org.spring...
struts1和spring的整合
1.先要在struts中配置 将spring的配置文件加载进actionservlet总控中以便等会进行使用 这样可以避免在web.xml下进行配置
2.然后有三种方式,...
Springmvc整合dwr案例
1.DWR简介:
(Direct Web Remoting)是一个WEB远程调用框架.可以在客户端利用JavaScript直接调用服务端的Java方法并返回值
给JavaScript.就好像直接本...
Ajax框架之DWR学习(DWR 和Spring整合)-yellowcong
Spring和Dwr的整合,这个和Spring的整合方式,只是创建Bean的方式不一样,不是通过new 的方式,而是通过Spring注入,但是Dwr和SpringMvc的配置,就完全不一样了。...
没有更多推荐了,

我要回帖

更多关于 struts2生成jsp 的文章

 

随机推荐