当前位置:文档之家› 水晶报表的jsp实现

水晶报表的jsp实现

水晶报表的jsp实现
水晶报表的jsp实现

水晶报表的jsp实现

?最近为客户开发一个mis系统,Java技术,b/s结构.客户要求系统的报表采用水晶报表.

怎样在jsp中实现水晶报表呢?找遍了所有的资料,水晶报表的web实现倒是很多,但都讲的是微软的.net方案.jsp中如何实现水晶报表的动态显示呢?

经过一段时间的痛苦摸索,现在把我的方案介绍给大家,希望各位大哥批评指正我的问题:

需要动态的显示水晶报表,并且要根据我传递的一个参数(BH)的值动态的显示数据.并且要可以把水晶报表导出为Word,Excel,pdf等格式

我的解决方案:

一:下载crystal reports 10 for BEA weblogic workshop

二:安装crystal reports 10 for BEA weblogic workshop;

三:如果安装成功,则在C:\Program Files\Common Files\Crystal Decisions\2.5\bin目录下,可以找到CRDB_JavaServer.ini文件.该文件很重要,里面的内容

关系到水晶报表如何访问数据库.我的水晶报表采用jdbc的方式访问Oracle数据库,配置如下: [Common]

PATH = C:\bea\jdk141_05\bin

CLASSPATH = C:\Projects\Drivers\jdbc\classes12.jar;

C:\Projects\Drivers\jdbc\msbase.jar;

C:\Projects\Drivers\jdbc\MSSQLserver.jar;

C:\Projects\Drivers\jdbc\msutil.jar;

C:\Projects\Drivers\jdbc\common.jar;

C:\Projects\Drivers\jdbc\db2fs.jar;

C:\Projects\Drivers\jdbc\db2java.zip;

C:\Projects\Drivers\jdbc\db2jcc.jar;

C:\Projects\Drivers\jdbc\weblogic.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\naming.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\namingclient.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\namingserver.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\cmImpl.jar;

D:/Progra~1/IBM/WebSph~1/Applic~1\v5.1.1\runtimes\base_v51\lib\j2cImpl.jar;

C:/projects/drivers/jdbc/weblogic.jar;

C:\Program Files\Common Files\Crystal Decisions\2.5\bin\CRDBJavaServer.jar;

C:\bea\weblogic81\server\lib\ojdbc14.jar

IORFileLocation = ${TEMP}

JavaServerTimeout = 1800

JVMMaxHeap = 64000000

JVMMinHeap = 32000000

[CRDB_JDBC]

CacheRowSetSize = 100

JDBCURL = jdbc:oracle:thin:@192.168.1.99:1521:pwsc

JNDIURL =

JDBCUserName = testuser

JDBCDriverName = oracle.jdbc.driver.OracleDriver

?JNDIUserName = weblogic

JNDIConnectionFactory =

JNDIInitContext = /

GenericJDBCDriverBehavior = DB2

[CRDB_XML]

PREREADNBYTE = 5000

CacheRowSetSize = 100

XMLLOCALURL =

SCHEMALOCALURL =

XMLHTTPURL =

SCHEMAHTTPURL =

USETEMPFile = TRUE

以上是配置文件,需要说明的是:

1:由于我采用的是jdbc的方式访问数据库,所以CLASSPATH中一定要把

C:\bea\weblogic81\server\lib\ojdbc14.jar加进去,它是jdbc的驱动

2:[CRDB_JDBC]中的:JDBCURL = jdbc:oracle:thin:@192.168.1.99:1521:pwsc 是我要访问的数据库名称.JDBCUserName = testuser是设置用户名,

JDBCDriverName = oracle.jdbc.driver.OracleDriver是jdbc驱动名称

四:在水晶报表编辑器中编辑我要用的报表.由于我需要动态的给报表传递参数,所以我在报表中设置了一个参数字段,水晶报表根据这个参数字段,就可以显示相应的

数据,参数字段命名为BH,在公式编辑器中编写如下代码:

IF {?BH}<>"" THEN

{GG_BPBJ.JLBH}={?BH}

ELSE

{GG_BPBJ.JLBH}="1" OR {GG_BPBJ.JLBH}<>"1"

以上代码的意思是:如果bh参数不为空,则显示{GG_BPBJ.JLBH}等于参数BH的记录,否则显示出所有的记录

