JSR286portlet支持Ajax

  1. 一个平常的portlet先,jsr286类型。

    /Train01/WebContent/WEB-INF/portlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
    version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
    id="com.ibm.train01.Train01Portlet.17cae2de04">
    <portlet>
    <portlet-name>Train01</portlet-name>
    <display-name xml:lang="zh">Train01</display-name>
    <display-name>Train01</display-name>
    <portlet-class>com.ibm.train01.Train01Portlet</portlet-class>
    <init-param>
    <name>wps.markup</name>
    <value>html</value>
    </init-param>
    <expiration-cache>0</expiration-cache>
    <supports>
    <mime-type>text/html</mime-type>
    <portlet-mode>view</portlet-mode>
    </supports>
    <supported-locale>zh</supported-locale>
    <resource-bundle>com.ibm.train01.nl.Train01PortletResource</resource-bundle>
    <portlet-info>
    <title>Train01</title>
    <short-title>Train01</short-title>
    <keywords>Train01</keywords>
    </portlet-info>
    <portlet-preferences>
    <preference>
    <name>hehe</name>
    <value>1</value>
    </preference>
    </portlet-preferences>
    </portlet>
    <default-namespace>http://Train01/</default-namespace>
    </portlet-app>
  2. 在Portlet java类中加入serveResource(ResourceRequest request, ResourceResponse response)方法

    /Train01/src/com/ibm/train01/Train01Portlet.java

    package com.ibm.train01;
    
    import java.io.*;
    
    import javax.portlet.*;
    
    /**
    * A sample portlet
    */
    public class Train01Portlet extends javax.portlet.GenericPortlet {
    /**
    * @see javax.portlet.Portlet#init()
    */
    public void init() throws PortletException{
    super.init();
    } /**
    * Serve up the <code>view</code> mode.
    *
    * @see javax.portlet.GenericPortlet#doView(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
    */
    public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    // Set the MIME type for the render response
    response.setContentType(request.getResponseContentType());
    PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/WEB-INF/pages/view.jsp");
    rd.include(request,response); // or write to the response directly
    //response.getWriter().println("Train01#doView()");
    } /**
    * Serve up the <code>edit</code> mode.
    *
    * @see javax.portlet.GenericPortlet#doEdit(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
    */
    public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    // TODO: auto-generated method stub
    } /**
    * Serve up the <code>help</code> mode.
    *
    * @see javax.portlet.GenericPortlet#doHelp(javax.portlet.RenderRequest, javax.portlet.RenderResponse)
    */
    protected void doHelp(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    // TODO: auto-generated method stub
    } /**
    * Process an action request.
    *
    * @see javax.portlet.Portlet#processAction(javax.portlet.ActionRequest, javax.portlet.ActionResponse)
    */
    public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
    // TODO: auto-generated method stub
    } @Override
    public void serveResource(ResourceRequest request, ResourceResponse response)
    throws PortletException, IOException {
    //用printWriter直接输出
    //response.setCharacterEncoding("UTF-8");
    //PrintWriter writer = response.getWriter();
    //writer.print("今天是:"+new Date());
    String s = request.getPreferences().getValue("hehe", null);
    System.out.println(s+"----------------------------------");
    //用dispatcher().include()转发到jsp页面
    getPortletConfig().getPortletContext().getRequestDispatcher("/WEB-INF/pages/resource.jsp").include(request, response);
    System.out.println("=========================");
    } }
  3. view模式下的页面

    /Train01/WebContent/WEB-INF/pages/view.jsp

    <%@page language="java"
    contentType="text/html; charset=UTF-8" pageEncoding="utf-8" session="false"%>
    <%--portlet标签的uri是要改成http://java.sun.com/portlet_2_0的,
    这样子的是http://java.sun.com/portle不行的,不能使用下面的<portlet:resourceURL />这个标签的
    --%>
    <%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
    <%@taglib
    uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model"
    prefix="portlet-client-model"%><portlet-client-model:init>
    <portlet-client-model:require module="ibm.portal.xml.*" />
    <portlet-client-model:require module="ibm.portal.portlet.*" />
    </portlet-client-model:init>
    <portlet:defineObjects />
    <%
    String s = renderRequest.getPreferences().getValue("hehe",null);
    %>
    <%=s %><br />
    <a href="<portlet:resourceURL />">呵呵</a>
  4. 被resource的页面,可用来处理ajax请求,或者xxx。

    /Train01/WebContent/WEB-INF/pages/resource.jsp

    <%@page language="java"
    contentType="text/html; charset=UTF-8" pageEncoding="utf-8" session="false"%>
    <%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
    <%--听说这个
    <portlet-client-model:init>是不被支持的。所以下面的taglib没什么用。
    对比下view.jsp能看出来。--%>
    <%@taglib
    uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model"
    prefix="portlet-client-model"%>
    <portlet:defineObjects />
    <% //可以通过resourceRequest取到Preferences里面的值的。
    String s = resourceRequest.getPreferences().getValue("hehe",null);
    //通过request取到请求过来的参数什么的。
    String queryMail = request.getParameter("queryMail");
    String queryName = request.getParameter("queryName");
    %>
    <%=s %><br />
    dlksfjsdlkfjsdlkfjlkj
  5. 被resource的也可以是servlet,其实和jsp是一个道理,个人觉得用jsp在修改返回数据的时候会更加方便些。

    • 先定义个servlet

      /Train01/WebContent/WEB-INF/web.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      <display-name>Train01</display-name>
      <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
      <servlet-name>MyServlet.do</servlet-name>
      <servlet-class>com.ibm.train01.MyServlet</servlet-class>
      </servlet>
      <servlet-mapping>
      <servlet-name>MyServlet.do</servlet-name>
      <url-pattern>/MyServlet.do</url-pattern>
      </servlet-mapping>
      </web-app>

      /Train01/src/com/ibm/train01/MyServlet.java(片段)

      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      doPost(request, response);
      }
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setCharacterEncoding("utf-8");
      response.getWriter().write(new Date()+"");
      }
    • 然后把portlet类中的serveResource(ResourceRequest request, ResourceResponse response)

      public void serveResource(ResourceRequest request, ResourceResponse response)
      throws PortletException, IOException {
      String s = request.getPreferences().getValue("hehe", null);
      System.out.println(s+"----------------------------------");
      getPortletConfig().getPortletContext().getRequestDispatcher("/MyServlet.do").include(request, response);
      System.out.println("=========================");
      }

      方法里Dispatcher的路径改了就okkkk了。然后有个问题是呢。在自己的servlet里面怎么取到Preferences呢???
      在serveResource里面request.setAttribute("h","nihao");之后在 servlet里面 用HttpServletRequest类型的request.getAttribute("h")是能拿到值的。为什么呢?

