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;
}
}