(大家可能觉得{GG_BPBJ.JLBH}="1" OR {GG_BPBJ.JLBH}<>"1"很可笑,是啊,我开始是写成"true"

了,在水晶报表编辑器中可以很好的运行,但方到web上显示就有

问题,万般无奈,只有如此了,:( )

五:在weblogic workshop中新建一个web项目,用右键选择该项目文件夹,选择"新建",选择"crystal report",则在该web项目根目录下自动新建了一个

crystalreportviewers10目录,里面有显示水晶报表需要的页面元素系统自动添加了开发水晶报表需要的jar包,共有13个jar文件(位于WEB_INF\LIB目录下),

并增加了一些水晶报表专用的标签(在WEB_INF\SRC下)

六:需要特别注意的是:在WEB_INF下的web.xml文件也随之改动,改动后的web.xml文件如下:

"https://www.doczj.com/doc/721614872.html,/dtd/web-app_2_3.dtd">

Workshop Application

weblogic.httpd.inputCharset./*

GBK

crystal_image_uri

/webmis/crystalreportviewers10

PageFlowJspFilter

https://www.doczj.com/doc/721614872.html,ui.pageflow.PageFlowJspFilter

PageFlowJspFilter

*.jsp

com.bea.wlw.runtime.core.servlet.WebappContextListener

messageServlet

https://www.doczj.com/doc/721614872.html,earth.servlets.getTaskServlet

1

action

https://www.doczj.com/doc/721614872.html,ui.pageflow.DynamicSubappActionServlet config

/WEB-INF/jpf-struts-config.xml

config/-global

/WEB-INF/jpf-struts-config--global.xml

debug

2

detail

2

2

drawImage

https://www.doczj.com/doc/721614872.html,earth.drawimage.DrawImageServlet

drawImage

drawImage

netui-tags-Html.tld

/WEB-INF/netui-tags-html.tld

ust have *.do comenetui-tags-databinding.tld

/WEB-INF/netui-tags-databinding.tld

netui-tags-template.tld

/WEB-INF/netui-tags-template.tld

/crystal-tags-reportviewer.tld

/WEB-INF/crystal-tags-reportviewer.tld

其中:

crystal_image_uri

/webmis/crystalreportviewers10

很关键,它设置了水晶报表专用的crystalreportviewers10路径(第五步中自动建的

crystalreportviewers10目录),如果设置错误,将来点击水晶报表自带的

导出和打印按钮是就会报页面错误,并且水晶报表自己的各种翻页,导出等图标也无法正常显示.

七:把编辑好的水晶报表(后缀命为rpt)放在一个目录下(我自己建了一个report目录,专门存放报表文件)

八:可以写程序了:

1.编写ReportInit类.作用:用于传递参数BH.这个类很关键,负责把java的参数值传递到水晶报表文

件.

2.在页面流中增加showRpt操作:其实就是实例化一个ReportInit类.

3.编写viewer.jsp文件用来动态显示水晶报表.

后面有我的源代码,请大家批评指正.

存在的问题:

1:水晶报表导出成pdf文件时有问题:汉字显示为乱码,不知何故?此问题困扰我几个月了,没法解决2:无法把打印/导出页面汉化:在crystalreportviewers10\js目录下有一系列strings命名的js文件,我猜测是用来国际化页面的,可是我修改

strings_zh,js,strings_en.js,没有什么效果.

3:在浏览器中显示水晶报表后,关闭显示页面,该水晶报表依然和数据库连接,(可由select * from v$session 查看oracle的连接数).如果在

viewer.jsp中加入断开连接的语句:

viewer.dispose();

rptSource.dispose();

则只能显示一页报表.并且打印和导出不能工作.

以上问题困扰我很久,虽然并不影响使用,但心中还是不是很爽.希望高手指点.

源程序:

/*

* Create Date: 2004-8-14 11:06

* Create By: 李春雷

* purpose:设置水晶报表的查询参数(目前支持7个参数的查询,有用的参数为编号) */

package https://www.doczj.com/doc/721614872.html,earth.report;

import com.crystaldecisions.report.web.viewer.*;

import com.crystaldecisions.sdk.occa.report.data.*;

import com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory;

import com.crystaldecisions.sdk.occa.report.reportsource.IReportSourceFactory2;

import com.crystaldecisions.sdk.occa.report.reportsource.IReportSource;

public class ReportInit

{

private IReportSource rptSource;

private Fields fields;

public ReportInit(){

rptSource = null;

fields = null;

}

public IReportSource getRptsource(){

return rptSource;

}

public Fields getFields(){

return fields;

}

public boolean setReport(String fname,String rptID){

//获得查询条件

String FileName = fname + ".rpt";

String BH = rptID;

String path = "report/"+FileName; //报表文件路径

?try{

IReportSourceFactory2 rsf = new JPEReportSourceFactory();

java.util.Locale localetest = java.util.Locale.CHINA;

rptSource = (IReportSource)rsf.createReportSource(path,localetest);

fields = new Fields();

ParameterField pfield1 = new ParameterField(); //编号

ParameterField pfield2 = new ParameterField(); //单位

ParameterField pfield3 = new ParameterField(); //人

ParameterField pfield5 = new ParameterField(); //FIELD5

ParameterField pfield6 = new ParameterField(); //FIELD6

ParameterField pfield4_KSSJ = new ParameterField(); //开始时间

ParameterField pfield4_JSSJ = new ParameterField(); //结束时间

Values vals1 = new Values();

Values vals2 = new Values();

Values vals3 = new Values();

?Values vals5 = new Values();

Values vals6 = new Values();

Values vals4_KSSJ = new Values();

Values vals4_JSSJ = new Values();

ParameterFieldDiscreteValue pfieldDV1 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue pfieldDV2 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue pfieldDV3 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue pfieldDV5 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue pfieldDV6 = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue pfieldDV4_KSSJ = new ParameterFieldDiscreteValue();

ParameterFieldDiscreteValue pfieldDV4_JSSJ = new ParameterFieldDiscreteValue();

//设置第一个参数:编号

pfield1.setReportName("");

pfield1.setName("BH");

pfieldDV1.setValue(BH);

pfieldDV1.setDescription("编号");

vals1.add(pfieldDV1);

pfield1.setCurrentV alues(vals1);

//设置第二个参数:单位部门

pfield2.setReportName("");

pfield2.setName("DW");

pfieldDV2.setV alue("");

pfieldDV2.setDescription("发单部门");

vals2.add(pfieldDV2);

pfield2.setCurrentV alues(vals2);

//设置第三个参数:人

pfield3.setReportName("");

pfield3.setName("REN");

pfieldDV3.setV alue("");

pfieldDV3.setDescription("申请人、下达人、操作人、负责人等");

vals3.add(pfieldDV3);

pfield3.setCurrentV alues(vals3);

//设置第五个查询字段

pfield5.setReportName("");

pfield5.setName("FIELD5");

pfieldDV5.setV alue("");

pfieldDV5.setDescription("查询字段5:任务来源线路名称等");

vals5.add(pfieldDV5);

pfield5.setCurrentV alues(vals5);

//设置第六个查询字段

pfield6.setReportName("");

pfield6.setName("FIELD6");

pfieldDV6.setV alue("");

pfieldDV6.setDescription("查询字段6:更改原因、工作内容等");

vals6.add(pfieldDV6);

pfield6.setCurrentV alues(vals6);

//设置开始时间

pfield4_KSSJ.setReportName("");

pfield4_KSSJ.setName("KSSJ");

pfieldDV4_KSSJ.setV alue("");

pfieldDV4_KSSJ.setDescription("开始时间");

vals4_KSSJ.add(pfieldDV4_KSSJ);

pfield4_KSSJ.setCurrentV alues(vals4_KSSJ);

//设置结束时间

pfield4_JSSJ.setReportName("");

pfield4_JSSJ.setName("JSSJ");

pfieldDV4_JSSJ.setV alue("");

pfieldDV4_JSSJ.setDescription("结束时间");

vals4_JSSJ.add(pfieldDV4_JSSJ);

pfield4_JSSJ.setCurrentV alues(vals4_JSSJ);

//参数字段和报表关联

fields.add(pfield1);

fields.add(pfield2);

fields.add(pfield3);

fields.add(pfield5);

fields.add(pfield6);

fields.add(pfield4_KSSJ);

fields.add(pfield4_JSSJ);

return true;

}

catch(Exception e){

?System.out.println("Class:ReportInit错误:"+e);

return false;

}

}

}

//在页面流中增加如下操作:

/**

* @jpf:action

* @jpf:forward name="false" path="error.jsp"

* @jpf:forward name="sUCcess" path="viewer.jsp"

*/

protected Forward showRpt()

{

String rptid = this.getRequest().getParameter("rptID");

String rptBH = this.getRequest().getParameter("rptBH");

String rptName = dbCtrl.getRptCNName(rptid);

if ((rptName!=null) && (rptBH!=null)) {

ReportInit rpt = new ReportInit();

boolean result = rpt.setReport(rptName, rptBH);

if(result==true) {

Fields fields = rpt.getFields();

IReportSource rptSource = rpt.getRptsource();

this.getSession().setAttribute("fields", fields);

?System.out.println("Class:ReportInit错误:"+e);

return false;

}

}

}

//在页面流中增加如下操作:

/**

* @jpf:action

* @jpf:forward name="false" path="error.jsp"

* @jpf:forward name="sUCcess" path="viewer.jsp"

*/

protected Forward showRpt()

{

String rptid = this.getRequest().getParameter("rptID");

String rptBH = this.getRequest().getParameter("rptBH");

String rptName = dbCtrl.getRptCNName(rptid);

if ((rptName!=null) && (rptBH!=null)) {

ReportInit rpt = new ReportInit();

boolean result = rpt.setReport(rptName, rptBH);

if(result==true) {

Fields fields = rpt.getFields();

IReportSource rptSource = rpt.getRptsource();

this.getSession().setAttribute("fields", fields);

?this.getSession().setAttribute("rptSource", rptSource);

return new Forward("success");

} else {

return new Forward("false");

}

}

return new Forward("false");

}

//viewer.jsp用来动态显示水晶报表.viewer.jsp的内容如下:

<%@ page language="java" contentType="text/html;charset=utf-8"%>

<%@ page import= "com.crystaldecisions.report.web.viewer.*,

com.crystaldecisions.sdk.occa.report.data.*,

com.crystaldecisions.reports.reportengineinterface.JPEReportSourceFactory,

com.crystaldecisions.sdk.occa.report.reportsource.IReportSourceFactory2,

com.crystaldecisions.sdk.occa.report.reportsource.IReportSource"%>

<%@ taglib uri="netui-tags-html.tld" prefix="netui"%>

<%

//fields rptSource

//String name = (String)request.getAttribute("nametest");

//System.out.println("name="+name);

%>

<%

IReportSource rptSource = (IReportSource)session.getAttribute("rptSource");

Fields fields = (Fields) session.getAttribute("fields");

ConnectionInfos connInfos = new ConnectionInfos();

IConnectionInfo connInfo1 = new ConnectionInfo();

connInfo1.setUserName("testuser");

connInfo1.setPassword("test");

connInfos.add(connInfo1);

CrystalReportV iewer viewer = new CrystalReportV iewer();

viewer.setReportSource(rptSource);

viewer.setDatabaseLogonInfos(connInfos);

viewer.setParameterFields(fields);

viewer.setEnableParameterPrompt(true);

viewer.setOwnPage(true);

viewer.setOwnForm(true);

viewer.setPrintMode(CrPrintMode.ACTIVEX);

viewer.setHasEXPortButton(true);

viewer.setHASPrintButton(true);

viewer.setHasLogo(false);

viewer.processHttpRequest(request, response,getServletConfig().getServletContext(), out); viewer.refresh();

//viewer.dispose();

//rptSource.dispose();

%>

JSP JavaBean Servlet实现用户登录和注册

JSP JavaBean Servlet实现用户登录和注册 1 数据库: create database student; use student; create table user( id int primary key auto_increment, user varchar(50) not null, pwd varchar(50) not null, name varchar(50) not null, *** varchar(50) not null, age int(50) not null ); 2 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() "://" request.getServerName() ":" request.getServerPort() path "/"; %> 欢迎来到学生管理系统

用户登录

BBS论坛系统开题报告

BBS论坛毕业论文开题报告 研究课题:小型论坛系统 姓名:学号:指导老师: 一课题研究的目的和意义 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。这次我们所设计的课题正是互联网与社会生活之间的紧密关系的体现,现今的社会,人们已经离不开了网络,网络已经成为人与人之间交流的一种形式,它能够把事情的复杂化转为简单化。 进入21世纪,计算机技术迅速向着网络化的、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息(多媒体)的新一代网络版应用软件,而目前网络版软件中似乎存在着两种不同的趋势,一种是称为客户端——服务器的C/S结构应用系统,这类软件具有结构严谨,运行效率高,服务器端压力小,安全性好等优点,被广泛运用于局域网中。另一种,也是本毕业设计所采用的,是称为浏览器——服务器的B/S结构应用系统,它的特点是在客户端直接采用了功能强大的浏览器软件作为界面,其优点在于软件开发效率高,客户端不受操作平台的限制、也不受地域的限制,网络传输量少,即适用于局域网,更适用于Internet,而且投资小、见效快,用户可以不必进行服务器方面的投资,而是去租用,甚至是免费使用ISP的服务器资源,因而受到越来越多中小型单位的青睐。 现在大部分论坛都是基于B/S结构实现的。论坛也常被简称为BBS(Bulletin Board System)。随着中国网络的普及和计算机及其外设的大幅度降价,Internet 这个概念逐渐深入人心。中国网民的数量呈几何级数量增长,BBS的普及程度也直追Email。每个网站几乎都拥有自己的BBS或者BBS链接,BBS社区提供给用户的服务是全面而且非常友好的,用户在社区中可以根据自己的喜好设置不同的显示风格,根据自己的需求定制各种服务。通过论坛更加快捷的了解企业员工的信息,而建立会员服务的基础是建系论坛管理系统!通过应用该系统可以实现用户与用户间的交流、企业与企业间的信息交互,利用网络经济而又快捷地与外

基于JSP+Oracle的BBS论坛系统的开发

学生实训任务书 一、题目 基于JSP+Oracle的BBS论坛系统的开发 二、学生信息 专业:Java08-2班学号: 2008131002** 姓名:*** 三、用户需求及约束条件 1、基本要求: ⑴用JSP+Oracle实现BBS论坛系统的动态网站开发。 ⑵系统总体模块分为:用户注册模块、用户登录模块、信息显示模块、信息操作模块、用户管理模块和数据库模块。各模块间的关系如下图所示: 2、扩展的系统功能模块: ◆积分等级设置模块 ◆版面管理模块 ◆查询(“版主”或“管理员”对内容的)改动记录 ◆文件上传进度条 ◆搜索帖子 3、高级编程: ◆使用柜架技术开发基于Struts/Springs/Hibernamte/Ajax的BBS论坛系统。 四、实训的目标、要求、技术路线及设计规格

1、设计的目标: 使用户能够自由地发布、回复信息,交流看法和观点,形成一个交流互动的平台; 2、设计的要求: 通过一个完整的论坛系统,从系统需求分析开始,到系统总体架构的实现,再到数据库系统设计,以及最后各功能模块的实现,把所学过的JSP知识和Oracle知识系统地贯穿起来,熟悉了Web软件系统开发的一整套流程。 3、技术路线: 使用B/S工作模式,以Oracle作为后台数据库,JSP为前台编程语言。还涉及到Servlet、JavaBean、JSTL、SSH等技术。 开发环境:MyEclipse 7.0 Ga、Tomcat 6.0、Oracle 10g、Dreamweaver等。 4、设计规格: 提交实训报告的正文部分内容包括: ⑴系统需求分析;⑵系统总体架构设计; ⑶数据库设计;⑷数据库对象的创建; ⑸系统各模块的页面编程实现;⑹系统的运行测试(可以通过屏幕捕捉来抓图)。 5、所有的设计工作要求同学们真实地、独立地完成。 五、工作量 见《实训进度日历》。 六、考核形式、考核时间、考核指标及成绩评定 实训成绩构成:纪律、态度和平时表现20%;实训结果30%;实训报告30%;实践操作能力20%。 考核形式: ⑴指导教师每日对学生考察、评估和考核; ⑵最后对实训项目完成的质量进行考核和验收。

jsp动态网页实用代码

实验2:运用JSP编写动态网页 一.选题问题 1)编写一个购物车,实现向购物车里添加商品、移除指定商品和清空购物车的功能 2)延续实验一 二.程序设计 1.功能 1)购物车:可以实现向购物车里添加指定商品,移除指定商品,清空购物车的基本功能,另外还可以实现简单的结算功能。 2)实验一延续:实现登录、以及同一用户不能重复登录的功能 2.技术 1)必用技术: JSP内置对象:Request,Response 2)选用技术: JSP、JavaScript:Session,application 三.数据设计 1.含义 1)购物车: 1>goods.html:用来显示商品清单,选择购买数量,以及添加到购物车 2>cart.jsp:用来查看添加到购物车的商品,实现商品的删除,以及返回购物页面继续添加或者跳转到结算页面支付。使用了request获得信息,session创建表单,调用了自创建的hzsb类。 3>hzsb.jsp:定义了一个“汉子识别”的类,该类可以把从页面中获取的汉子自动转换成单字节编码,并在显示时再转换回来。 4>cost.jsp:结算页面。负责将购物车里所有的商品及数量显示出来并且进行统计,得到总计钱数。使用了request获得信息,session创建表单,调用hzsb类。 2)实验一添加功能 1>web.html:显示实验一中的页面,其中“登录”超链接到index.jsp;“注册”超链接到count.jsp。 2>index.jsp:登录页面。用于用户名和密码的输入,输入完成后点击“确定”,可以跳转到rsInfo.jsp页面查看所输入的信息是否保存。 3>rsInfo.jsp:查看页面。该页面用于显示所输入的信息。另外该页面调用了response对象,用于显示当前的时间,并用于页面的刷新。 4>count.jsp:“同一用户只能登录一次页面”,即用户一旦登录就不能够通过反复刷新页面造成“多次登录”的假象。该页面调用了application对象,用于覆盖掉刷新的次数。 2.作用范围 1)购物车 1>goods.html: 作用于“购物车实例”页面,代码如下 购物车实例

