请教:jsp声明的方法里可不可以连接数据库?

BigKing 2005-12-14 10:31:44
我在jsp<%! %>声明的方法里写了一个方法,在这个方法里连接了数据库,但是有了这个方法这个页面就打不开,始终是连接等待中,我把这个方法去掉就可以打开该页面,我把这个方法中的连接数据库的语句放到<% %>中就可以!为什么?
请大家帮帮忙!
...全文
300 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
BigKing 2005-12-15
  • 打赏
  • 举报
回复
终于知道了,<% %>中定义的是本地变量是不能在<%! %>中定义的方法中使用的!我想这才是问题最终的答案!
BigKing 2005-12-15
  • 打赏
  • 举报
回复
QWERT520(别来无恙) 谢谢了,
按你说的那样确实可以,但是为什么申明在别的地方就不行了呢,是不是<%! %>中定义的方法不能引用在别的地方如<% %>中定义的变量呢!
zzg5152 2005-12-15
  • 打赏
  • 举报
回复
你把你的联接数据库的方法写到<%! %>之间,在<%! %>里面写的方法是在toGet()之外,也就是说,只要有人调用这个servlet就要执行一次数据库联接,所以你这么写是不对的。
常遇道 2005-12-15
  • 打赏
  • 举报
回复
把conn.jsp的声明干掉
在调用页面声明就可以了
BigKing 2005-12-15
  • 打赏
  • 举报
回复
连接数据的声明我是放在conn.jsp里的呀,下面我不是粘贴了conn.jsp的代码的吗
niko7 2005-12-15
  • 打赏
  • 举报
回复
这样的代码当然编译都通不过!

<%!
String str=null;
String connectdb()
{
String sql1="select * from message where id='1'";

stmt=con.createStatement();//con 没有申明,stmt也还没有申明
rs=stmt.executeQuery(sql1);//rs 也没有申明
while(rs.next())
{
str=rs.getString("topic");

}
rs.close();
stmt.close();
con.close();
return str;
}
%>

那些没有申明的东西你就用参数传进去吧!
String connectdb(。。。。。。。这里传参数!。。。。。。)

还有,不要发重复帖子,除了浪费分数没什么好处。
http://community.csdn.net/Expert/topic/4459/4459852.xml?temp=.1322748

xiongbing528 2005-12-14
  • 打赏
  • 举报
回复
当然可以。但是不实用.还不如直接写数据库的连接.最好把你的代码帖出来让大家看看.
eureka0891 2005-12-14
  • 打赏
  • 举报
回复
可以,不过这么干
不推荐,
这个变量对于所有的用户来说只有一份,

<%!
int i = 0;
%>
然后<%=i++%>会发现每个用户访问时都会不同。

如果把连接放在此处,那么这个连接的存活期是从第一次访问页面到页面重载。
写在这儿,你何时关闭连接?
数据库连接一般是操作时取得一个,用完后马上关闭
blackhost 2005-12-14
  • 打赏
  • 举报
回复
那是你的方法可能有问题。还是查查代码是否有问题。

另外,虽然楼上说servlet和普通的JavaBean没有区别,但是为了维护,还是习惯于用SERVLET作控制调转用,而真正的业务逻辑封装在javabean中。
niko7 2005-12-14
  • 打赏
  • 举报
回复
当然,需要说明的是,在<%! %>里面做过头了就不好了。

jsp被部分人说不好,就是因为jsp很强大,导致很多初学者都走错路:
在jsp里面大做文章,很少写servlet和bean,结果不好维护。

象连接数据库啊,定义类啊,虽然在jsp内部可以做到,但实在不提倡。
niko7 2005-12-14
  • 打赏
  • 举报
回复
<%!
int i = 100;
private String getString()
{
return "Hello!";
}
%>

那么可以
<%
int j = this.i;
String s = this.getString();
%>

在<%! %> 中不但可以申明成员变量,还可以申明成员方法,也可以定义内部类!
记住,jsp是servlet,而servlet和普通的JavaBean没有区别!
zcjl 2005-12-14
  • 打赏
  • 举报
