Java Web 网络留言板5 (javaBean技术)

addMessage.jsp

代码;

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@ include file="/header.jsp"%> <style> * { font-family: "宋体"; font-size: 14px } </style> <script type="text/javascript" src="<%=context%>/js/validation-framework.js"></script> <script type="text/javascript" src="<%=context%>/fckeditor/fckeditor.js"></script> <p align="center">  请您输入留言 </p> <p align="center">  <a href="<%=context%>/servlet/getMessages">查看留言</a> </p> <form id="form1" name="form1" method="post"  action="<%=context%>/servlet/addMessage"   

*****************************************************************************

*****************************************************************************

*****************************************************************************

说明:<%=context%>/servlet/addMessage中的<%=context%>这个是获得整个web项目的                                 

的名字,如项目名称为:guestbook6,那么action="<%=context%>/servlet/addMessage"                                 

就等价于action="guestbook6/servlet/addMessage",使用这种方法的好处在那里呢?

就在于对于修改项目名称的灵活性,比如:现在,我们觉得我们必须得修改我们的项目名称,

如修改为:guestbook7,如果我们不是用的是这种方法的话,当然也可以,只是我们要修改所有涉及到

项目名称的地方,这不免给我们造成很大的时间开销。但是如果我们使用这种方式,即便我们修改了项目名称,

丝毫不会影响我们的项目的运行。这就是他的好处之所在了。

可以大大给我们节约时间。

*****************************************************************************

*****************************************************************************

*****************************************************************************

 onsubmit="return doValidate(this)">  <table width="650" height="400" border="0" align="center">   <tr>    <td width="150">姓名:</td>    <td width="500">     <input name="name" type="text" id="name" size="40" maxlength="20" />    </td>   </tr>   <tr>    <td>E-Mail:</td>    <td>     <input name="email" type="text" id="email" size="40" maxlength="40" />    </td>   </tr>   <tr>    <td>电话:</td>    <td>     <input name="phone" type="text" id="phone" size="40" maxlength="20" />    </td>   </tr>   <tr>    <td>主题:</td>    <td>     <input name="title" type="text" id="title" size="80" maxlength="80" />    </td>   </tr>   <tr>    <td valign="top">内容:</td>    <td>     <script type="text/javascript">     var oFCKeditor = new FCKeditor("content");     oFCKeditor.BasePath = '<%=context%>/fckeditor/' ;     oFCKeditor.Height = 300 ;     oFCKeditor.ToolbarSet = 'Basic';     oFCKeditor.Create() ;     </script>    </td>   </tr>   <tr>    <td></td>    <td>     <input type="submit" name="Submit" value="提交" />     <input type="reset" name="Reset" value="重置" />    </td>   </tr>  </table> </form> <%@ include file="/footer.htm"%>

AddMessageServlet.java

代码:

package webbook.guestbook;

import java.io.IOException; import java.text.SimpleDateFormat; import javax.servlet.ServletException; import javax.servlet.http.*; import webbook.util.*;

public class AddMessageServlet extends HttpServlet {  private static final long serialVersionUID = -8349454122547148005L;

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   String sql = "insert into guestbook (id,name,email,phone,title,content,time) values(gb_seq.nextval,?,?,?,?,?,?)";   int result = 0;   String message = "";   request.setCharacterEncoding("utf-8");   String name = request.getParameter("name");   String title = request.getParameter("title");

