实验内容如下:--------------------------------------------------------------------
<jsp:useBean id="conn" scope="application" class="db.ConnSQL"/>----------------------------------------------------------------------
package db;
import java.sql.*;
public class ConnSQL{
String serverName = "localhost";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ghyghost";
String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ghyghost";
String user="sa";
String password=""; Connection connect = null;
ResultSet rs = null;
public ConnSQL(){
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println( e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
try {
connect = DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
}
public int executeUpdate(String sql) {
int result = 0;
try {
connect = DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement();
result = stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return result;
}
}
-----------------------------------------------------------------------在jsp页面中定义一个函数:
<%!
public static void createtable(String sql){String java_thread_sql=sql;
ResultSet java_thread_rs=conn.executeQuery(java_thread_sql);
while(java_thread_rs.next()) {
out.print("<tr>");
out.print("<td width=\"24\" align=\"center\" valign=\"middle\"><span class=\"style3\">・</span></td>");
out.print("<td width=\"185\">");
out.print("<a href=\"showdoc.jsp?id="+java_thread_rs.getInt("id")+" target=\"_blank\" alt="+java_thread_rs.getObject("title").toString()+"\""+">");
out.print(substring(java_thread_rs.getObject("title").toString(),28,"")+"</a></td>");
out.print("<td width=\"67\"><span class=\"style1\">");
out.print(java_thread_rs.getObject("indate")+"</span></td>");
out.print("<td width=\"58\"><span class=\"style1\">");
out.print(java_thread_rs.getObject("looktime")+"</span></td>");
out.print("</tr>");
}
java_thread_rs.close();
}%>看看conn好使不好使,eclipse认不认???我必须要写成函数,因为我的JSP页面中有20几处需要上面函数相同的代码!!-----------------------------------------------------------------------
我在我本机上没有成功,错误提示如下:
Severity Description Resource In Folder Location Creation Time Id
2 cannot resolve symbol: symbol : variable conn index2.jsp javacn.cn/WebRoot line 6 2005年11月28日 9:41:24 351----------------------------------------------------------------------我发了二张贴子没有人答出来。http://community.csdn.net/Expert/topic/4422/4422431.xml?temp=.4005548
http://community.csdn.net/Expert/topic/4421/4421915.xml?temp=.1081354如果有高手解决。放分!!!!!!!!!!!!!!!!!!!!!!!!!!!
<jsp:useBean id="conn" scope="application" class="db.ConnSQL"/>----------------------------------------------------------------------
package db;
import java.sql.*;
public class ConnSQL{
String serverName = "localhost";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ghyghost";
String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ghyghost";
String user="sa";
String password=""; Connection connect = null;
ResultSet rs = null;
public ConnSQL(){
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println( e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
try {
connect = DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return rs;
}
public int executeUpdate(String sql) {
int result = 0;
try {
connect = DriverManager.getConnection(url,user,password);
Statement stmt = connect.createStatement();
result = stmt.executeUpdate(sql);
}
catch(SQLException ex) {
System.err.println(ex.getMessage());
}
return result;
}
}
-----------------------------------------------------------------------在jsp页面中定义一个函数:
<%!
public static void createtable(String sql){String java_thread_sql=sql;
ResultSet java_thread_rs=conn.executeQuery(java_thread_sql);
while(java_thread_rs.next()) {
out.print("<tr>");
out.print("<td width=\"24\" align=\"center\" valign=\"middle\"><span class=\"style3\">・</span></td>");
out.print("<td width=\"185\">");
out.print("<a href=\"showdoc.jsp?id="+java_thread_rs.getInt("id")+" target=\"_blank\" alt="+java_thread_rs.getObject("title").toString()+"\""+">");
out.print(substring(java_thread_rs.getObject("title").toString(),28,"")+"</a></td>");
out.print("<td width=\"67\"><span class=\"style1\">");
out.print(java_thread_rs.getObject("indate")+"</span></td>");
out.print("<td width=\"58\"><span class=\"style1\">");
out.print(java_thread_rs.getObject("looktime")+"</span></td>");
out.print("</tr>");
}
java_thread_rs.close();
}%>看看conn好使不好使,eclipse认不认???我必须要写成函数,因为我的JSP页面中有20几处需要上面函数相同的代码!!-----------------------------------------------------------------------
我在我本机上没有成功,错误提示如下:
Severity Description Resource In Folder Location Creation Time Id
2 cannot resolve symbol: symbol : variable conn index2.jsp javacn.cn/WebRoot line 6 2005年11月28日 9:41:24 351----------------------------------------------------------------------我发了二张贴子没有人答出来。http://community.csdn.net/Expert/topic/4422/4422431.xml?temp=.4005548
http://community.csdn.net/Expert/topic/4421/4421915.xml?temp=.1081354如果有高手解决。放分!!!!!!!!!!!!!!!!!!!!!!!!!!!
解决方案 »
- 一个校园社交论坛的问题~~
- 菜鸟有关jsp的问题请各们前辈指导。
- 为何用Microsoft,提供的JDBC驱动会出现:socket 错误?
- 这种判断代码该怎样写呢
- 学习servlet
- JSP与Severlet什么区别
- 请问在JSP中如何实现将字符串写到本地的文本文件中啊
- Tomcat中的Javabean的我问题(散分)
- 还是多语言网站的问题,想听听大家的意见。
- myelipse http://localhost:8080/javaPrj_1/index.jsp 打不开
- 菜鸟初级:刚工作,发现单位的类都是在实现一些接口的基础上形成的,请问,为什么要用接口,到底有什么好处???
- 急急,关于Quartz的问题?
前名定义的connection并不叫这个名字呀。
看错了。
是bean的。晕了。。不看了。明天再看。回家。谁解决了记得给我点分就行了。
是我帮你顶地。
<jsp:useBean id="conn" scope="application" class="db.ConnSQL"/>
只是创建了一个bean并放在application里面,jsp的代码中要用它必须取出来才行啊,不能直接引用的。如:
db.ConnSQL conn = (db.ConnSQL)application.getAttribute("conn");
或用查找也可以。当然,在标签中是可以直接使用的。
db.ConnSQL conn = (db.ConnSQL)application.getAttribute("conn");
加到函数createtable()中
ResultSet java_thread_rs=conn.executeQuery(java_thread_sql);
这条语句之前就行了!
比如:
String java_thread_sql=sql;
db.ConnSQL conn = (db.ConnSQL)application.getAttribute("conn");
ResultSet java_thread_rs=conn.executeQuery(java_thread_sql);
我没运行,你自己试试吧!:)
db.ConnSQL conn = (db.ConnSQL)application.getAttribute("conn");
ResultSet java_thread_rs=conn.executeQuery(java_thread_sql); 这样写出错,不行,提示为:
Severity Description Resource In Folder Location Creation Time Id
2 cannot resolve symbol: symbol : variable application index2.jsp javacn.cn/WebRoot line 6 2005年11月29日 12:01:28 365
<jsp:useBean id="conn" scope="application" class="db.ConnSQL"/>声明默认是在_jspService方法内的,所以当使用<!%%>时,就不需要使用bean:userBean去掉jsp:useBean
String java_thread_sql=sql;
db.ConnSQL conn = new db.ConnSQL();
ResultSet java_thread_rs=conn.executeQuery(java_thread_sql);
public static void createtable(String sql) {
String java_thread_sql = sql;
db.ConnSQL conn = new db.ConnSQL();
ResultSet java_thread_rs = conn.executeQuery(java_thread_sql);
try {
while (java_thread_rs.next()) {
System.out.print("<tr>");
System.out
.print("<td width=\"24\" align=\"center\" valign=\"middle\"><span class=\"style3\">・</span></td>");
System.out.print("<td width=\"185\">");
System.out.print("<a href=\"showdoc.jsp?id="
+ java_thread_rs.getInt("id")
+ " target=\"_blank\" alt="
+ java_thread_rs.getObject("title").toString() + "\""
+ ">");
System.out.print(substring(java_thread_rs.getObject("title")
.toString(), 28, "")
+ "</a></td>");
System.out.print("<td width=\"67\"><span class=\"style1\">");
System.out.print(java_thread_rs.getObject("indate")
+ "</span></td>");
System.out.print("<td width=\"58\"><span class=\"style1\">");
System.out.print(java_thread_rs.getObject("looktime")
+ "</span></td>");
System.out.print("</tr>");
}
java_thread_rs.close();
} catch (Exception ex) {
}
}
%>上面问题已经基本得到解决,呵呵,但还有一问就是,我用Eclipse发面完了站点之后,我的输出全部跑到eclipse中的console中了,并没有在我的IE界面中输出表格啊?这是为什么??
javax.servlet.*;
javax.servlet.http.*;
javax.servlet.jsp.*;这些本应该是jsp的内置对象的,但是你的方法独立于 _jspService,所以要单独引用
public static void createtable(String sql, HttpServletRequest request, HttpServletResponse response) java.io.IOException, ServletException {
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out; out.write(...); //使用这个方法去输出页面
}
如果是我设计,就会做一个JSP,专门来解析这个根据输入的ResultSet(把这个对象放在request里)来显示,然后再做一个主JSP页面,根据递交的sql语句,先计算出ResultSet,循环引用(include)上个JSP页面来实现。当然更多的,我根本就不会把数据库连接、SQL之类的传递到JSP,而是在action里先处理,最好转化成普通Bean今后在传递到JSP。