JSR286portlet中使用Ajax的方法的更多相关文章

  1. 关于jQuery中的ajax的方法介绍

           jQuery提供一系列Ajax函数方便我们调用Ajax, 其中最核心也是最复杂的是jQuery.ajax(),所有的其他Ajax函数都是它的一个简化调用.当我们想要完全控制Ajax时可以 ...

  2. Ajax.ActionLink()方法的使用

    第一句话都会这么去写:程序猿就是苦逼,除了开发还要会写博文!哎,今天就和大家一起讨论下Ajax的辅助方法ActionLink的使用,如果有讲的不好的地方或错的地方,请大家务必扔板砖,要投准哦,砸死我算 ...

  3. 三种实现AJAX的方法以及Vue和axios结合使用的坑

    前言 之前曾经想自己写一个天气的App,并找到了一个免费的天气数据接口的服务商--和风天气,当时也不懂怎么发HTTP请求,而且也只会用Java语言,看到官方文档里面有一个Java代码示例,就复制了一下 ...

  4. 用JQuery中的Ajax方法获取web service等后台程序中的方法

    用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...

  5. ThinkPHP中使用ajax接收json数据的方法

    本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ...

  6. jQuery中操作Ajax方法小结

    有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺 jQery对Ajax操作进行了封装,常见的 ajax()属于最底层的方法,使用频率很高的 ...

  7. $.ajax()方法详解 jquery中的ajax方法

    jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...

  8. jQuery中的$.ajax()方法

    jQuery中的$.ajax()方法 $.ajax({ type:"POST", url:"../page/user.action?userId=" + use ...

  9. jquery中的ajax方法参数

    引用来自:http://www.cnblogs.com/tylerdonet/p/3520862.html jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String ...

随机推荐

  1. Openwrt无线中继设置并访问外网

    Openwrt无线中继设置并访问外网 本篇博文参考来自:http://blog.csdn.net/pifangsione/article/details/13162023 配置目标 主路由器使用AP模 ...

  2. Redis入门---字符串类型

    阅读目录 1.keys * 命令 2.判断一个键是否存在(exists key) 3.删除键 4.获取键值的数据类型 5 递增数字(incr) 6.增加指定的整数 (INCRBY) 7.减少指定的整数 ...

  3. Eruda 一个被人遗忘的移动端调试神器

    引言 ​ 日常工作中再牛逼的大佬都不敢说自己的代码是完全没有问题的,既然有问题,那就也就有调试,说到调试工具,大家可能对于fiddler.Charles.chrome devtools.Firebug ...

  4. 【学习总结】GirlsInAI ML-diary day-10-if条件执行

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day10 认识if条件执行 一般条件执行 分支执行 链式条件执行 嵌套条件执行 1-if一般条件执行 格式:如果(满足这个 ...

  5. Andriod App类型简介

    App三种类型与区别 原生应用程序:(Native App) 原生APP是什么?原生APP就是利用Android.iOS平台官方的开发语言.开发类库.工具进行开发.比如安卓的java语言,iOS的ob ...

  6. Python——模块——随机模块

    1.引用模块 import random 2.随机整数 random.randint(a,b) 3.随机浮点数 random.uniform(a,b) 4.从列表中随机取元素 random.choic ...

  7. linux 定时下载github最新代码

    场景:网站的代码在github上托管,静态网站部署在服务器上,每次自己修改完本地代码后,提交到github上,需要自己去服务器上执行git pull 拉取最新代码, 为了解决这种操作,自己再服务器上  ...

  8. luogu P2617 Dynamic Rankings && bzoj 1901 (带修改区间第k大)

    链接:https://www.luogu.org/problemnew/show/P2617 思路: 如果直接在主席树上修改的话,每次修改都会对后面所有的树造成影响,一次修改的复杂度就会变成 : n* ...

  9. 10.1 ES6 的新增特性以及简单语法

    ES6 的新增特性以及简单语法  let 和 const 模板字符串 箭头函数 对象单体模式 es6面向对象 模块化  let 和 const 之前一直用 var 来声明变量,ES6 新增 let 和 ...

  10. Codeforces 1082C Multi-Subject Competition(前缀+思维)

    题目链接:Multi-Subject Competition 题意:给定n名选手,每名选手都有唯一选择的科目si和对应的能力水平.并且给定科目数量为m.求选定若干个科目,并且每个科目参与选手数量相同的 ...