Portlet开发入门实例
1原生Portlet开发
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
public class NativePortlet implements Portlet { private Logger logger = LoggerFactory.getLogger(NativePortlet.class); private PortletConfig config; @Override public void init(PortletConfig portletConfig) throws PortletException { logger.info("初始化Portlet"); this.config = portletConfig; } @Override public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException, IOException { logger.info("处理Action动作"); logger.info("接收到POST请求,用户名为[{}]", actionRequest.getParameter("userName")); } @Override public void render(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException { logger.info("处理Render动作"); WindowState state = renderRequest.getWindowState(); if (state.equals(WindowState.MINIMIZED)) { return; } // doDispatch(); PortletMode mode = renderRequest.getPortletMode(); if (PortletMode.VIEW.equals(mode)) { // doView(); String normalPage = config.getInitParameter("ViewPage"); if (WindowState.NORMAL.equals(state)) { this.include(renderRequest, renderResponse, normalPage); } else { this.include(renderRequest, renderResponse, ""); } } else if (PortletMode.EDIT.equals(mode)) { // doEdit(); } else if (PortletMode.HELP.equals(mode)) { // doHelp(); } else { throw new PortletException("unknown portlet mode: " + mode); } } @Override public void destroy() { logger.info("销毁Portlet"); } private void include(RenderRequest request, RenderResponse response, String viewPage) throws PortletException, IOException { response.setContentType("text/html"); PortletContext context = config.getPortletContext(); PortletRequestDispatcher requestDispatcher = context.getRequestDispatcher(viewPage); requestDispatcher.include(request, response); }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
public class AnnotatedPortlet extends GenericPortlet { private Logger logger = LoggerFactory.getLogger(AnnotatedPortlet.class); /** * 进入主页面(View模式) * @param request * @param response * @throws Exception */ @RenderMode(name = "view") public void toIndexPage(RenderRequest request, RenderResponse response) throws Exception { getPortletContext(). getRequestDispatcher(getInitParameter("ViewPage")). include(request, response); } /** * 保存用户名 * @param request * @param response */ @ProcessAction(name = "saveUsername") public void saveUsername(ActionRequest request, ActionResponse response) { String userName = request.getParameter("userName"); logger.info("保存用户名[{}]", userName); } /** * 保存电子邮件地址 * @param request * @param response */ @ProcessAction(name = "saveEmail") public void saveEmail(ActionRequest request, ActionResponse response) { String email = request.getParameter("email"); logger.info("保存Email[{}]", email); }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%><%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%><%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%><portlet:defineObjects /><h3>这是一个演示FORM表单和AJAX提交的示例程序</h3><!-- FORM表单提交实例 --><form action='<portlet:actionURL name="saveUsername"/>' method="POST"> <tr> <td>用户名:</td> <td><input name="userName" type="text" /></td> </tr> <tr> <td><input type="submit" value="表单提交" /></td> </tr></form><!-- AJAX提交实例 --><tr> <td>Email:</td> <td><input id="email" type="text"/></td></tr><tr> <input id="ajaxBtn" type="button" value="AJAX提交" /></tr><script> $(".ajaxBtn").bind("click", function () { var email = $(".email").valueOf(); jQuery.ajax({ type: "GET", async: true, url: '<portlet:actionURL name="saveEmail" />', dataType: 'json', data: { "email": email }, success: function (data) { alert(data); }, error: function (data, status, e) { alert(e); }, beforeSend: function () { }, complete: function () { } }); });</script> |
Portlet开发入门实例的更多相关文章
- IOS开发入门实例
关于如何创建第一个 iOS 应用 本篇“第一个 iOS 应用”教程将向你介绍 iOS 应用开发中的“三个T”: Tools(工具)如何利用 Xcode 创建和管理工程. Technologies(技术 ...
- 【转】Android NDK开发入门实例
写这个,目的就是记录一下我自己的NDK是怎么入门的.便于以后查看,而不会忘了又用搜索引擎一顿乱搜.然后希望能够帮助刚学的人入门. 先转一段别人说的话:“NDK全称:Native Development ...
- java web 开发入门实例
学习是个技巧活,关键是要找到重点的地方,新手在这方面的坑尤其多.看别人的教程一步一步的跟着做,隔几步就遇到一个新知识点,忍不住就百度往深处了解,一晃半天就过去了. 有的知识点要深入学习的,有的是了解下 ...
- ArcgisAdd-In开发入门实例
1.开发环境 Vs2012+Arcgis10.2+win7 64bit 2.实现代码 首先在VS2012中新建一个解决方案,命名AddInTest. 接着,给解决方案AddInTest新建一个项目: ...
- Android NDK开发入门实例
AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合. 注意: AndroidNDK只能用于Android1.5及以上版本中. I. An ...
- Arcgis Add-In开发入门实例
作为一个本科侧重于应用,工作之后却做了开发的程序员来说,做GIS,开发应该是一门必修课,只是,苦于各种原因吧,做GIS应用的人会开发的很少,做GIS开发的大部分都是计算机出身,痛心疾首啊-- 不好意思 ...
- Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门
一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...
- destoon入门实例与常见问题
收集了一些destoon入门实例与常见问题,大家做个参考. 链接如下: destoon忘记后台密码怎么办?destoon找回管理员密码 忘记destoon管理员后台账号密码怎么办?解决方法 desto ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
随机推荐
- 【Bzoj 1835 基站选址】
基站选址的区间里隐藏着DP优化的机密…… 分析: 不论是做过乘积最大还是石子合并,或者是其他的入门级别的区间DP题目的人呐,大米并认为读题后就能够轻松得出一个简洁明了的Dp转移方程. ...
- hdu 5533(几何水)
Input The first line contains a integer T indicating the total number of test cases. Each test case ...
- [NOI2012]
来自FallDream的博客,未经允许,请勿转载,谢谢. 一天一套noi 简直了.... 昨天勉强做完了noi2011 今天教练又丢出来一套noi2012 去掉提答还有5题 勉强做了3题 先占个坑 ...
- 使用JAXB解析xml文件(一)
1.java中解析xml的几种方式 1.1 JDK原生dom形式 原理:一次性把xml读入内存,在内存中构建成树形结构.优点:对节点操作方便,缺点:需要大量的内存空间,浪费资源 1.2 SAX形式 ...
- Hash算法入门指南(聊点不一样的算法人生)
前言 很多人到现在为止都总是问我算法该怎么学啊,数据结构好难啊怎么的,学习难度被莫名的夸大了,其实不然.对于一个学计算机相关专业的人都知道,数据结构是大学的一门必修课,数据结构与算法是基础,却常常容易 ...
- Tomcat 报错的解决方法:The APR based Apache Tomcat Native library which allows optimal
下载 http://tomcat.heanet.ie/native/1.1.12/binaries/win32/tcnative-1.dll将这个文件复制到C:\WINDOWS\system32\,. ...
- 搭建一个交互式的前端构建环境.md
为了提高开发效率.减少重复的操作,现在几乎全部的前端项目都需要依赖一些构建工具来实现自动化打包,主流的有webpack, gulp, grunt等.加上各种各样的配置文件就会形成了一个相对复杂的构建环 ...
- 监控undo空间和临时段的使用情况
--1.监控undo空间情况 ),) free_space from dba_free_space where tablespace_name='UNDOTBS1' group by tablespa ...
- Vue 波纹按钮组件
代码链接:https://github.com/zhangKunUserGit/vue-component 效果图: 大家可以在线运行: https://zhangkunusergit.github. ...
- PHP 实例 AJAX 投票
AJAX 投票 在下面的实例中,我们将演示一个投票程序,通过它,投票结果在网页不进行刷新的情况下被显示. Do you like PHP and AJAX so far? Yes: No: 实例解释 ...