回复
可以,但不好的做法
可以把这些使用Javabean封装,然后在jsp中调用(如果没有使用什么框架的话)
eidolon_warrior 2005-12-14
  • 打赏
  • 举报
回复
<% %>写方法不是很好吗,连数据库当然没问题
<%! %>就不行了吧
niko7 2005-12-14
  • 打赏
  • 举报
回复
当然可以!

不过你要注意:那里是申明成员变量和成员方法的地方。

其实你写在 <%%>里的和<%%>外的 代码,都被自动编译到
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException
方法中。

而写在 <%! %> 中的东西则不在上面的方法中。

把连接数据库需要的信息用参数的方法传进去,一样好用。
funcreal 2005-12-14
  • 打赏
  • 举报
回复
代码贴上来。
climb011358 2005-12-14
  • 打赏
  • 举报
回复
简单点:<%! %>这里是方法的声明;<%%>这里是方法的执行
sdliubo 2005-12-14
  • 打赏
  • 举报
回复
在JSP程序中声明合法的变量和方法

JSP 语法
<%! declaration; [ declaration; ]+ ... %>
例子
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
描述
声明你将要在JSP程序中用到的变量和方法。你也必须这样做,不然会出错.

你可以一次性声明多个变量和方法,只要以";"结尾就行,当然这些声明在Java中要是合法的。

当你声明方法或变量时,请注意以下的一些规则:

声明必须以";"结尾(Scriptlet有同样的规则,但是 表达式就不同了).
你可以直接使用在<% @ page %>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明.
一个声明仅在一个页面中有效。如果你想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@ include %>或<jsp:include >元素包含进来。
xlyyc 2005-12-14
  • 打赏
  • 举报
回复
不可以,这个里面仅仅能对变量进行声明
huangdeji 2005-12-14
  • 打赏
  • 举报
回复
呵呵,不懂
BigKing 2005-12-14
  • 打赏
  • 举报
回复
大家帮帮忙呀!我搞了半天还是没搞懂为什么!
加载更多回复(2)
JSP基于SSM学生考勤请假管理系统可升级SpringBoot 程序开发环境:myEclipse/Eclipse/Idea都可以 + mysql数据库 前台技术框架: Bootstrap 后台架构框架: SSM 学生: 个人中心,查看自己的个人信息修改密码,注册登录,查看我的课表,在线请教,请假时间,请假原因,需要请假多久,查看我的请假状态,(老师审核,或者未审核)查看我在校期间的出勤信息。(例如星期几,下午第三节课计算机专业课,整个学期请假、旷课、迟到、早退了多少次,以及具体的时间、任课老师姓名详细信息。) 老师: 查看我的教师课表,查看我的学生信息,登记我学生的考勤状况(例如某某学生在我的第几节课上旷课,迟到了),查看我学生请假信息 审核我学生的请假,可以审核通过跟不通过,查看提交上来的请假 管理员 管理管理员,管理教师,管理学生,管理学生课表,管理教师课表,管理考勤信息,管理请假信息,个人中心 学生跟老师要能管理员添加账号,又能自己注册 实体ER属性: 班级: 班级编号,班级名称,班主任,成立日期 学生: 学号,登录密码,所在班级,姓名,性别,出生日期,学生照片,联系电话,邮箱,家庭地址,注册时间 老师: 教师编号,登录密码,姓名,性别,老师照片,联系电话,邮箱地址,老师介绍 请假: 请假id,请假原因,请假内容,请假多久,请假学生,请假时间,审核状态,审核回复,审核的老师,审核时间 课程: 课程编号,课程名称,开设班级,上课老师,周日期,第几节,上课教室,备注信息 考勤: 考勤id,考勤学生,考勤课程,周日期,第几节,考勤结果,备注信息 考勤结果: 考勤结果id,考勤结果名称 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

81,116

社区成员

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

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