有了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完成一些连接等初始动作,其它的分别为显示留言,提交留言等动作,也可以自行定义添加其它动作在里面!例如删除!
出处:蓝色理想
责任编辑:蓝色
上一页 [J2EE] 实战留言本 [5] 下一页 [J2EE] 实战留言本[7]
◎进入论坛网络编程版块参加讨论
|