jsp实例:一个简单的用户登陆系统

三个文件如下: //登录界面 /** *//** * @(#)Login.Java * * * @author shiyi05 * @version 1.00 2008/5/10 */ package com.rao; import javax.Servlet.http.*; import java.io.*; public class Login extends HttpServlet { public Login() { } //处理Get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) { try { //中文乱码 res.setContentType("text/html; charset=gbk");

PrintWriter pw=res.getWriter(); //返回登陆界面 pw.println(""); pw.println(""); pw.println("

登陆界面

"); pw.println(""); pw.println("用户名:
"); pw.println("密码:
"); pw.println("
"); pw.println(""); pw.println(""); } catch(Exception ex) { ex.printStackTrace(); } } public void doPost(HttpServletRequest req,HttpServletResponse res) { this.doGet(req,res); } } //用户验证 /** *//** * @(#)LoginCl.java

BBS论坛设计毕业设计

班级XXXX 学号XXXXX 毕业论文(设计) 题目BBS论坛系统 姓名xxx 系部信息工程系 专业软件开发 指导教师XXX 职称助教 日期

江苏畜牧兽医职业技术学院毕业论文(设计) BBS论坛系统 陈新 【摘要】当今,随着网络的迅速发展,制作BBS论坛的技术和方法也越来越多。本文主要讲述利用Java Web的相关技术来制作一个简单论坛。通过实际制作,实现了BBS论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;注册功能,用户首次登陆,需要先注册,注册时需要用户填写个人信息。除此之外,还有浏览帖子、发表帖子、回复贴子等等功能。制作本论坛所用的前台软件是MyEclipse,后台数据库是MySQL,运行时所用的服务器是Tomcat,综合运用了HTML、JSP以及JavaScript语言。 全文先对用到的软件进行了简单的介绍,然后依次对系统的应用进行需求分析、总体设计、详细设计;最后简要介绍了系统的发布和测试。 【关键词】BBS论坛;JSP技术;登陆;注册;浏览贴子;发表帖子;回复贴子。 1 概况 当前形势下,BBS论坛种类繁多,通过BBS可随时取得国际最新的软件及信息,也可以通过BBS来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及医学等等各种有趣的话题,更可以利用BBS来刊登一些“征友”、“廉价转让”及“公司产品”等启事。只要您拥有1台计算机、1只调制解调器和1条电话线,就能够进入这个“超时代”的领域。 1.1 BBS历史背景 BBS的英文全称是Bulletin Board System,翻译为中文就是“电子公告板”。BBS最早是用来公布股市价格等类信息的,当时BBS连文件传输的功能都没有,而且只能在苹果计算机上运行。早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS 才开始渐渐普及开来。近些年来,由于爱好者们的努力,BBS的功能得到了 1

