1.这次主要是针对portlet编程,首先建立java类TestDataPortlet extends GenericPortlet,重写doView、processAction、init和destroy。代码如下所示:
package com.tortrend.portlet;
import java.io.IOException;
import java.util.List;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletConfig;
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.WindowState;
import com.tortrend.general.TestDataBean;
import com.tortrend.general.TestDataDAOImpl;
public class TestDataPortlet extends GenericPortlet {
private static final String NORMAL_VIEW = "/test/normal.jsp";
private static final String MAXIMIZED_VIEW = "/test/maximized.jsp";
private static final String HELP_VIEW = "/test/help.jsp";
private PortletRequestDispatcher normalView;
private PortletRequestDispatcher maximizedView;
private PortletRequestDispatcher helpView;
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
System.out.println("testdataportlet doView ...");
PortletSession session = request.getPortletSession();
if ("delete".equals(request.getParameter("actionflag"))) {
int id = Integer.parseInt(request.getParameter("id"));
TestDataDAOImpl.delete(id);
System.out.println("testdataportlet doView delete");
} else if("adduser".equals(request.getParameter("actionflag"))) {
int id = TestDataDAOImpl.getCount() + 1;
TestDataBean tdb = new TestDataBean();
tdb.setId(id);
tdb.setName("wgj" + id);
tdb.setPassword("123");
TestDataDAOImpl.add(tdb);
System.out.println("testdataportlet doView add");
} else if("update".equals(request.getParameter("actionflag"))) {
int id = Integer.parseInt(request.getParameter("id"));
TestDataDAOImpl.update(id);
session.removeAttribute("test.list");
System.out.println("testdataportlet doView update");
}
int curp = request.getParameter("curp") != null ? Integer.parseInt(request.getParameter("curp")):1;
int pagesize = 5;
int totalNum = TestDataDAOImpl.getCount();
int totalPage = (totalNum + pagesize - 1 ) / pagesize;
List<TestDataBean> list = TestDataDAOImpl.getSome(curp, pagesize);
session.setAttribute("test.list", list);
session.setAttribute("test.curp", curp);
session.setAttribute("test.totalPage", totalPage);
if (WindowState.MINIMIZED.equals(request.getWindowState())) {
return;
}
if (WindowState.NORMAL.equals(request.getWindowState())) {
normalView.include(request, response);
} else {
maximizedView.include(request, response);
}
}
public void processAction(ActionRequest request, ActionResponse arg1)
throws PortletException, IOException {
if("Submit".equals(request.getParameter("actionflag"))) {
//System.out.println("testdataportlet processAction checklogin");
PortletSession session = request.getPortletSession();
String name = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("name=" + name);
System.out.println("password=" + password);
if(TestDataDAOImpl.checkLogin(name, password)) {
session.setAttribute("test.username", name);
List<TestDataBean> list = TestDataDAOImpl.getAll();
session.setAttribute("test.list", list);
//System.out.println("testdataportlet processAction checklogin success");
} else {
session.setAttribute("test.username", null);
//System.out.println("testdataportlet processAction checklogin failure");
}
} else if ("delete".equals(request.getParameter("actionflag"))) {
int id = Integer.parseInt(request.getParameter("id"));
TestDataDAOImpl.delete(id);
System.out.println("testdataportlet processAction delete");
}
}
public void init(PortletConfig config) throws PortletException {
super.init(config);
normalView = config.getPortletContext().getRequestDispatcher(
NORMAL_VIEW);
maximizedView = config.getPortletContext().getRequestDispatcher(
MAXIMIZED_VIEW);
helpView = config.getPortletContext().getRequestDispatcher(HELP_VIEW);
}
public void destroy() {
normalView = null;
maximizedView = null;
helpView = null;
super.destroy();
}
}
2.所对应的jsp代码如下:
<%@ page session="false" import="java.util.*,javax.portlet.*,com.tortrend.general.*" %>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects/>
<%
PortletSession session = renderRequest.getPortletSession();
String username = (String)session.getAttribute("test.username");
List<TestDataBean> list = (List<TestDataBean>)session.getAttribute("test.list");
int curp = (Integer)session.getAttribute("test.curp");
int totalPage = (Integer)session.getAttribute("test.totalPage");
int lastPage = curp - 1;
int nextPage = curp + 1;
//System.out.println("username=" + username);
%>
<DIV style="margin: 12px; margin-bottom: 36px">
<%
if (username != null) {
%>
Hello <%=username %>.<br><span><a href="<portlet:renderURL>
<portlet:param name="actionflag" value="adduser"/>
</portlet:renderURL>">add user</a></span>
<% if(list.size() > 0) { %>
<table border="1" width="80%">
<% for(TestDataBean tdb : list) { %>
<tr>
<td width="60%"><a href="#"><%=tdb.getName() %></a></td>
<td width="50px;"><a href="<portlet:renderURL>
<portlet:param name="actionflag" value="update"/>
<portlet:param name="id" value="<%=String.valueOf(tdb.getId()) %>" />
</portlet:renderURL>">EDIT</a></td>
<td width="50px;"><a href="<portlet:renderURL>
<portlet:param name="actionflag" value="delete"/>
<portlet:param name="id" value="<%=String.valueOf(tdb.getId()) %>" />
</portlet:renderURL>">DELETE</a></td>
</tr>
<% } %>
</table>
<% if(curp > 1) { %>
<span><a href="<portlet:renderURL>
<portlet:param name="curp" value="<%=String.valueOf(lastPage) %>"/>
</portlet:renderURL>">last page</a></span>
<% } else { %>
<span>last page</span>
<% } %>
<% if(curp < totalPage) { %>
<span><a href="<portlet:renderURL>
<portlet:param name="curp" value="<%=String.valueOf(nextPage) %>"/>
</portlet:renderURL>">next page</a></span>
<% } else { %>
<span>next page</span>
<% } %>
<% } %>
<%
}
%>
<FORM method="POST" action="<portlet:actionURL/>">
<INPUT name="username" type="text"/><br>
<INPUT name="password" type="password"/><br>
<INPUT name="actionflag" type="submit" value="Submit"/>
</FORM>
</DIV>
3.数据库处理文件
package com.tortrend.general;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class TestDataDAOImpl {
private static String DRIVER = "org.gjt.mm.mysql.Driver";
private static String URL = "jdbc:mysql://127.0.0.1:3307/protal";
private static String USERNAME = "root";
private static String PASSWORD = "root";
private static Connection conn = null;
private static PreparedStatement pst = null;
private static ResultSet rs = null;
static {
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static List<TestDataBean> getAll() {
List<TestDataBean> list = new ArrayList<TestDataBean>();
String sql = "select * from test_data";
try {
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next()) {
TestDataBean tdb = new TestDataBean();
tdb.setId(rs.getInt("id"));
tdb.setName(rs.getString("name"));
tdb.setPassword(rs.getString("password"));
list.add(tdb);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
public static List<TestDataBean> getSome(int page, int pagesize) {
List<TestDataBean> list = new ArrayList<TestDataBean>();
String sql = "select * from test_data order by id limit ?,?";
try {
pst = conn.prepareStatement(sql);
pst.setInt(1, (page - 1) * pagesize);
pst.setInt(2, pagesize);
rs = pst.executeQuery();
while(rs.next()) {
TestDataBean tdb = new TestDataBean();
tdb.setId(rs.getInt("id"));
tdb.setName(rs.getString("name"));
tdb.setPassword(rs.getString("password"));
list.add(tdb);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
public static boolean checkLogin(String name, String password) {
boolean flag = false;
String sql = "select name from test_data where name = ? and password = ?";
try {
pst = conn.prepareStatement(sql);
pst.setString(1, name);
pst.setString(2, password);
rs = pst.executeQuery();
if(rs.next()) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return flag;
}
public static int getCount() {
String sql = "select count(*) num from test_data";
try {
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
if(rs.next()) {
return rs.getInt("num");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
}
public static void add(TestDataBean tdb) {
String sql = "insert into test_data values(?, ?, ?)";
try {
pst = conn.prepareStatement(sql);
pst.setInt(1, tdb.getId());
pst.setString(2, tdb.getName());
pst.setString(3, tdb.getPassword());
pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void update(int id) {
String sql = "update test_data set name = ? where id = ?";
try {
pst = conn.prepareStatement(sql);
pst.setString(1, "wgj-update");
pst.setInt(2, id);
pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void delete(int id) {
String sql = "delete from test_data where id = ?";
try {
pst = conn.prepareStatement(sql);
pst.setInt(1, id);
pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
在portal.xml文件中配置一个portlet 配置对应的.psml文件,如下 一个特定的Subject通过doAs方法来执行一个特定的操作(Action) 一个演示第一个doAs方法的例子 Portlet对动作的处理过程 ...Jetspeed部署及其部署管理器
Jetspeed是Apache组织开发的一个...Apache开源组织的企业门户项目,现有两个版本:jetspeed1与jetspeed2。由于jetspeed1在设计上的“缺陷”,现在已经升级到jetspeed2。目前大陆还没有成功使用jetspeed2开发的案例。
关于Jetspeed一些入门的文档,适合初次接触Jetspeed的用户
jetspeed2样式的开发文档,汉化的
Jetspeed2之安装配置文档详细说明了jetspeed2安装已经配置,还有常见问题的解决
包含jetspeed1.* 以及 jetspeed2.*的资料 本人找了好久! 希望大家支持!
学习Jetspeed2时和同事一起对文档进行的简单翻译,适合初学者。
在这篇教程中,您将了解如何使用象 JavaServer Pages(JSP)这样的 Web 编程技术开发基于 Jetspeed 的更动态的 portlet,以及如何使内容流入 WML portlet。还将提到几个 Jetspeed 文档中未提及的技巧,它们可以使您...
朋友翻译的Jetspeed2之安装配置.doc,网上找到的JetSpeed2开发文档的中文翻译.pdf 。还有一份Jetspeed2总结.docx是以前公司同事总结的。
NULL 博文链接:https://helloklzs.iteye.com/blog/1150044
与Jetspeed1.x比较,Jetspeed2.0 (以下简称J2)的架构发生了很大变化, J1.x使用了Turbine,在J2中Turbine不再使用, 而是使用了Spring Framework作为默认的组件框架,从官方的资料介绍看,J2架构支持将一种组件...
Apache的门户技术 Jetspeed2的详细开发文档,包含框架介绍,技术内容,各种入门资源链接等
自己收集的一些jetspeed资料
基于jetspeed的portlet开发探讨,供大家学习参考!!!!
Jetspeed安装与portlet开发.pdf
NULL 博文链接:https://abcity.iteye.com/blog/1446748
jetspeed中文文档,包括现在很多中文的jetspeed的介绍,是html形式的
一步步教你如何建自定义门户,让你轻松掌握JETSPEED,看下对你有帮助没
以一个实例形式讲解基于jetspeed2.0的portlet二次开发。
jetspeed-api-2.0的lib包