  if (StringUtil.validateNull(name)) {    message = "对不起,姓名不能为空,请您重新输入!<br>";   } else if (StringUtil.validateNull(title)) {    message = "对不起,主题不能为空,请您重新输入!<br>";   } else {    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");    String param[] = { StringUtil.filterHtml(name), StringUtil.filterHtml(request.getParameter("email")),      StringUtil.filterHtml(request.getParameter("phone")), StringUtil.filterHtml(title),      request.getParameter("content"), sdf.format(new java.util.Date()) };    OracleUtil db = new OracleUtil("java:/comp/env/jdbc/oracleds");    db.init();    result = db.update(sql, param);    if (result == 0) {     message = "对不起,添加留言不成功,请您重新输入!<BR>";    } else {     message = "祝贺您,成功添加留言。<BR>";    }   }   request.setAttribute("message", message);   request.getRequestDispatcher("/addResult.jsp").forward(request, response);  } }

addResult.jsp

代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@ include file="/header.jsp" %> <style> * { font-family: "宋体";font-size: 14px} </style> <%=request.getAttribute("message")%> <a href="<%=context %>/addMessage.jsp">添加新的留言</a><BR> <a href="<%=context %>/servlet/getMessageServlet">查看所有留言内容</a><BR> <%@ include file="/footer.htm"%>

GetMessageServlet.java

代码:

package webbook.guestbook;

import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.*; import org.apache.commons.dbutils.handlers.BeanListHandler; import webbook.util.OracleUtil;

public class GetMessagesServlet extends HttpServlet {  private static final long serialVersionUID = 5964428201228635704L;

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {   String sql = "select * from guestbook order by id desc";   List list = null;   OracleUtil db = new OracleUtil("java:/comp/env/jdbc/oracleds");   db.init();   list = (List) db.query(sql, null, new BeanListHandler(Guestbook.class));   HttpSession session = request.getSession();   session.setAttribute("results", list);   response.sendRedirect("/guestbook6/getMessages.jsp");  } }

getMessages.jsp

代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@page import="webbook.guestbook.Guestbook"%> <%@ include file="/header.jsp"%> <style> * {font-family: "宋体";font-size: 14px} </style> <center>  <a href="<%=context%>/addMessage.jsp">添加新的留言内容</a><br>  留言内容<br><br>  <%   List list = (List)session.getAttribute("results");    if(list!=null){   for (int i = 0; i < list.size(); i++) {    Guestbook gb = (Guestbook) list.get(i);  %>  <table width="600" border="1" bordercolor="000000"   style="table-layout: fixed; word-break: break-all">   <tr>    <td width="100" bordercolor="ffffff">     编号:    </td>    <td width="500" bordercolor="ffffff"><%=gb.getId()%></td>   </tr>   <tr>    <td bordercolor="ffffff">     姓名:    </td>    <td bordercolor="ffffff"><%=gb.getName()%></td>   </tr>   <tr>    <td bordercolor="ffffff">     电话:    </td>    <td bordercolor="ffffff"><%=StringUtil.chanageNull(gb.getPhone(), "没填")%></td>   </tr>   <tr>    <td bordercolor="ffffff">     email:    </td>    <td bordercolor="ffffff"><%=StringUtil.chanageNull(gb.getEmail(), "没填")%></td>   </tr>   <tr>    <td bordercolor="ffffff">     主题:    </td>    <td bordercolor="ffffff"><%=gb.getTitle()%></td>   </tr>   <tr>    <td valign="top" bordercolor="ffffff">     内容:    </td>    <td valign="top" bordercolor="ffffff"><%=StringUtil.chanageNull(gb.getContent(), "没填")%></td>   </tr>   <tr>    <td bordercolor="ffffff">     时间:    </td>    <td bordercolor="ffffff"><%=gb.getTime()%></td>   </tr>  </table>  <br>  <%}}%> </center> <%@ include file="/footer.htm"%>

javaBean:

Guestbook.java

代码:

package webbook.guestbook;

public class Guestbook {  private String content;  private String email;  private Integer id;  private String name;  private String phone;  private String time;  private String title;

 public String getContent() {   return content;  }

 public void setContent(String content) {   this.content = content;  }

 public String getEmail() {   return email;  }

 public void setEmail(String email) {   this.email = email;  }

 public Integer getId() {   return id;  }

 public void setId(Integer id) {   this.id = id;  }

 public String getName() {   return name;  }

 public void setName(String name) {   this.name = name;  }

 public String getPhone() {   return phone;  }

 public void setPhone(String phone) {   this.phone = phone;  }

 public String getTime() {   return time;  }

 public void setTime(String time) {   this.time = time;  }

 public String getTitle() {   return title;  }

 public void setTitle(String title) {   this.title = title;  } }

OracleUtil.java

代码:

package webbook.util;

import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler;

public class OracleUtil {  private String dataSourceName;  private DataSource ds;

 public OracleUtil(String dataSourceName) {   this.dataSourceName = dataSourceName;    }

 public OracleUtil() {    }

 public void setDataSourceName(String dataSourceName) {   this.dataSourceName = dataSourceName;  }

 public void init() {   Context initContext;   try {    initContext = new InitialContext();    ds = (DataSource) initContext.lookup(dataSourceName);   } catch (NamingException e) {    e.printStackTrace();   }  }

//跟新数据库中数据,包括插入,删除,修改

 public int update(String sql, String[] param) {   int result = 0;   QueryRunner qr = new QueryRunner(ds);   try {    result = qr.update(sql, param);   } catch (SQLException e) {    e.printStackTrace();   }   return result;  }

//query(String sql, String[] param, ResultSetHandler rsh)方法是定义数据库的查询

参数:sql:查询的sql语句,

 params:传递的参数

   rsh:BeanListHandler的对象

 public Object query(String sql, String[] param, ResultSetHandler rsh) {   QueryRunner qr = new QueryRunner(ds);   Object result = null;   try {    result = qr.query(sql, param, rsh);   } catch (SQLException e) {    e.printStackTrace();   }   return result;  } }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码匠的流水账

聊聊storm的LoggingClusterMetricsConsumer

本文主要研究一下storm的LoggingClusterMetricsConsumer

9130
来自专栏函数式编程语言及工具

Akka(24): Stream:从外部系统控制数据流-control live stream from external system

 在数据流应用的现实场景中常常会遇到与外界系统对接的需求。这些外部系统可能是Actor系统又或者是一些其它类型的系统。与这些外界系统对接的意思是在另一个线程...

241100
来自专栏积累沉淀

初识HtmlParser

1、概念 网页解析,即程序自动分析网页内容、获取信息,从而进一步处理信息。 htmlparser包提供方便、简洁的处理html文件的方法,它将html页面中...

23250
来自专栏禁心尽力

反射+自定义注解---实现Excel数据列属性和JavaBean属性的自动映射

简单粗暴,直奔主题。 需求:通过自定义注解和反射技术,将Excel文件中的数据自动映射到pojo类中,最终返回一个List<pojo>集合?   今天我只是通...

52390
来自专栏Ldpe2G的个人博客

Graphviz4S ---- 在Scala中使用DOT语言绘图的开源工具

之前需要在Scala中用到类似python的graphviz库的功能,用来在Mxnet中可视化网络结构,

17640
来自专栏算法修养

PAT 1018 Public Bike Management(Dijkstra 最短路)

1018. Public Bike Management (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16...

37390
来自专栏一个会写诗的程序员的博客

DuplicateFileException: Duplicate files copied in APK META-INF/LICENSEDuplicateFileException: Duplic

10520
来自专栏拂晓风起

SWF运行时判断两个DisplayObject是否同个类型,属于flash professional库中的同一个元件

11830
来自专栏小灰灰

java redis 通用组建

前言 redis 是个干嘛的 ? 看官网:http://redis.io/ 一句话,这里redis当做缓存(或者本来就是), 利用java写一个jedis的读...

27870
来自专栏calmound

struts2+Hibernate实现用户登陆功能

实现的功能,在登陆页面输入Username和PassWord后,将username和password通过Hibernate匹对数据库是否含有一样的usernam...

35090

扫码关注云+社区

领取腾讯云代金券