java實(shí)現(xiàn)留言板功能實(shí)例
JSP+JavaBean的留言板技術(shù)
<span style="font-size:16px;">Messages.html
<HTML></span><span style="font-size:16px;"><HEAD> <TITLE> message board </TITLE></HEAD>
<BODY> <center>留言板</center>
<FORM action="addMessage.jsp" >
<TABLE border=1 align="center">
<TR><TD>姓名:</TD><TD><input type="text" name="name" size=25>
</TD></TR>
<TR><TD>E-mail:</TD>
<TD><input type="text" name="email" size=25></TD></TR>
<TR><TD>主題:</TD>
<TD><input type="text" name="title" size=25></TD></TR>
<TR><TD>留言:</TD>
<TD><textarea name="content" rows=7 cols=25></textarea>
</TD></TR>
<TR><TD colspan=3>
<TABLE align="center" width="100%" cellspacing="0" cellpadding="0" >
<TR>
<TD align="center"><input type="submit" value="提交留言"></TD>
<TD align="center">
<a href="viewMessages.jsp" rel="external nofollow" ><font size=2>查看留言</font></a></TD>
<TD align="center"><input type="reset" value="重新填寫"></TD>
</TR></TABLE></TD> </TR></TABLE></FORM></BODY></HTML></span>
?
<span style="font-size:16px;">MessageData.java
package message;
public class MessageData
{ private String name,email,title,content;
//setter或者getter方法
public void setName(String name){this.name=name;}
public void setEmail(String email){ this.email=email;}
public void setTitle(String title){ this.title=title;}
public void setContent(String content){this.content=content;}
public String getName(){ return this.name;}
public String getContent(){ return this.content;}
public String getTitle(){ return this.title;}
public String getEmail(){ return this.email;}}</span>
?
<span style="font-size:16px;">viewMessages.jsp
<%@ page contentType="text/html; charset=GBK" import="message.MessageData" %>
<%@ page import="java.util.*"%>
<jsp:useBean id="myBean" class="message.MessageBean" scope="page"/>
<HTML><HEAD><TITLE> show the message in the table </TITLE></HEAD>
<BODY><p align="center">所有留言</p>
<TABLE align="center" width="80%" border=1 >
<%
int message_count=0;
Collection <MessageData> messages=myBean.getAllMessage();
Iterator <MessageData> it=messages.iterator();
while(it.hasNext()){ MessageData mg=(MessageData)it.next();
%>
<tr>
<td width="20%">留言人:</td>
<td width="23%"><%=mg.getName()%></td>
<td width="58%" align="center"><% out.println(
"<a href=mailto:"+mg.getEmail()+">"+mg.getEmail()+"</a>");
%></td></tr>
<tr>
<td width="20%">主題:</td>
<td colspan="3"><%=mg.getTitle()%></td>
</tr>
<tr>
<td width="20%">內(nèi)容:</td>
<td colspan="3"><%=mg.getContent()%></td>
</tr>
<% message_count++;
}
%>
</Table>
<p align="center"><a href="Messages.html" rel="external nofollow" >我要留言</a></p>
</body></html></span>
?
<span style="font-size:16px;">addMessage.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<jsp:useBean id="Mdata" class="message.MessageData" scope="page">
<jsp:setProperty name="Mdata" property="*"/></jsp:useBean>
<jsp:useBean id="myBean" class="message.MessageBean" scope="page"/>
<HTML><HEAD><TITLE> message into table </TITLE></HEAD>
<BODY>
<% try { myBean.setMessage(Mdata); myBean.addMessage(); }
catch(Exception e) { e.printStackTrace();}
%>
<jsp:forward page="viewMessages.jsp" />
</body></html></span>
?
<span style="font-size:16px;">MessageData.java
package message;
public class MessageData
{ private String name,email,title,content;
//setter或者getter方法
public void setName(String name){this.name=name;}
public void setEmail(String email){ this.email=email;}
public void setTitle(String title){ this.title=title;}
public void setContent(String content){this.content=content;}
public String getName(){ return this.name;}
public String getContent(){ return this.content;}
public String getTitle(){ return this.title;}
public String getEmail(){ return this.email;}}</span>
?
<span style="font-size:16px;">MessageBean.java
package message;
import java.sql.*; //引入java.sql包
import java.util.*;
public class MessageBean {
private Connection con; MessageData msg;
public MessageBean()
{ String JDriver="com.mysql.jdbc.Driver"; //定義驅(qū)動(dòng)程序?qū)ο?
String userName="root"; //定義數(shù)據(jù)庫用戶名
String userPasswd=""; //定義數(shù)據(jù)庫存取密碼
String dbName="message"; //定義數(shù)據(jù)庫名
String conURL="jdbc:mysql://localhost:3306/"+dbName;
try{Class.forName(JDriver).newInstance(); //加載JDBC驅(qū)動(dòng)程序
con=DriverManager.getConnection(conURL,userName,userPasswd);
//連接數(shù)據(jù)庫
}
catch(Exception e){System.err.println(e.getMessage());}
}
public void setMessage(MessageData msg) {this.msg=msg;}
// 添加一條留言消息
public void addMessage()throws Exception
{ try{ byte b1[]=msg.getTitle().getBytes("ISO-8859-1");
String ti=new String(b1);
byte b2[]=msg.getName().getBytes("ISO-8859-1");
String na=new String(b2);
byte b3[]=msg.getEmail().getBytes("ISO-8859-1");
String em=new String(b3);
byte b4[]=msg.getContent().getBytes("ISO-8859-1");
String c=new String(b4);
PreparedStatement stm=con.prepareStatement(
"insert into messagetable values(?,?,?,?)");
stm.setString(1,ti); stm.setString(2,na);
if((msg.getEmail()).length()==0)stm.setString(3,"");
else stm.setString(3,em);
stm.setString(4,c);
try {stm.execute(); stm.close(); }
catch(Exception e) { }
con.close(); //關(guān)閉數(shù)據(jù)庫連接
}
catch(Exception e){ e.printStackTrace(); throw e;}
}
// 獲得所有留言消息,并返回結(jié)果到JSP頁面
public Collection<MessageData> getAllMessage()throws Exception
{ Collection<MessageData> ret=new ArrayList<MessageData>();
try{ Statement stm=con.createStatement();
ResultSet result=stm.executeQuery(
"select count(*) from messagetable");
int message_count=0;
if(result.next()){ message_count=result.getInt(1);
result.close(); }
if(message_count>0)
{ result=stm.executeQuery("select * from messagetable ");
while(result.next())
{ String title=result.getString("title");
String name=result.getString("name");
String email=result.getString("email");
String content=result.getString("content");
MessageData message=new MessageData();
message.setTitle(title); message.setName(name);
message.setEmail(email); message.setContent(content);
ret.add(message);
}
result.close(); stm.close();
}
con.close();
}
catch(Exception e)
{ e.printStackTrace(); throw e; }
return ret;
}
}</span>
功能簡(jiǎn)單的留言板,但是清楚的說明了JSP+JavaBean技術(shù)的運(yùn)用,需要的朋友可以參考
相關(guān)文章
在SpringBoot中整合數(shù)據(jù)源的示例詳解
這篇文章主要介紹了在SpringBoot中如何整合數(shù)據(jù)源,本文介紹了如何在SpringBoot項(xiàng)目中整合常見的數(shù)據(jù)源,包括JdbcTemplate、MyBatis和JPA,并探討了如何配置和使用多數(shù)據(jù)源,需要的朋友可以參考下2023-06-06
Java實(shí)現(xiàn)post請(qǐng)求詳細(xì)代碼(帶有參數(shù))
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)帶有參數(shù)post請(qǐng)求的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-08-08
使用SpringBoot與Thrift實(shí)現(xiàn)RPC通信的方式詳解
在微服務(wù)架構(gòu)的世界里,服務(wù)間的通信機(jī)制選擇成為了關(guān)鍵決策之一,RPC因其簡(jiǎn)潔、高效的特點(diǎn)備受青睞,本文將詳細(xì)探討如何利用Spring?Boot和Thrift框架構(gòu)建RPC通信,讓讀者理解其內(nèi)在原理及實(shí)現(xiàn)方式,需要的朋友可以參考下2023-10-10
Java的Socket實(shí)現(xiàn)長(zhǎng)連接以及數(shù)據(jù)的發(fā)送和接收方式
這篇文章主要介紹了Java的Socket實(shí)現(xiàn)長(zhǎng)連接以及數(shù)據(jù)的發(fā)送和接收方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
SpringBoot應(yīng)用啟動(dòng)慢的原因分析及優(yōu)化方法
在使用Spring Boot進(jìn)行開發(fā)時(shí),快速啟動(dòng)應(yīng)用程序是一個(gè)非常重要的需求,然而,在某些情況下,我們會(huì)遇到Spring Boot應(yīng)用啟動(dòng)緩慢的問題,本文將分析Spring Boot應(yīng)用啟動(dòng)慢的常見原因,并提供一些優(yōu)化方法,需要的朋友可以參考下2024-08-08
如何把第三方服務(wù)注冊(cè)到spring項(xiàng)目容器中
這篇文章主要為大家介紹了如何把第三方服務(wù)注冊(cè)到spring項(xiàng)目容器中,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Java JVM原理與調(diào)優(yōu)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。下面通過本文給大家介紹jvm原理與調(diào)優(yōu)相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2017-04-04
Spring Cloud微服務(wù)使用webSocket的方法
WebSocket在現(xiàn)代瀏覽器中的應(yīng)用已經(jīng)算是比較普遍了,在某些業(yè)務(wù)場(chǎng)景下,要求必須能夠在服務(wù)器端推送消息至客戶端,本文給大家介紹Spring Cloud微服務(wù)使用webSocket的方法,感興趣的朋友一起看看吧2021-06-06

