J2EE实战留言本(升级应用篇)

来源:蓝色理想 作者:maxuan9 2007-12-03 出处:pcdog.com

apache  google  java  javascript  jsp  
上一页 1 2 3 4 5 6 7 8 9 10 下一页 

  有了Struts资源的调用,我们继续来完成JAVABEAN部分的编写!
首先,我们编写PAction.java文件来完成连接等初始化工作,源代码如下:
PAcation.java的源代码
package guestbook.maxuan.action;

import javax.naming.*;
import java.util.Properties;
import java.util.*;
import javax.rmi.PortableRemoteObject;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.MessageResources;
import guestbook.maxuan.ejb.control.*;

public class PAction extends Action{
//public ActionErrors errors = new ActionErrors();
public BookControl control = null;
public Context getInitialContext() {
String url = "t3://127.0.0.1:";
String user = null;
String password = null;
Properties properties = null;
ActionServlet actionServlet = this.getServlet();
String port = actionServlet.getServletConfig().
getInitParameter("port");
url = url + port;

try {
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,

"weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
if (user != null) {
properties.put(Context.SECURITY_PRINCIPAL, user);
properties.put(Context.SECURITY_CREDENTIALS,
password == null ? "" : password);
}

return new InitialContext(properties);
}
catch(Exception e) {
e.printStackTrace();
}
return null;
}

public BookControl getInitControl( ){
BookControl control = null;
Context ctx = getInitialContext();
try{
Object object = ctx.lookup("BookControl");
BookControlHome bookcHome =
 (BookControlHome) PortableRemoteObject.narrow(object, 

BookControlHome.class);
control = bookcHome.create();
}catch(Exception e){
e.printStackTrace();
}
return control;
}

}


接着我们编写LyListAction.java文件,得到所有的留言信息LIST。
LyListAction.java的源代码
package guestbook.maxuan.action;
import javax.naming.*;
import java.util.Properties;
import javax.rmi.PortableRemoteObject;
import java.util.*;

import java.util.Locale;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ForwardingActionForward;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.MessageResources;
import guestbook.maxuan.ejb.control.*;

public class LyListAction extends PAction{
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
Locale locale = getLocale(request);
HttpSession session = request.getSession();
Context ctx = (Context)session.getAttribute("ctx");

if(ctx==null){
ctx = getInitialContext();
session.setAttribute("ctx",ctx);
}

try{
Object object = ctx.lookup("BookControl");
BookControlHome bookHome =
(BookControlHome) PortableRemoteObject.narrow(object, 

BookControlHome.class);
BookControl bookControl = bookHome.create();
ArrayList lyList = bookControl.getLyList();
session.setAttribute("lyList",lyList);
}catch(Exception e){
e.printStackTrace();
}
return (mapping.findForward("success"));
}
}


由于我们需要新加留言,所以这次比上次的EJB教程多出了存储部份,留言需要一个FORM来提交,最后进行

存储,所以我们需要新加入LyForm.java、LyEditAction.java、LySaveAction.java三个文件的编写,源代

码如下:

LyForm.java的源代码
package guestbook.maxuan.action;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import guestbook.maxuan.ejb.entity.value.*;

public final class LyForm extends ActionForm{
public String action="add";
public String name;
public String email;
public String qq;
public String comment;
private BookValue value = new BookValue();

public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public BookValue getValue(){
value.setName(name);
value.setEmail(email);
value.setQq(qq);
value.setComment(comment);
value.setAction(action);
return value;
}
public void setValue(BookValue value){
name = value.getName();
email = value.getEmail();
qq = value.getQq();
comment = value.getComment();
action = value.getAction();
}
}


LyEditAction.java的源代码
package guestbook.maxuan.action;

import javax.naming.*;
import java.util.Properties;
import java.util.*;
import javax.rmi.PortableRemoteObject;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.MessageResources;
import guestbook.maxuan.action.PAction;
import guestbook.maxuan.ejb.entity.value.*;
import guestbook.maxuan.ejb.entity.*;
import guestbook.maxuan.ejb.control.*;
import java.util.Collection;

public class LyEditAction extends PAction{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
HttpSession session = request.getSession();
String action = request.getParameter("action");
Context ctx = (Context)session.getAttribute("ctx");
BookValue value =(BookValue) request.getAttribute("value");
//errors.clear();
if (form == null) {
form = new LyForm();
if ("request".equals(mapping.getScope())) {
request.setAttribute(mapping.getAttribute(), form);
} else {
session.setAttribute(mapping.getAttribute(), form);
}
}

if(ctx==null){
ctx = getInitialContext();
session.setAttribute("ctx",ctx);
}

LyForm lyForm = (LyForm) form;
if(action!=null){
lyForm.setAction(action);
}
if (value!=null){
try {
PropertyUtils.copyProperties(lyForm, value);
} catch (Exception e) {
}
}

return (mapping.findForward("success"));
}
}


LySaveAction.java的源代码
package guestbook.maxuan.action;

import javax.naming.*;
import java.util.Properties;
import java.util.*;
import java.text.*;
import javax.rmi.PortableRemoteObject;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import java.util.Vector;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.util.MessageResources;
import guestbook.maxuan.action.PAction;
import guestbook.maxuan.ejb.entity.value.*;
import guestbook.maxuan.ejb.entity.*;
import guestbook.maxuan.ejb.control.*;
import java.sql.*;

public final class LySaveAction extends PAction{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Locale locale = getLocale(request);
MessageResources messages = getResources(request);
HttpSession session = request.getSession();
BookValue value=null;
LyForm lyForm = (LyForm) form;
Context ctx = (Context)session.getAttribute("ctx");
//errors.clear();
if(control==null){
control=getInitControl();
session.setAttribute("control",control);
}
//errors = lyForm.check();

try {
Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter=
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置留言时间格式
String datestr = formatter.format
(new Timestamp(cal.getTime().getTime()));
value = lyForm.getValue();
value.setIp(request.getRemoteAddr());//写入访问者IP
value.setPosttime(datestr);
control.savely(value);
}catch(Exception e){
e.printStackTrace();
}
return (mapping.findForward("success"));
}
}


在上面,我将原本写在里面的检查语句都注释掉了,大家可以自己写进去,也就是对邮件,留言不能为空等检查,当然也可以在页面中写javascript小脚本,不过这对有心恶意捣乱的人没什么用!
PAction.java完成一些连接等初始动作,其它的分别为显示留言,提交留言等动作,也可以自行定义添加其它动作在里面!例如删除!

上一页 1 2 3 4 5 6 7 8 9 10 下一页 
上一篇:J2EE 实战开发EJB
下一篇:在J2ME/MIDP中实现图像旋转(二)