JSP的特点和其它动态网页开发技术比较

JSP的特点和其它动态网页开发技术比较 发布时间:2007.06.27 05:36来源:赛迪网技术社区作者:dxaw JSP技术特点: 1.将内容的生成和显示进行分离 使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。 在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。 2.强调可重用的组件 绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。 3.采用标识简化页面开发 Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。 标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。 JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。 由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。 作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。 与其它动态网页技术的比较: 与传统的CGI方式相比 a. 后台实现逻辑是基于Java Component的,具有跨平台的特点 b. 将应用逻辑与页面表现分离,使得应用逻辑能够最大程度得到复用,从而提高开发效率 c. 运行比CGI方式高,尤其对于数据库访问时,提供了连接池缓冲机制,使运行所需资源最小

JSP简介

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。 JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。 JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 1.JSP技术的强势 (1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。 (2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是现而易见的。 (3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。 (4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利

JavaWeb用户登录功能的实现

JavaWeb用户登录功能的实现 大四快毕业了,3年多的时间中,乱七八糟得学了一大堆,想趁找工作之前把所学的东西整理一遍,所以就尝试着做一个完整的JavaWeb系统,这几天试着做了一个用户登录的功能,分享给大家,肯定有很多不完善的地方,希望大家提提宝贵的意见,必将努力完善它。 我贴出此篇博客的目的是,将一些以后有可能用到的重复性的代码保存下来,用于以后需要时直接复制粘贴,所以,此篇博客大部分都是代码,讲解性的语句并不多,如果大家看得头疼,不如不看,以后万一用到的话再拿过来修修改改即可。 有可能用得到的部分:生成验证码的Java类、操作数据库的Java类 用户登录模块采用了多种语言: Html、css、query:页面 Servlet、java:后台 运行效果图: Login.html代码: 登录界面

登录
JQuery代码:login.js $(function(){ $(".loginform_submit").click(function(){ if(checkInput()) { $("form").action("/loginServlet"); }else{ return false;

基于JSP的BBS实现 -开题报告

科学技术学院毕业设计(论文)开题报告 题目:基于JSP的BBS实现 学科部:信息学科部 专业:计算机科学与技术 班级:03级(1)班 学号:7000803008 姓名:梁炽昌 指导教师:胡军 填表日期:2007 年 3 月16 日

一、选题的依据及意义: 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。计算机将具备更多的智能成分,它将具有多种感知能力、一定的思考与判断能力及一定的自然语言能力。除了提供自然的输入手段(如语音输入、手写输入)外,让人能产生身临其境感觉的各种交互设备已经出现,虚拟现实技术是这一领域发展的集中体现。通过Internet与世界各地的其它用户自由地进行通信,可从Internet中获得各种信息。人们已充分领略到网络的魅力,Internet大大缩小了时空界限,通过网络人们可以共享计算机硬件资源、软件资源和信息资源。“网络就是计算机”的概念被事实一再证明,被世人逐步接受。 BBS是电子公告板系统(Bulletin Board System)的英文缩写,它通过在计算机上运行服务软件,允许用户使用终端程序通过电话调制解调器拨号或者Internet来进行连接,执行下载数据或程序、上传数据、阅读新闻、与其它用户交换消息等功能。许多BBS由站长(通常被称为SYSOP)业余维护,而另一些则提供收费服务,开辟了一块“公共”空间供用户读取和讨论其中信息。 二、国内外研究现状及发展趋势(含文献综述): 目前论坛系统的开发主要技术有ASP、PHP、JSP、CGI、https://www.doczj.com/doc/721614872.html,。通过BBS系统可随时取得国际最新的软件及信息,也可以通过BBS系统来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及医学等等各种有趣的话题,更可以利用BBS系统来刊登一些“征友”、“廉价转让”及“公司产品”等启事,而且这个园地就在你我的身旁。只要您拥有1台计算机、1只调制解调器和1条电话线,就能够进入这个“超时代”的领域,进而去享用它无比的威力!国内的BBS站,单线站还占大多数。随着计算机的普及,特别是调制解调器的大量使用,BBS的活动将会进一步高涨。但是,随之而来的拨号难和抢线难的问题将会加剧。尽管BBS站台的数量在不断增长,但这种增长的幅度总也赶不上用户群的增长。许多人同时拨号一个站台,不可避免地发生冲突。每回要拨上几十次乃至上百次才能成功连上一个BBS站的状况已经成为困扰今日中国BBS用户的一个难题。随着BBS活动的深入,国内已经出现了一些多线站,一次可以允许2人以上同时访问。 BBS的发展过程中,也出现了一些问题。由于国内使用的BBS架站软件,都是从国外引进的,因此没有必要的中文说明。虽然一些热心的站长翻译了一些资料,但是仅靠这些是远远不够的。 1999年是中国网络的发展年。但是,我们应该清醒地认识到,目前一些BBS站并没有走上“简单、易用”这一层次。包括一些厂商架设的BBS站,实用性还需要加强。今后,国内的BBS站将向着个性化和专业化的方向发展。 三、本课题研究内容 本系统主要采用JSP+JA V ABEAN技术,利用JSP实现论坛用户登陆注册模块,论坛帐户信息模块,论坛文章发布模块,公告/制度模块,版块管理模块,信息管理模块,并利用JA V ABEAN实现数据库操作。 1.JSP(Java Server Pages)是一种动态网页技术标准。JSP技术是用JA V A语言作为脚本语言的,JSP网页为整个服务器端的JA V A库单元提供了一个接口来服务于HTTP的应用程序。 在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。 2.最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖

基于JSP技术的BBS论坛设计与实现

目录 摘要............................................................................................................................................. I 引言 (1) 1.绪论 (2) 1.1项目来源 (2) 1.2项目目标与期望 (2) 1.3项目设计原则 (2) 2.可行性分析 (4) 2.1技术可行性 (4) 2.2系统结构可行性分析 (6) 2.3开发环境介绍 (7) 3.需求分析 (8) 3.1系统功能需求 (8) 3.2 系统的运行需求 (9) 4.概要设计 (31) 4.1系统功能模块图 (31) 4.2系统功能的设计 (32) 结束语 (34) 致谢 (32) 参考文献 (32)

基于JSP技术的BBS论坛设计与实现 摘要 网络化的今天,BBS论坛系统的功能得到了很的大扩充。BBS的用户已经扩展到各行各业,除原先的计算机爱好者们外,商用BBS操作者、环境组织、宗教组织及其它利益团体也加入了这个行列。通过BBS系统来和别人讨论计算机软件、硬件、Internet、多媒体、程序设计以及医学等等各种有趣的话题。给计算机爱好者提供一个互相交流的地方。 整个论坛采用Struts框架设计完成。结合JSP、Java、JavaScript、J2EE等基础知识完成BBS论坛。本系统将用户划分为游客、用户、管理员3类,他们的权限不同,能够使用的功能也不同。对于系统来说,需要实现的功能总体来说分为以下两大模块。 前台模块提供给所有用户使用。不论是论坛的注册用户,还是普通的浏览者都可以进入其中。区别在于随着用户的等级不同,所允许使用的功能也有所不同。后台模块提供给管理人员(包括管理员和版主)使用,以对用户、论坛及文章进行管理维护。普通用户如果试图使用这一模块将被系统拒绝 我主要负责BBS论坛后台页面的管理员登录和用户管理功能模块。 关键词:JSP技术,BBS论坛,设计与实现

第一章 JSP技术基础习题

第一章JSP技术基础习题 一、选择题 1.当用户请求jsp页面时,JSP引擎就会执行该页面的字节码文件响应客户的请求,执行字 节码文件的结果是(C) A)发送一个JSP源文件到客户端 B)发送一个Java文件到客户端 C)发送一个HTML页面到客户端 D)什么都不做。 2.当多个用户请求同一个JSP页面时,Tomcat服务器为每个客户启动一个(B)A)进程B)线程C)程序D服务。 3.下列动态网页和静态网页的根本区别描述错误的是。(D) A)静态网页服务器端返回的HTML文件是事先存储好的 B)动态网页服务器端返回的HTML文件是程序生成的。 C)静态网页文件里只有HTML标记,没有程序代码。 D)动态网页中只有程序,不能有HTML代码。 4.不是JSP运行必须的是(D) A)操作系统 B)JavaJDK C)支持Jsp的Web服务器 D)数据库 5.URL是Internet中资源的命名机制,URL由三部分构成。(A) A)协议、主机DNS名或IP地址和文件名 B)主机、DNS名或IP地址和文件名、协议 C)协议、文件名、主机名 D)协议、文件名、IP地址 6.下列说法哪一项是正确的(C) A)Apache用于ASP技术所开发网站的服务器 B)IIS用于CGI技术所开发网站的服务器 C)Tomcat用于JSP技术所开发网站的服务器 D)WebLogic用于PHP技术所开发网站的服务器 7.Tomcat服务器的默认端口号是:(B) A)80 B)8080 C)21 D)2121

