網頁內容
新增留言postIt.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>發佈留言</title>
<script type="text/javascript"
src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("#back").click(function() {
//location.href ="display.jsp";
history.back();
});
$('#myform').bind(
'submit',
function() {
//alert(123);
$('input[type=submit]', this).attr('disabled', 'disabled');
var value = {};
var x = 0;
var y = 0;
var temp = {};
var rtv = true;
//alert(123);
var elements = $(this).serializeArray();
//alert(123);
$.each(elements, function(i, element) {
var tempname = elements[i].name;
var tempvalue = elements[i].value;
if (rtv == true && tempname == "title"
&& tempvalue.trim() == "") {
EmptyAlert("標題");
rtv = false;
//break;
}
if (rtv == true && tempname == "name"
&& tempvalue.trim() == "") {
EmptyAlert("名字");
rtv = false;
//break;
}
if (rtv == true && tempname == "desc"
&& tempvalue.trim() == "") {
EmptyAlert("內容");
rtv = false;
//break;
}
});
if (rtv == true)
createIFrame();
//alert(123);
//this.removeAttr('disabled');
$('input[type=submit]', this).removeAttr('disabled');
return rtv;
});
});
function createIFrame() {
if (!document.getElementById("_hiddenframe")) {
var frame = document.createElement("iframe");
frame.setAttribute("name", "_hiddenframe1");
frame.setAttribute("src", "about:blank");
frame.setAttribute("frameborder", "0");
frame.setAttribute("height", "0");
frame.setAttribute("width", "0");
frame.setAttribute("id", "_hiddenframe");
frame.name = "_hiddenframe";
document.body.appendChild(frame);
window.frames._hiddenframe.name = "_hiddenframe";
document.getElementsByTagName("body")[0].appendChild(frame);
}
}
function EmptyAlert(str) {
alert(str + "不可為空白!");
}
function EmptyRadioAlert(str) {
alert("請選擇一個" + str + "項目!");
}
function nvl(str, value) {
if (str.blank())
return value;
else
return str;
}
</script>
<%=yslifes.tools.CommonDesc.script()%>
</head>
<body>
<form id="myform" name="myform" action="postAction.jsp" method="post"
target="_hiddenframe">
<table>
<tr>
<td>*標題</td>
<td><input type="text" name="title" /></td>
</tr>
<tr>
<td>*名稱</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>mail(不會公佈)</td>
<td><input type="text" name="mail" /></td>
</tr>
<tr>
<td>電話(不會公佈)</td>
<td><input type="text" name="tel" /></td>
</tr>
<tr>
<td colspan="2"><textarea cols="28" rows="10" name="desc"></textarea></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="發表留言" /><input
type="button" id="back" value="回留言區" /></td>
</tr>
</table>
</form>
</body>
</html>
留言新增動作postAction.jsp
<%@page import="org.apache.commons.lang.StringUtils"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%><%!private org.apache.log4j.Logger logger = org.apache.log4j.Logger
.getLogger(this.getClass());%>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>留言</title>
<%=yslifes.tools.CommonDesc.script()%>
</head>
<body>
<script type="text/javascrip">
<%String error = "";
String name = request.getParameter("name");
if (name == null || name.trim().equals(""))
error += "名稱必需填寫!\\r\\n";
String title = request.getParameter("title");
if (title == null || title.trim().equals(""))
error += "標題必需填寫!\\r\\n";
String mail = yslifes.tools.StringTool.nvl(
request.getParameter("mail"), "");
String tel = yslifes.tools.StringTool.nvl(
request.getParameter("tel"), "");
String desc = request.getParameter("desc");
if (desc != null)
desc = yslifes.tools.StringTool.reFormat(desc);
if (desc == null || desc.trim().equals(""))
error += "描述內容不可不填!\\r\\n";
else if (desc.length() > 2000)
error += "描述內容不可超過2000字元!\\r\\n";
if (error.equals("")) {
java.sql.Connection con = null;
java.sql.PreparedStatement ps = null;
try {
String sql = "insert into threads(post_name,post_title,post_mail,post_tel,post_desc) values(?,?,?,?,?)";
con = yslifes.db.DataSource.getConnection();
ps = con.prepareStatement(sql);
int idx = 0;
ps.setString(++idx, yslifes.tools.StringTool.reFormat(name));
ps.setString(++idx,
yslifes.tools.StringTool.reFormat(title));
ps.setString(++idx, yslifes.tools.StringTool.reFormat(mail));
ps.setString(++idx, yslifes.tools.StringTool.reFormat(tel));
ps.setString(++idx, desc);
logger.debug("PostAction:" + desc);
ps.executeUpdate();
} catch (java.sql.SQLException e) {
logger.info(e);
e.printStackTrace();
error = "資料操作錯誤!";
}
}
out.println("var message = '" + error + "'");%>
if (message == "") {
alert("存檔成功!");
top.location.replace("display.jsp");
} else {
alert(message);
}
</script>
</body>
</html>
留言列表及查詢功能
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%><%!private org.apache.log4j.Logger logger = org.apache.log4j.Logger
.getLogger(this.getClass());%><%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>留言顯示</title>
<style>
.thread
{
width:280px;
}
.thread .title
{
border:1px solid #00ff0a;
width:100%;
clear:both;
height:46px;
}
.thread .title .Info
{
float:left;
width:70%;
overflow:hidden;
height:100%
}
.thread .title .Info .userInfo
{
width:100%;
height:50%
}
.thread .title .Info .titleInfo
{
width:100%;
height:50%
}
.thread .title .postTime
{
float:left;
width:30%;
height:100%
overflow:hidden;
}
.thread .description
{
clear:both;
width:100%;
word-break: break-all;
border:1px solid #a0ff0a;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js">
</script>
<script type="text/javascript">
$(function() {
$("#postIt").click(function()
{
location.href ="postIt.jsp";
});
});
</script>
<%=yslifes.tools.CommonDesc.script()%>
<%String s = yslifes.tools.StringTool.nvl(request.getParameter("s"),""); %>
</head>
<body>
<button id="postIt">我要留言</button>
<form ><input type="text" name="s" value="<%=s %>" /><input type="submit" value="查詢"/></form>
<%
String where ="";
int per_page = 20;
int p = 1 ;
int p_num = 0;
String sp = request.getParameter("p");
if(sp!=null)
{
try
{
p = (Integer.parseInt(sp));
p_num = (p-1)*per_page;
}catch(Exception e)
{
}
}
if(!s.equals(""))
{
where = " and (x.post_title like ? or x.post_desc like ?) ";
}
String sql = "select x.* from threads x where x.post_state=1 and x.post_show = 1 "+where +" order by create_time desc limit ? ,"+per_page ;
String sqlCount = "select count(*) as totrec from threads x where x.post_state=1 and x.post_show = 1 "+where ;
logger.debug("SQL :"+sql);
logger.debug("SQL Count:"+sqlCount);
java.sql.Connection con = null;
java.sql.PreparedStatement ps = null;
java.sql.ResultSet rs =null;
int totrec = 0;
try
{
con = yslifes.db.DataSource.getConnection();
ps = con.prepareStatement(sqlCount);
int idx = 0;
if(!s.equals(""))
{
ps.setString(++idx,"%"+s+"%");
ps.setString(++idx,"%"+s+"%");
}
rs = ps.executeQuery();
if(rs.next())
totrec = rs.getInt("totrec");
yslifes.db.Close.Single(rs);
yslifes.db.Close.Single(ps);
if(totrec > 0 ) {
ps = con.prepareStatement(sql);
idx = 0;
if(!s.equals(""))
{
ps.setString(++idx,"%"+s+"%");
ps.setString(++idx,"%"+s+"%");
}
ps.setInt(++idx,p_num);
rs = ps.executeQuery();
while(rs.next()){
String title = rs.getString("post_title");
String desc = rs.getString("post_desc");
String name = rs.getString("post_name");
//String tel = yslifes.tools.StringTool.nvl(rs.getString("post_tel"),"");
//String phone = yslifes.tools.StringTool.nvl(rs.getString("post_tel"),"");
logger.debug(title);
logger.debug(desc);
logger.debug(name);
String create_time = yslifes.tools.DateTool.DateTimeFormat((rs.getTimestamp("create_time")));
String time[] = create_time.split(" ");
%>
<div class="thread">
<div class="title"><div class="Info">
<div class="userInfo"><%=name %></div>
<div class="titleInfo"><%=title %></div>
</div><div class="postTime"><%=time[0] %> <br/><%=time[1] %></div></div>
<div class="description"><%=desc %></div>
</div><%}}
}catch(java.sql.SQLException e){
logger.info(e);
e.printStackTrace();
}
logger.debug(totrec);
yslifes.tools.SubPages subpage = new yslifes.tools.SubPages(per_page, 41, p,
6, "display.jsp?s="+s+"&p=");
out.println("<div style='clear:both'>"+subpage.subPageCss2()+"</div>");
%>
</body>
</html>
Pages: 1 2
板大我試你的都跑不出來 以下問題
postIt.jsp 有顯是送出後跳到postAction.jsp 這裡就沒動進囉 好像沒連到mysql
都是copy
以下是我設定mysql
連線名稱:test
localhost
3306
root
123456
建立board資廖庫
建立標單threads 有結取sql那個
不知到是那出錯
mysql的是5.1板的jar檔都有放
請板大次教
請問tomcat裡有什麼錯誤訊息嘛?
@yku, tomcat都沒有問題但好像連不到mysql
連機本的postAction.jsp 險是錯誤視窗都沒有動靜
輸入後postAction.jsp 沒有任何東西
沒輸入postAction.jsp 沒有任何東西
板大我整理過問題所在請到這理看看
http://979g029.99k.org/
希望板大解惑
你可以給我Eclipse console那一頁的畫面嘛?
或著你有裝FireFox嘛?
板大以補充
http://979g029.99k.org/
FireFox我沒裝我用ie8
jar有放設定都ok也沒錯誤訊息
(但我用的是非安裝的Eclipse跟tomcat)
不知到是否有引想
請問您可時比較方便?
我使用連線軟體幫你看一下好了TeamViewer
之前請先安裝FireFox及fireBug
可參考這篇
http://blog.yslifes.com/archives/699
或著您也可以試著用FireBug查詢錯誤在那裡
板大方便的話
及時通加我(雖然很久沒用)
4/24都可以
我會先用好相關的東西
等板大有空密我即可
感謝板大
板大我測試可以連資料庫但postIt.jsp 33行有問題找不出來不資源屬性
第二個問題是輸入中文後
查詢會查不到變成亂碼
TEXT況內變亂碼所以都查不到之前輸入的中文
第一點可以給我錯誤訊息嘛?
第二點的部份
你可以到tomcat設定檔apache-tomcat-6.0.29\conf\server.xml裡
(如果是Eclipse請找到專案目錄名稱為Server的,打開結點,可以看到server.xml這個檔)
然後在Connector這個xml結點裡加上一個attribute
useBodyEncodingForURI=”true” 及
URIEncoding=”UTF-8″
應該就可以解決中文亂碼的問題了