代码有五部分(很短,耐心,问题在最后的链接上)
//(index.jsp)一个简单表单提交
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<form name="form1" action="/jsp_model/servlet/addMessage" method="get">
<table>
<tr>
 <td>姓名:</td>
 <td><input type="text" name="name"/></td>
</tr>
<tr>
 <td>邮箱:</td>
 <td><input type="text" name="email"/></td>
</tr>
<tr>
 <td>主题:</td>
 <td><input type="text" name="title"/></td>
</tr>
<tr>
 <td>留言:</td>
 <td><textarea name="content"></textarea></td>
</tr>
<tr>
 <td><input type="submit" value="提交留言"></td>
 <td><input type="reset" value="重新填写"></td>
</tr>
</table>
</form>
</html>
//(addMessage.java)添加数据到数据库,数据库名myjsp,表名为Message,列名:Name,Email,Title,Content,Date
package model2;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.*;
public class addMessage extends HttpServlet {
private Connection con;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("name");
String email=request.getParameter("email");
String title=request.getParameter("title");
String content=request.getParameter("content");
if(name==null)name="";
if(email==null)email="";
if(title==null)title="";
if(content==null)content="";
try{
PreparedStatement stm=con.prepareStatement("insert into Message values(?,?,?,?,?)");
stm.setString(1,name);
stm.setString(2,email);
stm.setString(3,title);
stm.setString(4,content);
stm.setDate(5,new java.sql.Date(new java.util.Date().getTime()));
try{
stm.executeQuery();
}
catch(Exception e){}
RequestDispatcher requestDispatcher=request.getRequestDispatcher("/servlet/viewMessage");
requestDispatcher.forward(request,response);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public addMessage()
{
String CLASSFORNAME="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String SERVANDDB="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=myjsp";
String USER="sa";
String PWD="123456";
try{
Class.forName(CLASSFORNAME);
con=DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e){
e.printStackTrace();
}
}
}//(viewMessage.java)将数据库名为myjsp里的数据提取出来存放在request里的messages后把请求给下一个页面
package model2;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.*;
public class viewMessage extends HttpServlet {
private Connection con;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
Collection ret=new ArrayList();
try{
Statement stm=con.createStatement();
ResultSet result=stm.executeQuery("select count(*) from Message");
int message_count=0;
if(result.next())
{
message_count=result.getInt(1);
result.close();
}
if(message_count>0)
{
result=stm.executeQuery("select * from Message order by Date desc");
while(result.next())
{
String name=result.getString("Name");
String email=result.getString("Email");
String title=result.getString("Title");
String content=result.getString("Content");
java.sql.Date date=result.getDate("Date");
Message message=new Message();
message.setName(name);
message.setEmail(email);
message.setTitle(title);
message.setContent(content);
message.setDate(date);
ret.add(message);
}
result.close();
con.close();
}
request.setAttribute("messages",ret);
RequestDispatcher requestDispatcher=request.getRequestDispatcher("/viewMessage2.jsp");
requestDispatcher.forward(request, response);
}
catch(Exception e){}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException 
{
doGet(request,response);
}
public viewMessage()
{
String CLASSFORNAME="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String SERVANDDB="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=myjsp";
String USER="sa";
String PWD="123456";
try{
Class.forName(CLASSFORNAME);
con=DriverManager.getConnection(SERVANDDB,USER,PWD);
}
catch(Exception e){
e.printStackTrace();
}
}
}//(viewMessage2.jsp)以表格的形式将数据库名myjsp里的内容显示
<%@ page import="java.util.*,model2.*" pageEncoding="UTF-8" %>
<%
int message_count=0;
Collection messages=(Collection)request.getAttribute("messages");
Iterator it=messages.iterator();
while(it.hasNext())
{
Message message=(Message)it.next();
%>
<table>
<tr>
<td>留言人:</td>
<td><%=message.getName()%></td>
</tr>
<tr>
<td>主题:</td>
<td><%=message.getTitle() %></td>
</tr>
<tr>
<td>邮箱:</td>
<td><%=message.getEmail() %></td>
</tr>
<tr>
<td>留言时间:</td>
<td><%=message.getDate() %></td>
</tr>
<tr>
<td><% out.println("("+message_count+")"); %></td>
<td><%=message.getContent() %></td>
</tr>
</table>
<%
out.println("<hr>");
message_count++;
}
%>
<a href="index2.jsp">我要留言</a>
//(Message.java)简单属性的javabeanpackage model2;public class Message {
private String name;
private String email;
private String title;
private String content;
private java.sql.Date date;
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 getEmail()
{ return this.email; }
public String getTitle()
{ return this.title; }
public String getContent()
{ return this.content; }
public void setDate(java.sql.Date date)
{ this.date=date; }
public java.sql.Date getDate()
{ return this.date; }
 
}

解决方案 »

  1.   

    下面是重点:
    1.进入index.jsp数据填写提交,显示如下:
    留言人: 1  
    主题: 3  
    邮箱: 2  
    留言时间: 2011-12-03 
    (0)  4  --------------------------------------------------------------------------------
    我要留言
    2.点击我要留言链接报错404
    type Status reportmessage /jsp_model/servlet/index2.jspdescription The requested resource (/jsp_model/servlet/index2.jsp) is not available.
    3.关掉浏览器,重开一个进入index2.jsp填写数据后提交页面显示是空白的无反应
    地址栏:http://localhost:8080/jsp_model/servlet/addMessage?name=1&email=1&title=1&content=1
    4.点击浏览器的后退回到index.jsp填写数据提交页面显示是空白的无反应,同3
    5.重新部署tomcat后(即在myeclipse里重启一下),显示正常,重复2-4
      

  2.   

    index2.jsp, 你这页面在哪里呀,
    直接写
    <a href="<%=request.getContextPath()%>/index2.jsp">我要留言</a>
      

  3.   

    3l 正解,我看过从index.jsp页面到最后viewMessage2.jsp页面都没有问题   404 完全是路径问题,lz仔细查一下路径。
      

  4.   

    也就是说我碰到的问题现在是不能二次提交,只能一次提交成功(除非tomcat重启)
      

  5.   

    应该是重定向问题建议看下使用response.sendRedirect()
    使用request.getRequestDispatcher().forward(request,response)的区别吧,你试下都改成sendRedirect试下
      

  6.   

    如果改成sendRedirect,我显示页面就没法获取messages数据了,怎么显示啊
      

  7.   

    你把写入的东西存入数据库,使用sendRedirect,从数据库中获得你所需要的留言信息
      

  8.   

    那不是还要在viewMessage。jsp里在写一次取数据,那我的viewMessage.java白写了