二、判断题 1.动态网页和静态网页的根本区别在于服务器端返回的HTML文件是事先存储好的还是由动态网页程序生成的。(对) 2.Internet和intranet的含义意义相同。(错) 3.互联网起源于美国国防部高级研究计划管理局建立的ARPA网。(对) 4.Web开发技术包括客户端和服务器端的技术。(对) 5.Tomcat和JDK都不是开源的。(错) 三、填空题 1.W3C是指__万维网联盟_____________。 2.Internet采用的通信协议是______TCP/IP________。 3.IP地址用四组由圆点分割的数字表示,其中每一组数字都在__0~254____________之间。 4.当今比较流行的技术研发模式是____C/S______和____B/S________的体系结构来实现的。 5.Web应用中的每一次信息交换都要涉及到______服务器_______和_______客户端_______两个层面。 6.静态网页文件里只有___HTML标记___________,没有程序代码。 四、思考题 1.为什么要为JDK设置环境变量? 2.Tomcat和JDK是什么关系? 3.什么是Web服务根目录、子目录、相对目录?如何配置虚拟目录? 4.什么是B/S模式? 5.JSP、JavaBeans和JavaServlet之间的关系? 6.集成开发环境能为程序员做什么? 7.使用MyEclipse开发JSP程序,需要做那些配置? 8.MyEclipse和Eclipse的关系?

