新手学习JSP 大神们帮忙看下!

小小小小小小小白 2014-03-20 05:20:20
我整理好了一个 操作数据库的类 代码如下, 单独测试数据库连接没有任何问题,但是把类引入到JSP页面后 执行会报 连接不上数据

import java.sql.*;

public class OperateOracle {
// orcl为oracle数据库中的数据库名,localhost表示连接本机的oracle数据库
// 1521为连接的端口号
private static String url = "jdbc:oracle:thin:@10.135.108.104:1521:ora11gp";
// system为登陆oracle数据库的用户名
private static String user = "ll";
// manager为用户名system的密码
private static String password = "512228";
public static Connection conn; //创建用于连接数据库的Connection对象
public static PreparedStatement ps;
public static ResultSet rs;
public static Statement st;

public static void main(String[] args) {
// TODO Auto-generated method stub
getConnection();
if(conn==null){
System.out.print("NO");
}else {
System.out.print("yes");
}

}
/* 获取数据库连接的函数*/
public static Connection getConnection() {

try {
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载oracle数据驱动

conn = DriverManager.getConnection(url, user, password);// 创建数据连接

} catch (Exception e) {
e.printStackTrace();
//System.out.println("数据库连接失败" + e.getMessage());
}
return conn; //返回所建立的数据库连接
}

/* 插入数据记录,并输出插入的数据记录数*/
public static void insert(String sql) {

conn = getConnection(); // 首先要获取连接,即连接到数据库

try {
st = (Statement)conn.createStatement(); // 创建用于执行静态sql语句的Statement对象

int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数

System.out.println("向t1表中插入 " + count + " 条数据!!"); //输出插入操作的处理结果

conn.close(); //关闭数据库连接

} catch (SQLException e) {
System.out.println("插入数据失败" + e.getMessage());
}
}

}
单独测试数据库连接没有任何问题,但是把类引入到JSP页面后 执行会报 连接不上数据 JSP 代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="dao.OperateOracle"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>提交处理</title>
</head>
<body>
<%
String name = request.getParameter("xm");
String age = request.getParameter("nl");
String dianhua = request.getParameter("dh");
//System.out.print(name);
//System.out.print(age);
//System.out.print(dianhua);


String sq = "insert into t3(name,age,dianhua) values('"+name+"',"+age+",'"+dianhua+"');";
OperateOracle.insert(sq);
%>
</body>
</html>
...全文
311 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liufeng0103 2014-03-21
  • 打赏
  • 举报
回复
引用 9 楼 u013266090 的回复:
[quote=引用 7 楼 liufeng0103 的回复:] 请问这个ip 10.135.108.104是服务器的ip? 如果是自己电脑的话还是用localhost或者127.0.0.1 如果是局域网内的机器用局域网的ip。 如果用外网ip 请检查防火墙是否打开。关闭防火墙试试
是自己电脑的IP 刚开始用的是 localhost 的 但是 测试连接不上数据库 我改成本机IP 连接上的! 有一点 我用的 是 云系统 不知道会不会是这个原因![/quote] 数据库也在你电脑上? 如果用路由器连接的,可能还需要再路由器中设置端口映射,把1521端口绑定到数据库所在系统的ip试试。还有你用的什么云系统?没用过呀
  • 打赏
  • 举报
回复
引用 7 楼 liufeng0103 的回复:
请问这个ip 10.135.108.104是服务器的ip? 如果是自己电脑的话还是用localhost或者127.0.0.1 如果是局域网内的机器用局域网的ip。 如果用外网ip 请检查防火墙是否打开。关闭防火墙试试
是自己电脑的IP 刚开始用的是 localhost 的 但是 测试连接不上数据库 我改成本机IP 连接上的! 有一点 我用的 是 云系统 不知道会不会是这个原因!
  • 打赏
  • 举报
