jspjsp访问数据库的技术显示的问题

15:03 提问
jsp连接数据库第一步就出现问题
&%@ page language="java" contentType="text/ charset=utf-8"
pageEncoding="utf-8"%&
&%@ page contentType="text/ charset=utf-8" %&
&%@ page language="java" %&
&%@ page import="com.mysql.jdbc.Driver" %&
&%@ page import="java.sql.*" %&
&!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "用户登录&% try
{ Class.forName("com.mysql.jdbc.Driver");}
catch(Exception e){
e.printStackTrace();
String username=request.getParameter("in_user");
String password=request.getParameter("in_password");
String database="mydb";
String url="jdbc:mysql://localhost/"+
conn=DriverManager.getConnection(url,"root","root");
PreparedStatement pstmt=
sql="select * from user where username=? and password=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,username);
pstmt.setString(2,password);
rs=pstmt.executeQuery();
if(rs.next())
request.getSession(true);
session.setAttribute("username",username);
session.setAttribute("password",password);
session.setAttribue("enter","true");
response.sendRedirect("index.jsp");
else{out.println("您输入的信息有误,请重试!");response.setHeader("refresh", "5;URL=Login.jsp");
catch(Exception e){
out.print("系统出错,请重试");
%&HTTP ERROR 500
Problem accessing /MyFirstWeb/login.jsp. Reason:
PWC6033: Error in Javac compilation for JSP
PWC6199: Generated servlet error:
string:///login_jsp.java:6: ??? com.mysql.jdbc ???
PWC6197: An error occurred at line: 13 in the jsp file: /login.jsp
PWC6199: Generated servlet error:
string:///login_jsp.java:83: ?????
??? ?? setAttribue(java.lang.String,java.lang.String)
??? ?? javax.servlet.http.HttpSession
Caused by:
org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP
PWC6199: Generated servlet error:
string:///login_jsp.java:6: ??? com.mysql.jdbc ???
PWC6197: An error occurred at line: 13 in the jsp file: /login.jsp
PWC6199: Generated servlet error:
string:///login_jsp.java:83: ?????
??? ?? setAttribue(java.lang.String,java.lang.String)
??? ?? javax.servlet.http.HttpSession
****##** 貌似第一步Class.forName就错了,哪里错了了,我在项目右键properties-----java buile path------add external jars里加入了jmysql-connector-java-5.0.6-bin.jar啊 求大虾指点
按赞数排序
你的session定义在哪里,上面的代码上没有看到。如果没有定义,将上面的request.getSession(true);改成HttpSession = request.getSession(true);
你的session定义在哪里,上面的代码中没有看到,如果没有的话,把request.getSession(true);改成HttpSession session = request.getSession(true);
到底是什么问题啊 求大虾解答0。0
相关参考资料JSP数据库显示问题
[问题点数:40分,结帖人oklpcmh]
JSP数据库显示问题
[问题点数:40分,结帖人oklpcmh]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2014年7月 Java大版内专家分月排行榜第二
2015年1月 Java大版内专家分月排行榜第三2014年8月 Java大版内专家分月排行榜第三
2014年7月 Java大版内专家分月排行榜第二
2015年1月 Java大版内专家分月排行榜第三2014年8月 Java大版内专家分月排行榜第三
2014年7月 Java大版内专家分月排行榜第二
2015年1月 Java大版内专家分月排行榜第三2014年8月 Java大版内专家分月排行榜第三
2014年7月 Java大版内专家分月排行榜第二
2015年1月 Java大版内专家分月排行榜第三2014年8月 Java大版内专家分月排行榜第三
2014年7月 Java大版内专家分月排行榜第二
2015年1月 Java大版内专家分月排行榜第三2014年8月 Java大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。全国统一热线:400-667-9006028-
欢迎光临西部数码,我们将竭诚为您提供最优质的服务!
jsp连接sybase数据库中文显示问题终极解决办法!
作者 满胜这两天被如题的问题缠绕,好不容易解决掉了当时遇到的问题如下:Sybase运行在unix上,编码未知,JSP页面显示查询数据中文乱码pageEncoding和charset都已设置,tomcat的XML文件也已设置已经试过的办法有:1.
String temp = rsSearch.getString(a[i]);
if (temp != null) {
byte[] b = temp.getBytes (&8859_1&);
temp = new String(b,&GBK&);
out.print(temp);
}2.String temp = rsSearch.getString(a[i]);
byte[] buffer = new byte[temp.length()];
for (int i = 0; i&temp.length(); i
if (temp.charAt(i)&=0x100)
char c = temp.charAt(i);
byte[] buf = (&& c).getBytes();
] = (byte)buf[0];
] = (byte)buf[1];
] = (byte)temp.charAt(i);
temp= new String(buffer, 0, j);为什么这些用在MySQL等数据库就有效的方法用在sybase上就无效原因是sybase的连接跟其它JDBC连数据库有不同,需在连接时注明属性,dbURL 设为jdbc:sybase:Tds:hostname:port/dbname?charset=eucgb&jconnect_version=4 ,比如我的数据库charset=cp850 ,jconnect_version=3根据自己的情况适当更改就可以了另外,在jsp页面需要用到我最开始提到的方法1,至此,中文问题得到解决!上一篇: java编写TCP方式的通信程序
下一篇: `MDIP的生命周期
版权申明:本站文章均来自网络,如有侵权,请联系028- ,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
 热点关注
服务器技术
CopyRight ©  西部数码 版权所有
电话总机:028- (50线)      传真:028-
400电话: 400-667-9006developerWorks 社区
本文是 Java Brett McLaughlin 继第一篇 JSP 最佳实践文章后的后续文章,在文中,作者向您演示了如何扩展 JSP 技术中用于动态内容的包含功能。了解静态 include 伪指令和动态 jsp:include 元素之间的差异,搞清楚如何混合搭配这二者以获取最优性能。
(), 作家, O'Reilly and Associates
Brett McLaughlin 从 Logo 时代(还记得那个小三角吗?)就开始从事计算机工作了。他现在专门研究用 Java 和 Java 相关技术构建应用程序基础结构。过去几年,他一直在 Nextel Communications 和 Allegiance Telecom, Inc. 致力于实现这些基础结构。Brett 是 Java Apache 项目 Turbine 的共同创始人之一,该项目用 Java servlet 为 Web 应用程序开发构建可重用的组件体系结构。他还是 EJBoss 项目(一个开放源码的 EJB 应用程序服务器)和 Cocoon(一个开放源码的 XML Web 发布引擎)的志愿开发人员之一。可通过
与 Brett 联系。
JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP
include 伪指令将诸如页眉、页脚和导航组件之类的静态内容包含到 Web 页面中。和服务器端包含一样,JSP
include 伪指令允许某个页面从另一个页面提取内容或数据。清单 1 重温了
include 伪指令。
清单 1. JSP include 伪指令&![CDATA[
&%@ page language="java" contentType="text/html" %&
&title&&/title&
&meta http-equiv="Content-Type"
content="text/ charset=iso-8859-1" /&
&link href="/styles/default.css"
rel="stylesheet" type="text/css" /&
&%@ include file="header.jsp" %&
&%@ include file="navigation.jsp" %&
&%@ include file="bookshelf.jsp" %&
&%@ include file="/mt-blogs/index.jsp" %&
&%@ include file="footer.jsp" %&
include 非常适于将静态内容并入 Web 页面,但对于动态内容却不尽如人意。我们在前一篇文章中在试图重新装入高速缓存文件时发现了这一问题。与大多数页眉文件及页脚文件不同,动态内容变化频繁,必须时刻更新。我们将首先扼要地重述一下
include 伪指令的局限性,然后我将向您演示如何用
jsp:include 标记来扩展 JSP 的包含能力。
高速缓存问题
include 伪指令的不足之处有一个是:它会导致 Web 浏览器高速缓存所有页面。在处理诸如页脚、版权声明或一组静态链接之类的静态组件时,这是有意义的。这些文件不会改变,因此没有理由让 JSP 解释器不断地重新轮询其中的数据。凡是可能的地方,都应该实现高速缓存,因为它改善了应用程序的性能。
但是,有时侯,进行高速缓存会得不偿失。如果提入的内容来自使用动态数据(如 Weblog 或数据库驱动的 JSP 文件)的程序,甚至如果所包含的内容是经常变化的 HTML(如时间戳记),那么每当装入 Web 页面时,都需要显示这些文件或程序的最新版本。遗憾的是,JSP
include 伪指令并不具备这一功能。在测试和开发周期(请参阅侧栏“
”)中,在浏览器中禁用高速缓存通常能够解决这一问题。但是,对于实际使用的应用程序而言,性能是任何设计决策过程中的一项重要因素,禁用高速缓存并不是一种可行的长远之计。更好的解决方案是使用
jsp:include 标记。
jsp:include 标记jsp:include 只不过是一个不同于
include 的伪指令而已。
jsp:include 的优点在于:它
总是会检查所含文件中的变化。过一会儿我们将研究这一新标记的工作方式。但首先看一下两种
include 各自的代码,以便能够看到二者之间的异同。
清单 2 显示了一个简单页面,它使用了原始的 JSP
include 伪指令。
清单 2. JSP include 伪指令&![CDATA[
&%@ page language="java" contentType="text/html" %&
&title&JSP include element test&/title&
This content is statically in the main JSP file.&br /&
&%@ include file="included.html" %&
]]&清单 3 是同一个页面,只不过这里转成使用
jsp:include 标记。
清单 3. 转成使用 jsp:include&![CDATA[
&%@ page language="java" contentType="text/html" %&
&title&JSP include element test&/title&
This content is statically in the main JSP file.&br /&
&jsp:include page="included.html" flush="true" /&
]]&您应该注意这两种代码类型之间的两大区别。首先,
jsp:include 元素不使用属于
include 伪指令的
%@ 语法。实际上,
jsp 前缀让 JSP 编译器知道:它应该寻找标准 JSP 标记集中的元素。其次,指定要包含的文件的属性从
file 变成了
page 。如果愿意,可以自己测试一下新标记的结果。只需更改上一篇文章(请参阅
included.html 文件的内容,然后重新装入浏览器页面,就会立即看到新内容。
jsp:include 是如何工作的
如果您有点爱刨根问底,那么可能十分想知道
jsp:include 标记的行为为什么与
include 伪指令不同。道理其实十分简单:
jsp:include 包含的是所包含 URI 的
响应,而不是 URI 本身。这意味着:对所指出的 URI 进行
解释,因而包含的是
生成的响应。如果页面是 HTML,那么将得到一点也没有变化的 HTML。但是,如果是 Perl 脚本、Java servlet 或者 CGI 程序,那么得到的将是从该程序解释而得的结果。虽然页面通常就是 HTML,但实际程序恰好是达到目的的手段。而且,由于每次请求页面的时候都会进行解释,因此从来不会象使用
include 伪指令时那样高速缓存结果。虽然这只是很小的变动,但它却导致了您所见到的行为中的全部差异。
一种混合搭配的解决方案include 伪指令在某些网站上有其用武之地。例如,如果站点包含一些(如果有变化,也很少)几乎没有变化的页眉、页脚和导航文件,那么基本的
include 伪指令是这些组件的最佳选项。由于
include 伪指令采用了高速缓存,因此只需放入包含文件一次,其内容就会被高速缓存,其结果会是极大地提高了站点的性能。
然而,对于现在许多 Web 应用程序或站点而言,地毯式的高速缓存并不能解决问题。虽然页眉和页脚可能是静态的,但是不可能整个站点都是静态的。例如,从数据库提取导航链接是很常见的,并且许多基于 JSP 技术的站点还从其它站点或应用程序上的动态 JSP 页面提取内容。如果正在处理动态内容,那么需要采用
jsp:include 来处理该内容。
当然,最好的解决方案是经常把这两种方法混合搭配使用,将每种构造用到最恰当的地方。清单 4 是混合搭配包含解决方案的一个示例。清单 4. 混合搭配解决方案&![CDATA[
&%@ page language="java" contentType="text/html" %&
&title&&/title&
&meta http-equiv="Content-Type" content="text/ charset=iso-8859-1" /&
&link href="/styles/default.css" rel="stylesheet" type="text/css" /&
&jsp:include page="header.jsp" flush="true"&
&jsp:param name="pageTitle" value=""/&
&jsp:param name="pageSlogan" value=" " /&
&/jsp:include&
&%@ include file="/navigation.jsp" %&
&jsp:include page="bookshelf.jsp" flush="true" /&
&jsp:include page="/mt-blogs/index.jsp" flush="true" /&
&%@ include file="/footer.jsp" %&
]]&上面的代码显示了前一篇文章中的示例索引页面。导航链接和页脚是静态内容,一年最多更改一次。对于这些文件,我使用了
include 伪指令。内容窗格包含 Weblog 和“bookshelf”组件,它们是动态生成的。这两个组件需要一直更新,因此对它们,我使用了
jsp:include 标记。
header.jsp 文件有点奇怪。这个组件是从另一个本质上是静态的 JSP 页面提取的。但是,正如您将注意到的那样,它从包含页提取页“标语”,然后将它显示出来。要处理这一共享信息,我们必须向页眉文件传入参数。而要处理那些参数,就必须使用
jsp:include 元素。
如果您想了解有关那些参数的内容,请放心,后续文章不久就将能满足您的需要。在下一篇文章中,我将解释 JSP 参数以及它们是如何与 JavaBeans 组件交互的。届时,我们网上见。
参考资料 为了实践本系列文章中的练习,您需要与 JSP 兼容的 Web 容器,如
您可能也想研究一下使用符合 JSP 的 IDE。下面有几个 IDE 可供选择:
在本系列中的
中了解更多关于
include 伪指令的内容。请参阅
我们在这里只简单地讨论了 JSP 在开发和测试中的使用,但是“
developerWorks,2001 年 8 月)这篇文章中就这一主题进行了十分全面的讨论。
要获得对 JSP 技术的指导性简介,请试着学习 Noel Bergman 的教程“
developerWorks,2001 年 8 月)。
要了解 JSP 技术的实质,最好的办法是阅读
Hans Bergsten 的
(O'Reilly & Associates,2002 年)是学习 JSP 必不可少的参考资料。
”虽略显过时(
developerWorks,2001 年 6 月),但仍不失为一份对一些值得一读的 JSP 书籍所做的优秀书评。
如果您喜欢
JSP 最佳实践,那么您可能也想查阅
JSP 技术是基于 Java Servlet 技术。阅读 Jason Hunter 的
(O'Reilly & Associates,2002 年)以了解更多关于 Servlet 的知识。
,其中完整罗列了 developerWorks 上免费的 Java 技术教程。
中找到关于 Java 编程各个方面的数百篇文章(包括更多关于 JSP 技术方面的文章)。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Java technology, Web developmentArticleID=162847ArticleTitle=JSP 最佳实践: 用 jsp:include 控制动态内容publish-date=栏目:Java 数据类型|类|对象|封装|继承|多态等特性
将数据库查询结果显示到JSP页面上 List+Map
Thu Sep 06 11:09:30 CDT 2012
List+Map不使用实体对象将数据库查询结果显示到页面上。通过JDBC ResultSet 可获取查询结果(存在于数据库缓冲区内),但在Statement或Connection关闭后,ResultSet即不可用。因此需要一种方式取出所有查询结果并传递至JSP页面。
背景: 需要将数据库查询结果在JSP中一列表的方式显示。问题:通过JDBC ResultSet 可获取查询结果(存在于数据库缓冲区内),但在Statement或Connection关闭后,ResultSet即不可用。因此需要一种方式取出所有查询结果并传递至JSP页面。解决方法: 遍历ResultSet取出所有数据封装进Collection。 具体做法:1. 生成一个List对象(List list = new ArrayList());2. 生成一个Map对象(Map map = new HashMap())。使用Map封装一行数据,key为各字段名,value为对应的值。(map.put(“USER_NAME”,rs.getString(“USER_NAME”));3. 将第2步生成的Map对象装入第1步的list对象中(list.add(map););4. 重复2,3步直到ResultSet遍历完毕在com.taiping.life.util.DBUtil.resultSetToList(ResultSet rs)方法中已经实现了上述过程(所有列名均使用大写),可参考使用。示例代码: // 查询数据库部分代码 import com.taiping.life.util.DBU … Connection conn = DBUtil.getConnection(); PreparedStatement pst = ResultSet rs = try{&&&&
String sql = “select emp_code,real_name from t_employee where organ_id=?”;&&&&
pst = conn.preparedStatement(sql);&&&&
pst.setString(1,”101”);&&&&
rs=pst.executeQuery();&&&&
List list = DBUtil.resultSetToList(ResultSet rs);&&&&
rs.close();&&&&
rst.close();&&&&
}finally{&&& DBUtil.close(rs,pst,conn);}…request.setAttribute(“resultList”,list);…// JSP 方式显示&%=rowData.get(“USER_NAME”)%&// 标准标签方式显示&ul class="maxnew_list"&&c:forEach items="${resultList}" var="emp"&&li&${emp.EMP_CODE } -- ${emp.REAL_NAME }&/li&&/c:forEach&&/ul&适用场合: 适用于多条查询语句或需要对查询结果进行处理的情况。
信息来源:
Sun Mar 16 21:06:01 CDT 2014
Fri Jan 18 06:18:20 CST 2013
还真是标准的 jsp 方式,不过想知道一个比较实用的方式,比如:标准标签,应该怎么做呢?
Mon Nov 19 09:19:24 CST 2012
终于解决了邮件乱码的问题,好高兴啊。
Mon Nov 12 08:09:00 CST 2012
Struts 标签嵌套循环的时候,value 属性不能使用 EL 表达式,被逼无奈只有还用实体类搞定。
Sun Nov 11 06:58:51 CST 2012
不错,挺实用的。用Map比较灵活。

我要回帖

更多关于 jsp显示后台数据 的文章

 

随机推荐