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

BigKing 2005-12-14 10:31:44
我在jsp<%! %>声明的方法里写了一个方法,在这个方法里连接了数据库,但是有了这个方法这个页面就打不开,始终是连接等待中,我把这个方法去掉就可以打开该页面,我把这个方法中的连接数据库的语句放到<% %>中就可以!为什么?
请大家帮帮忙!
...全文
281 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文件(如有),仅供学习参考, 切勿用于商业用途。 --------
logo 设计不会,就这样先凑合了写道 Fuseblog预备开发带在线SHOP功能的个人博客系统.仿照Appfuse 提供一个完全自动化的ant构建脚本.在线SHOP的数据库建模图例已经 在博客中贴出.感兴趣的和我一起搭建,嘻嘻 文档博客地址: http://forum.sinomagazine.com 开发环境: Jcreator-4.5 JDK-1.5 Ant-1.6.1 MYSQL-5 Tomcat-5.5 Spring-2.5.6 Ibatis-2.3.4 问题事项: 1.在windows系统中,命令行中执行ant命令时,当指定的 构建脚本文件中包含中文字符,而构建脚本文件的编码是UTF-8时将会 Invalid byte 1 of 1-byte UTF-8 sequence. 的错误.这个问题尚未 知解决,故先采用GBK的编码. 2.在Jcreator中创建的项目,不支持UTF-8编码,缺省GBK. 以下先列出初步的的ant构建文件的代码: build.xml 方法。(这也是Ebean与Hibernatet等ORM的重要区别之一) l 支持基于Object Graph进行自动查询调优 ... by kyo100900 2009-04-07 回复 (7) jspx 一个来自于埃及的java web ... 怎么又冒出一个web框架? 看看现存的Java web应用程序框架,无一例外的要求花费大量的时间与精力后才可投入生产。对于大多数开发人员来说想要的东西很简单:友好,易于学习并且还具有生产力。因此我们开发了JSPX。 JSPX的主要目标就是打造成为一个“友好的开发者”框架。因为JSPX只基于标准的HTML标签和简单的Java POJO: 1. JSP ... by kyo100900 2009-01-07 回复 (42) NetBeans Struts2 插件更新 NetBeans Struts 2 插件(http://nbstruts2support.dev.java.net)很长时间没有更新了,我对原插件进行了少量修改,并在 NetBeans 6.7 上测试通过,其中修改包括:1.包含了最新的 Struts 2.1.6 库文件。2.更新至最新的 web framework API。3.重新设计了配置面板,支持更加灵活的最初配置。4.少量针对的 ... by gml520 2009-08-27 回复 (4) 新版本的PrettyTools发布,支持 ... PrettyFaces: EL API访问PrettyContext 支持JSF 1.1 增强了错误页面和servlet重定向 PrettyFaces是一个JSF1.2和JSF2.0的扩展,用来创建便于书签收藏、漂亮的网址。 PrettyFaces优雅的解决了这个问题,包括诸如功能:网页装载行动,无缝的跟faces的导航整合,动态视图的ID分配和管理参数分析,无需配置,兼容其他JSF框架。P ... by zly06 2009-09-09 回复 (0) 相关博客 ant模板 < ? xml version = "1.0" ?> < project name= "tax-calculator" default= "package" > < property name= "src.dir" location= "src" / > ... by article2008 2008-07-30 回复 (0) 代码备份build.xml

81,095

社区成员

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

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