下面的程序 是验证用户名和密码的,运行时说??????行(为了方便查找而标上的,原程序中没有)有错误我用的是sql server 2000 登录时不用用户名和密码
<%@ page language="java" import="java.util.*" import="java.sql.*;" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'LoginCl.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<%
//接收用户名和密码
String u=request.getParameter("username");
String p=request.getParameter("passwd");
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver" ); ???????? Connection ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Test1","","");
Statement sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select passwd from users where username='"+u+"'");
if(rs.next())
{ //能进来说明用户存在
if(rs.getString(1).equals(p))
{
response.sendRedirect("wel.jsp?user="+u);
}
else
{//密码错误
response.sendRedirect("Login.jsp?errNo=1");
}
}else
{ //说明用户名不存在
response.sendRedirect("Login.jsp?errNo=2");
}
%>
</body>
</html>
<%@ page language="java" import="java.util.*" import="java.sql.*;" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'LoginCl.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<%
//接收用户名和密码
String u=request.getParameter("username");
String p=request.getParameter("passwd");
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver" ); ???????? Connection ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Test1","","");
Statement sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select passwd from users where username='"+u+"'");
if(rs.next())
{ //能进来说明用户存在
if(rs.getString(1).equals(p))
{
response.sendRedirect("wel.jsp?user="+u);
}
else
{//密码错误
response.sendRedirect("Login.jsp?errNo=1");
}
}else
{ //说明用户名不存在
response.sendRedirect("Login.jsp?errNo=2");
}
%>
</body>
</html>
这行你自己好好看,我怎么都感觉写的很有问题啊?
前面的问号是什么怎么回事?
好好检查一下那些细节,就像连接字符串什么的。
再就是检查数据库端口,服务开了没不过,还是要看具体的异常内容
你不妨把错误信息贴出来晒晒。。会有人知道的。。
""他是一个空啊,你都说了不用用户名和密码
exception org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
2. 查看数据库端口是否打开?是否为默认的1433?
3. jdbc语句中的SERVER_NAME是否正确?用户名密码是否正确?
4. SQL SERVER远程服务器连接,RPC服务是否勾选?
5. 检查防火墙设置是否阻止连接端口?
自己试了好久,终于找到答案了,是sp4补丁的问题,以前安装的补丁有问题,又下了一个装了,1433端口就打开了