基于jsp的大学论坛开发与实现

基于JSP的大学论坛开发与实现 摘要:随着计算机技术的飞速发展,学校也已进入信息化时代。为了方便大学的学生管理以及学生进行互动交流,决定开发基于JSP的大学论坛系统。通过对本校学生的调查及网络上现有大学论坛系统的调查,开发了这套大学论坛系统。本系统的开发,采用基于Windows图形用户界面这一易学易用的操作环境,在系统设计过程中,尽量采用易懂易读的人机界面,使用户可以在短期内完全掌握。软件开发过程中始终把系统的正确性放在首位,力求数据的完整和处理的正确性。在此基础上优化程序代码,加速系统运行和减少对系统资源的占用。本文采用结构化分析的方法,详细阐述了一个功能比较强大的大学论坛系统的前后台开发、操作流程和涉及的一些关键技术,分析了软件开发的背景以及过程。首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程,数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。根据前几个阶段的分析和设计,本系统在设计方面采用B/S模式,同时使用JSP技术进行基本页面的设计与功能实现,后台数据库选用SQL Server 2000数据库。 关键词:论坛;系统;结构化分析;数据库;模块;软件开发;

The development and implementation of University Forum on base of JSP Abstract:With the rapid development of computer technology, the school has entered the information age. To facilitate the School of Software, Hubei College of Arts and Sciences, students of management, and interact with students, decided to develop the school's BBS forum system.School students through surveys and online forum system available on the BBS survey, developed the BBS forum system, this system development, based on the Windows graphical user interface, easy to use operating environment, system design process, as far as possible to understand easy to read interface, allowing users to fully grasp in the short term. Software development process has always been the correctness of the system first, and strive to data integrity and accuracy of processing. On the basis of optimized code to speed up system operation and reduce the system resources.In this paper, structural analysis, a function described in detail the more powerful platform BBS forum system before and after development, operations, processes, and some of the key technologies involved. Analysis of software development background and process; first introduced the software development environment, followed by the detailed description of the design process of the software: database design, design and implementation of each module and the specific interface design and function. According to the first few stages of the analysis and design, the system used in the design of B / S mode, JSP technology, the basic page design and implementation of function, use SQL Server 2000 database backend database. Key words: forum;system;structured analysis;database;modular;software development;

