一个关于servlet的小问题

my4th 2006-09-19 08:30:03
刚写了一个简单的servlet类,用于从表单获取数据 然后进行数据库查询
代码如下
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Test extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
String c=null;
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String a=request.getParameter("param1");
c=getSth(request,response,a);
out.println("<html><body>"+c+"</body></html>");
}
public String getSth(HttpServletRequest request,HttpServletResponse response,String a)
{
String c=null;
String sql= "select * from [member] where mas_id='"+a+"'";
sqlBean b=new sqlBean();
try
{
ResultSet rs=b.executeQuery(sql);
if(rs.next())
{
c=rs.getString("mas_pwd");
}
}
catch(Exception e){}
return c;
}


}

在tomcat5.5上的调试结果是null,
我测试了getSth部分的代码,可以正确的从数据库里面取出mas_pwd
单独测试了getParameter方法 也能得到正确的表单数据
是程序问题?还是服务器问题?

在下刚开始学着写servlet,请各位大虾指点迷津
...全文
246 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxywolf 2006-09-27
  • 打赏
  • 举报
回复
问题解决啦?
my4th 2006-09-27
  • 打赏
  • 举报
回复
结分
runnysky 2006-09-26
  • 打赏
  • 举报
回复
我觉得可能是你的数据库没有找到驱动。如果你测试getSth()不是在tomcat环境下测的话,是可以取到结果的。但如果部署在tomcat下,数据库的驱动可能没有部署进去。所以你把数据库的驱动程序放入这个web项目在tomcat的部署文件夹下web-inf/classes里,再试试好了。
NsGFr 2006-09-25
  • 打赏
  • 举报
回复
String c=null;
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String a=request.getParameter("param1");
c=getSth(request,response,a);
out.println("<html><body>"+c+"</body></html>");

检查一下:String a=request.getParameter("param1");
因为你要用a 作查询条件,tomcat里request.getParameter的编码问题也是出了名的。
你能确信 在tomcat里面
try
{
ResultSet rs=b.executeQuery(sql);
if(rs.next())
{
c=rs.getString("mas_pwd");
// 这里c 确实获得值了,你先用“英文字符”试验一下,看看是什么问题
}
}
catch(Exception e){}
return c;
my4th 2006-09-25
  • 打赏
  • 举报
回复
在tomcat里面的rs确实是null 可是为什么会是这样的呢?
my4th 2006-09-21
  • 打赏
  • 举报
回复
try
{
ResultSet rs=b.executeQuery(sql);
if(rs.next())
{
c=rs.getString("mas_pwd");

已经在控制台里面测试过了,可以得到正确的结果,但是不知道为什么在tomcat里面运行就得不到结果...
my4th 2006-09-21
  • 打赏
  • 举报
回复
顶上来
xuezhu130 2006-09-20
  • 打赏
  • 举报
回复
try
{
ResultSet rs=b.executeQuery(sql);
if(rs.next())
{
c=rs.getString("mas_pwd");
你把rs测试一下,看rs是不是为空?
如果rs 为空,那c肯定为空了
my4th 2006-09-20
  • 打赏
  • 举报
回复
顶上来
奇伢 2006-09-20
  • 打赏
  • 举报
回复
doPost(.....){
doGet(....);
}
Quen 2006-09-20
  • 打赏
  • 举报
回复
顶楼上的
guo__peng 2006-09-20
  • 打赏
  • 举报
回复
得到表单的数据得在doPost方法中
my4th 2006-09-20
  • 打赏
  • 举报
回复
运行以后的结果仍然是null...
my4th 2006-09-20
  • 打赏
  • 举报
回复
把方法改成了doPost(),可是还是不行,我把相关文件都发上来吧,我连接的数据库是sql server2000 用的ODBC桥接 是不是需要对Tomcat进行相关配置呢?

[Test.java]
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Test extends HttpServlet
{
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
String c=null;
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String a=request.getParameter("param1");
c=getSth(request,response,a);
out.println("<html><body>"+c+"</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
doPost(request,response);
}
public String getSth(HttpServletRequest request,HttpServletResponse response,String a)
{
String c=null;
String sql= "select * from [member] where mas_id='"+a+"'";
sqlBean b=new sqlBean();
try
{
ResultSet rs=b.executeQuery(sql);
if(rs.next())
{
c=rs.getString("mas_pwd");
}
}
catch(Exception e){}
return c;
}


}
------------------------------------------------------------------------------------

[sqlBean.java]

import java.sql.*;

public class sqlBean {
public Connection conn =null;
public ResultSet res=null;
private String DatabaseDriver="sun.jdbc.odbc.JdbcOdbcDriver";
private String url="jdbc:odbc:mas";
private String user="Jay";
private String pwd="123";
public sqlBean()
{
try{
Class.forName(DatabaseDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.out.println("can't reg database driver");
}
}

public int executeInsert(String sql)
{
int num=0;
try{
Connection conn=DriverManager.getConnection(url,user,pwd);
Statement smt= conn.createStatement();
num=smt.executeUpdate(sql);
smt.close();
}
catch(SQLException ex)
{
System.out.println("执行插入有错误");
}
finally
{
try{conn.close();}
catch (Exception e){}
}
return num;
}
public ResultSet executeQuery(String sql)
{
res=null;
try{
Connection conn=DriverManager.getConnection(url,user,pwd);
Statement smt= conn.createStatement();
res=smt.executeQuery(sql);
}
catch(SQLException ex)
{
System.out.println("执行查询有错误");
}
finally
{
try{conn.close();}
catch (Exception e){}
}
return res;
}
}
-----------------------------------------------------------------------------------
[Para2.htm]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>haha</title>
</head>

<body>
<form action="/servlet/Test" method="post">
<input type="text" name="param1"><BR>
<input type="text" name="param2"><BR>
<input type="text" name="param3"><BR>
<input type="submit" value="提交">
</form>
</body>
</html>

------------------------------------------------------------------------------------
[web.xml]

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Copyright 2004 The Apache Software Foundation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>

<!-- JSPC servlet mappings start -->

<servlet>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<servlet-class>org.apache.jsp.index_jsp</servlet-class>
</servlet>
<servlet>
<servlet-name>sqlBean</servlet-name>
<servlet-class>sqlBean</servlet-class>
</servlet>
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>Test</servlet-class>
</servlet>
<servlet>
<servlet-name>GetPara</servlet-name>
<servlet-class>GetPara</servlet-class>
</servlet>
<servlet>
<servlet-name>Test1</servlet-name>
<servlet-class>moreservlet.Test1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/servlet/Test</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Test1</servlet-name>
<url-pattern>/servlet/moreservlet/Test1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>GetPara</servlet-name>
<url-pattern>/servlet/GetPara</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>

<!-- JSPC servlet mappings end -->

</web-app>

vacuumboy 2006-09-20
  • 打赏
  • 举报
回复
form的method是get还是post?
my4th 2006-09-20
  • 打赏
  • 举报
回复
顶上来

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