我写了一个JSP接受数据输入和两个Servlet在同一个包中,第一个处理完数据库操作后把视图传递给第二个Servlet,最后再传递给显示的JSP页面,是利用RequestDispatcher.forward(request,response); 来传递的.
首先是从JSP提交到第一个Servlet,但是为什么到了第一个Servlet后就不传递了,页面是空白.不知道为什么?
首先是从JSP提交到第一个Servlet,但是为什么到了第一个Servlet后就不传递了,页面是空白.不知道为什么?
解决方案 »
- JSP自定义标签如何使用页面中的java代码
- Axis2客户端链接超时、并发的请求控制如何处理?
- 求jsp web在线编辑器解决方案!
- 请进来看一下,给个思路。
- 有人能详细介绍一下el表达式语言吗?
- ajax做三级菜单 请大神指教一下servlet中的response返回值的问题
- 关于网络短信的问题
- 有关apache的安装问题,急问
- 关于页面提交过滤敏感字眼和sql语句的
- response.addCookie(cookie)提示An invalid character [34] was present in the Cookie
- DWR的问题,为什么我在编译JAVA文件后,html页面中js的方法没有改变?救命啊!!!
- UTF8编码环境下通过URL传递中文乱码问题
package com.servlets;
import java.sql.*;
import javax.sql.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.*;
import java.util.Date;
import java.io.*;
public class AddMessageServlet extends HttpServlet {private Connection conn=null;public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException{
String title=request.getParameter("title");
String name=request.getParameter("name");
String email=request.getParameter("email");
String content=request.getParameter("content");
Date time=new Date();
if(title==null) title="";
if(name==null) name="";
if(email==null) email="";
if(content==null) content="";
try{
String query="insert into message(?,?,?,?,?)";
PreparedStatement stat=conn.prepareStatement(query);
stat.setString(1,title);
stat.setString(2,name);
if(email.length()==0)
stat.setString(4,null);
else
stat.setString(4,email);
stat.setString(5,content);
stat.setObject(3,time);
try{
stat.executeQuery(query);
}catch(Exception e){e.printStackTrace(); }
RequestDispatcher rd=request.getRequestDispatcher("/viewMessage_servlet");
if(rd!=null){
System.out.println("页面正在转入....");
}
rd.forward(request,response);
}catch(Exception e){e.printStackTrace(); }
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
doGet(request,response);
}public AddMessageServlet() {
String url="jdbc:mysql://localhost:3306/lionest";
String driver="com.mysql.jdbc.Driver";
String user="root";
String password="1229";
try{
Class.forName(driver);DriverManager.getConnection(url,user,password);}catch(Exception e){
e.printStackTrace();
}
}}第二个!
package com.servlets;
import javax.sql.*;
import java.sql.*;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.Date;
import java.util.*;public class ViewMessageServlet extends HttpServlet {private Connection conn=null;
private Collection messages=new ArrayList();
private Message message=null;public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {try {
Statement stat=conn.createStatement();
String query="select count(*) from message";
ResultSet rs=stat.executeQuery(query);
int count=0;
if(rs.next()){
count=rs.getInt(1);
}
else
if(count>0) {
rs=stat.executeQuery("select * from message");
while(rs.next()){
String title=rs.getString("title");
String name=rs.getString("name");
String email=rs.getString("email");
String content=rs.getString("content");
Date time=rs.getDate("time");Message message=new Message();
message.setTitle(title);
message.setName(name);
message.setEmail(email);
message.setContent(content);messages.add(message);}
rs.close();
conn.close();
}
request.setAttribute("messages",messages);
RequestDispatcher rd=request.getRequestDispatcher("/View.jsp");
rd.forward(request,response);}catch(SQLException e){
e.printStackTrace();
}}public void setMessage(){
this.message=message;
}public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
doGet(request,response);
}
public ViewMessageServlet() {
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/lionest";
String user="root";
String password="1229";
try{
Class.forName(driver);DriverManager.getConnection(url,user,password);}catch(Exception e){
e.printStackTrace();
}}
}
2.
if(rs.next()){
count=rs.getInt(1);
}
else
if(count>0) {......}
这句代码,如果你判断了rs.next()成立,那else以后的代码自然不可以执行,就是说if(count>0)是不会执行的;这个servlet执行的结果就是得到了一个没起任何作用的count而已,下面往数据库添加记录的代码肯定不会执行的。
回答错误,0分.
问题看了楼上的,我想你应该知道是哪里错了吧?
再问下
如果本页面提交数据给自己,但是上一个页面也提交数据给这个页面,是不是当本页面提交时,上一个页面提交的数据就失效了?或者只是request范围里失效?