动态网页制作:ASP、JSP、PHP三种技术比较

动态网页制作:ASP、JSP、PHP三种技术比较 目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。 简介 ASP全名Active Server Pages,是一个WEB服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(Java script)作为自己的开发语言。 PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点(http: //https://www.doczj.com/doc/721614872.html,)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。 JSP是Sun公司推出的新一代网站开发语言,Sun公司借助自己在Java上的不凡造诣,将Java从Java应用程序和Java Applet之外,又有新的硕果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。 三者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP 、PHP、JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只依赖于Web服务器,而ASP 、PHP、JSP页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。 技术特点: ASP: 1. 使用VBScript 、JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。 2. 无须compile编译,容易编写,可在服务器端直接执行。 3. 使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。 4. 与浏览器无关(Browser Independence), 客户端只要使用可执行HTML码的浏览器,即可浏览Active Server Pages所设计的网页内容。Active ServerPages 所使用的脚本语言(VBScript 、Jscript)均在WEB服务器端执行,客户端的浏览器不需要能够执行这些脚本语言。 5.Active Server Pages能与任何ActiveX scripting语言兼容。除了可使用VB Script或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其它脚本语言,譬

JSP动态页面项目书

美文管理系统 班级: : 指导教师: 学号: 姓名:

一、主要功能 这个小项目实现了前台用户插入美文和后台站长浏览并回复或删除美文的功能。在用户插入美文的时候,可以使用本项目提供的在线编辑器来插入自己所想插入的不同格式。此外,用户还可在前台浏览项目中的文章,选择想去的页码或单击下一页、上一页、首页、尾页等底部功能键可以欣赏到数据库中的不同文章。管理员可以在后台简易浏览项目中所存在的各种文章的标题,并可选择想要回复的文章作者给予相应的回复。 二、技术描述

三、数据库信息 四、主要代码 1、插入文章页面

用户名:
添加文章
标题
*
标题错误,请按要求输入
标题必须是1-6位,由字母或汉字组成(包括空格)
内容
*
内容格式错误,请按规范输入
内容不限,由字母或汉字组成(包括空格)
验证码
相关文档 最新文档