回复
引用 6 楼 zhangxiaojie0321 的回复:
把报错信息贴上来。。。
数据库连接失败oracle.jdbc.driver.OracleDriver 三月 21, 2014 9:17:19 上午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [jsp] in context with path [/StudentMang] threw exception [java.lang.NullPointerException] with root cause java.lang.NullPointerException at dao.OperateOracle.query(OperateOracle.java:81) at org.apache.jsp.registadd_jsp._jspService(registadd_jsp.java:84) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
u013112469 2014-03-21
  • 打赏
  • 举报
回复
有困难请看我头像
  • 打赏
  • 举报
回复
引用 11 楼 zhaode7 的回复:
原因很简单:在java代码中可以连接到数据库,查询,添加等操作 但是jsp页面的代码却无法连接到数据库中,因为在调用DriverManager的getConnection方法之前, 要保证相应的Driver类已经被加载到 jvm中, 并且完成了类的初始化工作 可以 //声明使用oracle驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 或者 oracle.jdbc.driver.OracleDriver driver = new oracle.jdbc.driver.OracleDriver(); 都可以的 给分来吧
/* 获取数据库连接的函数*/ public static Connection getConnection() { try { Class.forName("oracle.jdbc.driver.OracleDriver");//这里就是 加载oracle数据驱动 的啊 conn = DriverManager.getConnection(url, user, password);// 创建数据连接 } catch (Exception e) { e.printStackTrace(); //System.out.println("数据库连接失败" + e.getMessage()); } return conn; //返回所建立的数据库连接 } public static void insert(String sql) {//这个是做插入操作的函数啊 conn = getConnection(); // 这里在调用获取数据库的连接的啊 try { st = (Statement)conn.createStatement(); // 创建用于执行静态sql语句的Statement对象 int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数 System.out.println("向t1表中插入 " + count + " 条数据!!"); //输出插入操作的处理结果 conn.close(); //关闭数据库连接 } catch (SQLException e) { System.out.println("插入数据失败" + e.getMessage()); } }
zhaode7 2014-03-21
  • 打赏
  • 举报
回复
原因很简单:在java代码中可以连接到数据库,查询,添加等操作 但是jsp页面的代码却无法连接到数据库中,因为在调用DriverManager的getConnection方法之前, 要保证相应的Driver类已经被加载到 jvm中, 并且完成了类的初始化工作 可以 //声明使用oracle驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); 或者 oracle.jdbc.driver.OracleDriver driver = new oracle.jdbc.driver.OracleDriver(); 都可以的 给分来吧
liufeng0103 2014-03-20
  • 打赏
  • 举报
回复
请问这个ip 10.135.108.104是服务器的ip? 如果是自己电脑的话还是用localhost或者127.0.0.1 如果是局域网内的机器用局域网的ip。 如果用外网ip 请检查防火墙是否打开。关闭防火墙试试
ay转身遇 2014-03-20
  • 打赏
  • 举报
回复
把报错信息贴上来。。。
  • 打赏
  • 举报
回复
引用 3 楼 rui888 的回复:
看看Connection 成功不。
单独 测试 OperateOracle 一定问题没有 我还进行 插入 查询 一系列的操作 没有任何问题 但是 放到JSP数据库都连接不上
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
打印一下SQLException e的信息看看 什么错误,另外进入调试状态看看那一步出错
错误 就是说连接不上数据库啊!调用 insert()方法的时候 里面第一步 就是 getConnection()这个就是获取数据库连接的方法啊。第一步就挂了。。
tony4geek 2014-03-20
  • 打赏
  • 举报
回复
看看Connection 成功不。
tony4geek 2014-03-20
  • 打赏
  • 举报
回复
你 jso得 OperateOracle getConnection() 得先获取 Connection()
bdmh 2014-03-20
  • 打赏
  • 举报
回复
打印一下SQLException e的信息看看 什么错误,另外进入调试状态看看那一步出错

81,091

社区成员

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

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