JSR286portlet中使用Ajax的方法
JSR286portlet支持Ajax
一个平常的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>
在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("=========================");
} }
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>
被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
被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的方法的更多相关文章
- 关于jQuery中的ajax的方法介绍
jQuery提供一系列Ajax函数方便我们调用Ajax, 其中最核心也是最复杂的是jQuery.ajax(),所有的其他Ajax函数都是它的一个简化调用.当我们想要完全控制Ajax时可以 ...
- Ajax.ActionLink()方法的使用
第一句话都会这么去写:程序猿就是苦逼,除了开发还要会写博文!哎,今天就和大家一起讨论下Ajax的辅助方法ActionLink的使用,如果有讲的不好的地方或错的地方,请大家务必扔板砖,要投准哦,砸死我算 ...
- 三种实现AJAX的方法以及Vue和axios结合使用的坑
前言 之前曾经想自己写一个天气的App,并找到了一个免费的天气数据接口的服务商--和风天气,当时也不懂怎么发HTTP请求,而且也只会用Java语言,看到官方文档里面有一个Java代码示例,就复制了一下 ...
- 用JQuery中的Ajax方法获取web service等后台程序中的方法
用JQuery中的Ajax方法获取web service等后台程序中的方法 1.准备需要被前台html页面调用的web Service,这里我们就用ws来代替了,代码如下: using System; ...
- ThinkPHP中使用ajax接收json数据的方法
本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ...
- jQuery中操作Ajax方法小结
有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺 jQery对Ajax操作进行了封装,常见的 ajax()属于最底层的方法,使用频率很高的 ...
- $.ajax()方法详解 jquery中的ajax方法
jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...
- jQuery中的$.ajax()方法
jQuery中的$.ajax()方法 $.ajax({ type:"POST", url:"../page/user.action?userId=" + use ...
- jquery中的ajax方法参数
引用来自:http://www.cnblogs.com/tylerdonet/p/3520862.html jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String ...
随机推荐
- OllyDbg使用笔记
[TOC] OD步过后,返回到之前某位置,重新单步执行 找到你想返回的行, 右键选择New origin here,快捷键Ctrl+Gray *, 然后程序会返回到这一行,再次按F7或者F8等执行即可
- tiff图片拆分
本程序下载地址: tiff格式的图片可以由多张图片合成, 也可以拆分为多张图片.不管是合成或者拆分,都借助了第三方开源库Cximage,对于这个图像库的使用,我们没有必要去一行一行的去看它的代码实现, ...
- odoo11 访问MSQL Server等第三发数据源
odoo框架默认的访问时Postgres数据库,但在实际的应用场景中,不可避免的使用到其他数据库,所以有必要研究如何连接其他第三方数据库,这里分享下OCA的相关模块,具体的源代码在这里. 我将第三方的 ...
- You earned your Program Management Professional (PgMP)® Credential
You earned your Program Management Professional (PgMP)® Credential. pasting
- 【Swift 2.2】iOS开发笔记(三)
1.UITableView 中调用 UIButton 的 setTitle 会闪 滚动列表时比较明显,解决办法: buttonType 改成 custom 即可,但是这样一来 UIButton 的高亮 ...
- idea的一些好用的第三方插件
用了Idea真的回不去Eclipse了,安利一波. 这里记录一些好用的插件. GenerateAllSetter 这个插件是用在写代码的时候调用Setter的时候能一次性把实体类中的所有Setter方 ...
- Bean之间的关系
Bean之间主要有继承和依赖的关系,这里的继承并不是我们面向对象里面所提到的继承. 继承 我们先来创建一个新的配置文件beans-relation.xml <bean id="addr ...
- params.success && params.success(res.data)
params.success && params.success(res.data) 只有success 为真,才执行后边的代码
- linux 定时下载github最新代码
场景:网站的代码在github上托管,静态网站部署在服务器上,每次自己修改完本地代码后,提交到github上,需要自己去服务器上执行git pull 拉取最新代码, 为了解决这种操作,自己再服务器上 ...
- Java自定义异常类以及异常拦截器
自定义异常类不难,但下面这个方法,它的核心是异常拦截器类. 就算是在分布式系统间进行传递也可以,只要最顶层的服务有这个异常拦截器类(下例是在 springboot 项目中) 1.自定义异常类,继承自 ...