admin管理员组

文章数量:1531716

2024年1月11日发(作者:)

1. JSP入门教程(一)

作者:SUN/网猫

欢迎使用JavaServer Pages(以下简称JSP)技术—制作动态内容网页的方法。

如果你希望学习这篇教程的话,我想你一定是这项技术的新手。你可能想成为一名利用JSP技术开发网络应用程序的程序员或者网页设计师。本教程中包含了一系列JSP的技巧和一些简单的代码的写法,每一步都举了一组例子来讲述原理。

我建议你在学习本教程之前先去看一看FAQ,了解如果配置你的服务器好让他能支持并运行JSP。那样你就可以跳过前边的内容直接看你感兴趣的内容了。

OK,费话少说,Let’s go!

第一课:真正的开始

[]

   
 

<%@ page info="a hello world example" %>

Hello, World

<%@ include file="" %>

 

Hello, World!

页面说明:

在很多JSP文件中你都要写上这样的说明。在中:

<%@ page info="a hello world example" %>

傻瓜也看得出来,这句话没什么大用,只是简要的说明一下这段代码的作用。

你可以在JSP文件中的任何地方写这种代码,但是好的习惯是把他写在最前面,还有,因为他是JSP标签,记住一定要放在前面,呵

include说明:

include用来在主JSP文件中调用本地的一个其他文件,通常是一些版权信息啦,脚本语言啦等其他任何你想在其他文件中重复使用的代码。在这个例子中就是调用了一个图片其实。大家明白这个意思就得了。

随便说两句:

在JSP中对写法非常敏感,不可以有一点错误。举个例子,把写成那样服务器会出现错误信息。一些如类名,包名,路径名还有其他的敏感的标签等千万不要写错。有一些JSP标签拿不准的话就去查一下JavaServer Pages语法卡片。

代码写好了,如何试验一下呢?

我这里写的UNIX下的方法,如果你用Windows,那么换一下路径就可以了

1、 先建一个目录:../jswdk-1.0/examples/jsp/tutorial/helloworld

2、 把这些文件拷过去, , , and

3、 cd ../jswdk-1.0,然后startserver

4、 开一个浏览器,

5、 yourMachineName:8080/examples/jsp/tutorial/helloworld/

2. JSP入门教程(二)

作者:SUN/网猫

第二课:用HTML表单

大多数情况下,商业的网站都要有一些表单,比如说输入一下消费者的姓名啦,地址啦,或者敲一个词来用搜索引擎来查一下啦,或者市场人员从来访者处收集一些数据供参考什么的。

那些表单传回的数据怎么处理的?

来访者通过表单向JSP引擎输入了数据,并保存在了request对象中,那么接下来怎么办?

首先,JSP引擎把存放在request对象中的数据发到JSP页面指定的服务器端的组件(JavaBeans组件, servlet,或者enterprise bean),组件收到这些个数据以后,有可能再存这些数据到数据库或者其他的地方存放起来,同时,返回一个response对象给JSP引擎。JSP引擎再把response对象传给JSP页面,这时的页面包含了定义好的格式和从服务器端得到的数据。这时JSP引擎和Web服务器再发送一个整理好的完整的页面给客户,也就是这们在浏览器上看到的结果。客户和服务器间的通信协议可以用HTTP,当然也可以用其他的。

Request和Response对象在你制作的JSP原代码中起作用。到于request对象到底怎么用,我要在接下来详细的讲给你听。

如何创建表单

用HTML定义一些有代表性的表单做成一个JSP文件,然后用JSP标签在表单和服务器端对象(通常都用Bean)传递数据。一般情况下是这么干的:

1、 写JSP原文件,创建一些HTML的表单并命名。

2、 在Java文件里写Bean,定义属性,GET或者SET方法来配合已经被你指定好名字的表单。

3、 回到JSP原文件中,增加标签来创建一个或者调用一个现成的Bean。

4、 增加标签设置HTML表单中需要SET方法的Bean的属性。

5、 增加标签设置HTML表单中需要GET方法的Bean的属性。

6、 如果需要处理更多的用户数据,用request对象。

说了半天你可能看不懂,其实看一个例子你就懂了。

先看一个简单的hello的例子吧:

这段程序其实还是计算机程序里那个最经典的“hello,world”的程序,只不过呢,我使他挠了一点弯儿,使他看起来比较智能和复杂。首先你输入你的名字,然后Duke跟你说:“hello!”

看看代码吧:

   
 

主JSP文件:

<%@ page import="ndler" %>

Hello, User

<%@ include file="" %>

 

My name is Duke. What's yours?

<%

If ( ameter("username") != null )

{

%>

<% @ include file="" %>

<% }

%>

回应文件:

 

Hello, !

处理数据的Bean:()

package hello;

public class NameHandler

{

private String username;

public NameHandler() {

username = null;

}

public void setUsername( String name ) {

username = name;

}

public String getUsername() {

return username;

}

}

建立HTML表单

一个HTML的窗分为三个部分:

标签,输入方法,提交按钮发数据到服务器。一般的HTML页面里,是这么写的,在其他的页面里的action属性可能是其他特殊的CGI程序或者其他能处理数据的程序,那么在JSP里边是怎么用的呢,呵,如果你想把数据发到Bean里的话那么你可以省略action里边的东西了,直接写标签或者其他特定的JSP文件了。接下来的那些表单和普通的HTML差不多了,的方法,然后加一个提交按钮,可能还有一个Reset按钮,对了,别忘了,还得给每一个input表单加一个名字。

这么写:

使用GET和POST方法

用GET和POST方法可以发数据到服务器,在JSP程序中GET和POST方法可以发数据到Bean、servlet、或者其他服务器端的组件。

理论上说,GET是从服务器上请求数据,POST是发送数据到服务器。事实上,GET方法是把数据参数队列(query string)加到一个URL上,值和表单是一一对应的。比如说,name=John。在队列里,值和表单用一个&符号分开,空格用+号替换,特殊的符号转换成十六进制的代码。因为这一队列在URL里边,这样队列的参数就能看得到,可以被记录下来,或更改。通常GET方法还限制字符的大小。事实上POST方法可以没有时间限制的传递数据到服务器,用户在浏览器端是看不到这一过程的,所以POST方法比较适合用于发送一个

保密的(比如信用卡号)或者比较大量的数据到服务器。

写Bean

如果JSP程序用到了Bean,你就得按照JavaBeans API的说明设计你的Bean。

记住下面两个关键部分。

如果JSP程序里用标签,那你就得在Bean里边配合的GET方法。

如果JSP程序进而用 标签,那你就得在Bean里边配合的Set方法。

设置参数到Bean或者从里边取参数将在以后的部分详细介绍。

传数据到Bean

把HTML表单的数据传到Bean里需要两个工作:

• 用标签创建或者定位到Bean

• 在Bean里面用设置属性值

第一步用标签创建或者定位到Bean一定要用在之前,首先按照你指定的名字查找Bean,如果没找到,会给你指定一个。允许在一个JSP文件中创建一个Bean,然后再另一个文件中调用,这就给了Bean一个很广泛的运行空间。

第二步在Bean里面用设置属性值。最简单的方法是把值定义成与表单名相配合。举个例子,如果你把表单名定义成“username”那么,你就在Bean里定义属性“username”然后用方法getUsername和setUsername。

当然也可以定义成不同的名字,只要你不认为麻烦。谁让你记忆力好呢!

Request对象

用户输入的数据用来存放在Request对象里,用rvletRequest来执行(你也可以用其他不同的工具来执行,但他们其实都是rvletRequest的子集)

你也可以直接用scriptlet来直接访问Request对象。Scriptlet将在下一讲里边详细的讨论,现在你只需要知道他是用脚本语言写的一段放?lt;% 和%> 之间的代码就足够了。在JSP 1.0中,你必须用JavaTM程序语言作为你的脚本语言。

你经常会用到如下方法处理Request对象:

方法

说明

执行结果

getRequest

ntext

返回当前Request对象

getParameterNames

tRequest

返回当前Request对象参数名

getParameterValues

tRequest

返回当前Request对象参数值

你将会发现其他方法包括ServletRequest,HttpServletRequest或者其他任何ServletRequest的子集。

JSP引擎经常在scenes之后使用Request对象,即使你没有明确地在JSP文件中调用。

从Bean中调数据到JSP页面

一旦用户的数据被传到Bean,你就想重新得到数据,然后在JSP面页中显示出来。想达到这一步,你就得用到标签。传Bean名和属性名:

Hello, !

, , 和 标签必须相配,举个例子:

:

:

Hello, !

在这个例子里,标签被放在两个文件中,但是指定的名字都是相同的,如果不同的话,那么系统会返回一个错误信息。

如何运行例子

我用的是UNIX主机,如果你用windows,那么改相应的路径即可。

创建路径../jswdk-1.0/examples/jsp/tutorial/hellouser.

把文件, , , 和文件放进去。

创建一个目录,../jswdk-1.0/examples/WEB-INF/jsp/beans/hello

把文件和放进去。

3. JSP入门教程(三)

作者:SUN/网猫

使用脚本

在有些地方,你大概要加一些好的,成熟的程序到你的JSP页里,JSP的标签虽然很强大,但是完成某些工作还是比较费力的困难的。这时你可以使用脚本语言段来补充JSP标签。

使用的JSP引擎是支持脚本语言的,SUN的JSP参考文说明,必须使用Java程序语言来编写脚本,但是其他第三方的JSP引擎允许使用其他语言来写脚本程。

如何增加脚本

首先,你必须了解一些增加脚本元素到JSP页中的一些基本规则

1、 在JSP页面里用Page指令定义脚本(默认值是Java,一般不需要定义)

2、 声明语法<%!„„%>声明变量和方法(函数)。

3、 表达式语法<%=„„%>定义脚本语言表达式

4、 脚本语法〈%„„%>可以操作声明、表达式和其他类型合法的代码段在页脚本语言。

5、 一定要在结尾加%>标签

声明、表达式、脚本使用起来有一些相似,但也有一些不同让我们用一些例子来讲述一下相同点和不同点吧。

声明<%!„„%>包含了一个或多个变量和方法,结尾以分号分隔。

例:<%! Int I=0 ; %>

<%! Int a, b ; double c ; %>

<%! Circle a = new circle(2.0) ; %>

在页面中使用变量和方法之前必须声明

声明的范围通常是JSP页,但如果页面中使用INCLUDE指令包含其他页面,范围应变得扩展到被包含的页面。

表达式<%=„„%>可以在页面中包含任何合法的语言表达式,不用分号。

例:<%= (2) %>

<%= item[I] %>

<%= a+b+c %>

<%= new () %>

表达式和脚本的一个关键的不同点就是不需要分号。如果你需要在脚本中使用表达式就必须加分号。

脚本<%„„%>允许你写的任何数量的脚本语言

例:<% String name=null ;

If (meter("name")==null{

%>

记住在脚本中必须使用分号结尾。

猜数字游戏

猜数字游戏非常的有趣,而且从这里你还可以学到很多表达式的用法。

代码

显示用的主屏幕()

<%@ page import = "GuessBean" %>

Number Guess

4. JDK安装

作者:东方一蛇/我的家

一、前言

JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。目前已经正式发布的最新版本是JDK1.3。考虑到我对linux不熟悉,而且大多数都是在MS系统下,所以,在这里我用的是win2000。

二、下载,安装

下载地址为JAVA官方站点:,国内也到处都是。

Windows下,直接运行.exe文件,安装到一个目录,我这里用F:jdk13作为例子。

三、配置

桌面上选择“我的电脑”(右键)

高级

环境变量

在“系统变量”--->“新建”

在变量名中输入:CLASSPATH,变量值中输入:

F:;F:;F:JDK13BIN;然后确定;

好了,配置完了,要重新启动计算机后,环境变量才能有效的。

四、测试

(1)用文本编辑器写一个简单的java程序:

public class HelloWorld {

public static void main(String args[]) {

n("Hello World!");

}

}

这个例子就是著名的“Hello World”,它的功能就是显示“Hello World”。

注意:该文件名称必须为“”,大小写也区分。细心的朋友会注意到就是和public class后的名字一样的。

(2)编译:在dos命令提示符下执行:(注意大小写)

javac

如果正常的话,将生成文件。

(3)运行:在dos命令提示符下执行:(注意大小写)

java HelloWorld

这里有一个java初学者很有可能遇到的问题(不怕笑话,我也是)就是输入:

java

多了后面的.class,一定要注意,否则会出现下面的错误:

Exception in thread "main" sDefFoundError:HelloWorld/class

(本人猜想,是不是java翻译“.”的时候换成了“/”,或者是其他的本人不知道的原因)

好了,运行java HelloWorld应该会出现伟大的“Hello World”了。

到这一步,你已经成功配置好了JDK,可以开始漫长而痛苦(对于象我一样的,以前不懂java的朋友来说,可以用“痛苦”来形容,不理解的概念,不熟悉的,不过,不要急,我将和大家一起慢慢入门,慢慢提高... ...)的Java过程了。

5. Tomcat安装

作者:东方一蛇/我的家

一、前言

对于初学者来说,要执行JSP和Servlet,Tomcat是一个很不错的选择,。Tomcat是

Apache组织的产品,sun公司对它的支持也相当不错。

二、下载,安装

下载地址为JAVA官方站点:,国内也比较多。

从这个地址可以下载:/builds/tomcat/release/,我下载的是Tomcat32b4版本。

下载完,解压到一个目录,我这里用F:tomcat32b4作为例子。

三、配置

桌面上选择“我的电脑”(右键)

高级

环境变量

在“系统变量”--->“新建”

在变量名中输入:JAVA_HOME,变量值中输入:F:JDK13然后确定;

在“系统变量”--->“新建”

在变量名中输入:TOMCAT_HOME,变量值中输入:F:tomcat32b4然后确定;

好了,配置完了,要重新启动计算机后,环境变量才能有效的。

注意,对于Tomcat其他设置,如果没有必要,是可以不改的,我这里讲的都是最简单而可行的方法,如果对你的改动没有把握,还是建议不要改动。

四、测试

(1)启动tomcat:

在F:tomcat32b4bin下有一个:,运行它,将出现一个Dos窗口。

(2)浏览

在浏览器中输入:localhost:8080/看看有什么效果(Tomcat默认端口为8080,在不冲突的前提下,你可以改动的),是不是可以看到一只可爱的小猫(其实,我个人认为,无论从颜色还是样子,更象一只老虎)

(3)运行

在这个页面有JSP Examples和 Servlet Examples, 好了,自己测试运行它们吧。

(4)退出tomcat

在F:tomcat32b4bin下有一个:,运行它,将关闭Dos窗口(如果坚持直接关闭这个DOS窗口也是可以的,但是,既然有这个,应该有它存在的理由)。

6. Resin+Apache的安装

作者:东方一蛇/我的家

一、前言

对于初学者来说,要执行JSP和Servlet,Tomcat是一个很不错的选择。你也可以用Resin,这两个产品都是可以不花一分钱的。 Resin对Xml的支持是很好的。

二、下载,安装

下载地址为Resin官方站点:/。

从这个地址可以下载:/download/,我下载的是Resin1.1.4版

本。

下载完,解压到一个目录,我这里用E:resin114作为例子。

三、配置

在这之前,当然我们要先安装了Apache,而且能正常运行了。

(1)配置Apache

打开apache的conf子目录下的文件,用文本编辑工具编辑它。加入如下几行:

LoadModule caucho_module "E:resin114srunwin32-1.3.6mod_"

AddModule mod_caucho.c

CauchoConfigFile "E:"

SetHandler caucho-status

注意:上面的步骤也可以通过更加简单的方式实现,就是直接运行E:resin114bin目录下的,勾上apache,然后Apply,最后OK。这样,上面这些行应该会自动加上的。

(2)配置Resin

在resin的conf子目录下有个文件,将该文件备份一个。然后建立文件,如下内容:

<>

四、测试

(1)启动Resin:

在resin的bin下有一个,运行它,将出现一个窗口。

(2)做一个简单的jsp文件(我们用resin站点的例子)

该文件放在:apache/htdocs/

内容如下:

<%@ page language=javascript %>

2 + 2 = <%= 2 + 2 %>

(3)运行

在浏览器中输入:localhost/,应该出现下面结果:

2+2=4

好了,到这里你已经安装成功了,你可以在htdocs下建立一些自己的子目录, 管理文件。

注意:在四(1)中,启动resin 可以将srun加在Win2000的服务中,让每次这个resin服务自动启动,不必每次都运行。

7. Orion App Server的安装

作者:东方一蛇/我的家

一、前言

Orion这个东西,小巧,但是功能却非常多,废话不讲,看它目前的支持就知道了:

(1)Servlets/JSP

(2)EJB

(3)HTTP (注:说明不再需要Apache或者IIS等Web Server)

二、下载,安装

下载地址为Orion Application Server官方站点:/,我下载的是Orion1.4版本。

下载完,解压到一个目录,我这里用E:Orion作为例子。

三、配置

(1)根据Orion官方站点的安装说明,如果要支持JSP等技术的话,要将JDK的复制到e:orion目录下,文件在你安装的JDK目录的lib子目录下。

到现在,其实已经成功了缺省的配置了,如果你的80端口没有被占用,而且你也想用80作为端口的话,你到这里已经完成了,否则,请继续下面的配置。

(2)配置端口

在E:orionconfig目录下有个文件,找到文件中下面行:

将这行改为:

注意,我这里使用的是8008端口。

四、测试

(1)启动Orion:

在Orion目录下,command方式运行:

java -jar

将出现 initialized,我这里版本是1.4所以显示:

Orion/1.4.0 initialized

到此,说明你已经成功了。

(2)执行jsp文件

在浏览器中输入:

localhost:8008/

出现:Orion Application Server 1.4.0 - Up and running,下面有JSP examples你可以试着运行。

8. JDBC-ODBC翻页例子

作者:东方一蛇/我的家

一、运行前准备

建议了一个MS SQLServer7数据库 DNS,名称为:Test_DB

数据库中有一个表:guestbook字段为:name(varchar),email(varchar),body(text)

数据库用户为sa 密码空,可以自己修改的。

二、代码

<%@ page contentType="text/html;charset=gb2312"%>

<%

//变量声明

tion sqlCon; //数据库连接对象

ent sqlStmt; //SQL语句对象

Set sqlRst; //结果集对象

strCon; //数据库连接字符串

strSQL; //SQL语句

int intPageSize; //一页显示的记录数

int intRowCount; //记录总数

int intPageCount; //总页数

int intPage; //待显示页码

strPage;

int i,j,k; //设置一页显示的记录数

intPageSize = 5; //取得待显示页码

strPage = ameter("page");

if(strPage==null){

//表明在QueryString中没有page这一个参数,此时显示第一页数据

intPage = 1;

} else{

//将字符串转换成整型

intPage = nt(strPage);

if(intPage<1) intPage = 1; }

//装载JDBC-ODBC驱动程序

e("bcDriver");

//设置数据库连接字符串

strCon = "jdbc:odbc:Test_DB";

//连接数据库

sqlCon = nection(strCon,"sa","");

//创建SQL语句对象

sqlStmt = Statement();

//获取记录总数

strSQL = "select count(*) from guestbook";

sqlRst = eQuery(strSQL);

//执行SQL语句并取得结果集

(); //记录集刚打开的时候,指针位于第一条记录之前

intRowCount = (1);

(); //关闭结果集

//记算总页数

intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount;

//设置获取数据SQL语句

strSQL = "select name,email,body from guestbook";

//执行SQL语句并取得结果集

sqlRst = eQuery(strSQL);

//将记录指针定位到待显示页的第一条记录上

i = (intPage-1) * intPageSize;

for(j=0;j

JSP数据库操作例程 - 数据分页显示 - JDBC-ODBC

jdbc-odbc留言版

<%

//显示数据

i = 0;

while(i

<% i++; } %>

姓名:<%=ing(1)%> 邮件:<%=ing(2)%>
<%=ing(3)%>

第<%=intPage%>页 共<%=intPageCount%>页

<%if(intPage

下一页<%

}

%>

<%if(intPage>1){%>

上一页<%

}

%>

<%

//关闭结果集

();

//关闭SQL语句对象

();

//关闭数据库

();

%>

三、怎么去运行?

将代码存为文件

Orion Application Server下:

Copy到orion的default-web-app目录下,通过:

localhost:port/

访问测试

对于Resin,Tomcat,JWS等等,都可以运行通过。

9. MySQL翻页例子

作者:东方一蛇/我的家

一、运行前准备

下载了mysql的jdbc驱动(一个jar文件)并加载在CLASSPATH(方法见《JAVA/JSP学习系列之四(JDK安装) 》)

(如果找不到,请从本站下载)

建一个MySQL数据库test

数据库中有一个表:note,字段为:name(varchar)

二、下载,安装

<%@ page contentType="text/html;charset=gb2312" %>

<% tion sqlCon; //数据库连接对象

ent sqlStmt; //SQL语句对象

Set sqlRst; //结果集对象

strCon; //数据库连接字符串

strSQL; //SQL语句

int intPageSize; //一页显示的记录数

int intRowCount; //记录总数

int intPageCount; //总页数

int intPage; //待显示页码

strPage;

int i;

//设置一页显示的记录数

intPageSize = 2;

//取得待显示页码

strPage = ameter("page");

if(strPage==null){

//表明在QueryString中没有page这一个参数,此时显示第一页数据

intPage = 1;

} else{

//将字符串转换成整型

intPage = nt(strPage);

if(intPage<1) intPage = 1;

}

//装载JDBC驱动程序

e("").newInstance();

//连接数据库

sqlCon= nection("jdbc:mysql://localhost/test");

//创建语句对象

sqlStmt = Statement(_SCROLL_INSENSITIVE,.

_READ_ONLY); //执行SQL语句

strSQL = "select name from note";

//执行SQL语句并获取结果集

sqlRst = eQuery(strSQL);

//获取记录总数

();

intRowCount = ();

//记算总页数

intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//调整待显示的页码

if(intPage>intPageCount) intPage = intPageCount;

%>

JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - mysql

<% if(intPageCount>0)

{

//将记录指针定位到待显示页的第一条记录上

te((intPage-1) * intPageSize + 1);

//显示数据

i = 0;

while(i

<% ();

i++;

}

}

%>

姓名

<%=ing(1)%>

第<%=intPage%>页 共<%=intPageCount%>页

<%if(intPage下一页<%}%>

<%if(intPage>1){%>上一页<%}%>

<%

//关闭结果集

();

//关闭SQL语句对象

();

//关闭数据库

();

%>

三、怎么去运行?

见前文《JAVA/JSP学习系列之八(JDBC-ODBC翻页例子)》。

10. Orion下自定义Tag

作者:东方一蛇/我的家

一、前言 (本文译自Orion官方站点)

本文将一步一步介绍在Orion Application Server下定义自己的标签,然后,实现该标签的功能,最后用一个jsp例子测试。

二、建立标签,实现该标签的功能。

1.命名package为:(为了和原文相同,我不做改动)

package ;

相关class

import .*;

import .*;

3.实现接口:

public class HelloWorld implements Tag

{

4.定义局部变量

private PageContext pageContext;

private Tag parent;

5.调用标签开始的实现方法

public int doStartTag() throws eption

{

return SKIP_BODY;

}

注意:这个方法返回 SKIP_BODY,就是标签的body为空的时候,将返回这个值,否则将返回:EVAL_BODY_INCLUDE

6.调用标签结束的实现方法

public int doEndTag() throws eption

{

try

{

().write("Hello World!");

}

catch(ption e)

{

throw new JspException("IO Error: " + sage());

}

return EVAL_PAGE;

}

这样将在jsp文件的自定义标签结束地方输出“Hello World!”

7.还不够,我们还要写下面的方法:

public void release() {}

对于本简单的例子,上面的方法不需要任何实现。

的容器要调用下面的方法:

public void setPageContext(final ntext pageContext) {

ntext=pageContext;

}

JSP容器通过上面的方法调用标签,而且上面的方法用来设置标签的PageContext.

的容器还要调用下面的方法:

public void setParent(final parent)

{

=parent;

}

JSP容器通过上面的方法设置标签的parent-Tag,因为每个标签的PageContext都要保留它的parent标签。

10.最后,实现方法:

public getParent()

{

return parent;

}

}

11. 编译标签。

三、描叙标签

现在将要写一个描叙文件,描叙该标签。

1.建立一个文件,

是一个XML格式的文本文件,XML的头如下:

"/j2ee/dtds/web-jsptaglibrary_1_">

3.描叙标签库

1.0

1.1

mt

/tutorials/tagtut/lesson1/

My first Tag library

4.描叙标签

helloWorld

orld

empty

A Hello world Tag

5.结束

四、打包

名称为:

其目录结构为:

com/acme/mytags/

META-INF/

五、在jsp文件中使用自定义标签

建立如下:

<%@ taglib uri="" prefix="mt" %>

Hello World!



六、测试运行

在orion目录下,建立如下结构,其中,tag是自己建立的,前面的目录是本来就有的。

E:oriondefault-web-apptag

将jar文件和jsp文件全部放到这个目录下。

然后,访问:

localhost:[port]/tag/

将出现:

--------------------------------------------------------------------------------

Hello World!

--------------------------------------------------------------------------------

七、恭喜,你已经成功了!

附:和 文件本站下载地址:

/softdownload/java/orion_

11. 改写MySQL翻页例子

作者:东方一蛇/我的家

一、前言

其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源。我用Orion试的,将本站《JAVA/JSP学习系列之九(MySQL翻页例子) 》 简单改写了一下。

二、配置

(1)JDBC

需要将用到的JDBC驱动Copy到[ORION]/lib目录下

(2)data-source

在[ORION]/config/文件中加入如下:

〈data-source

class="ManagerDataSource"

name="mySqlDbpage"

location="jdbc/HypersonicCoreDS"

xa-location="jdbc/xa/HypersonicXADS"

ejb-location="jdbc/mysqlDbPage"

connection-driver=""

username="root"

password=""

url="jdbc:mysql://localhost/test"

inactivity-timeout="30"

/〉

需要注意的是:

(1)ejb-location这个后面的“jdbc/mysqlDbPage”是JNDI要来查找的。

(2)connection-driver为JDBC数据库驱动

(3)url是JDBC中的URL

(4)username为数据库用户名

(5)password为用户密码

(6)inactivity-timeout为数据库连接超时,默认为30秒

对于其他的地方不要改。

三、改写后的代码如下:

<%@ page contentType="text/html;charset=gb2312" %>

<%@ page import=".*, urce, lContext" %>

<%

//建立一个JNDI查找对象

InitialContext JNDI_Context = new InitialContext();

//JNDI查找数据源

DataSource ds = (DataSource) JNDI_("jdbc/mysqlDbPage");

//得到一个数据源连接

Connection conn = nection();

int intPageSize; //一页显示的记录数

int intRowCount; //记录总数

int intPageCount; //总页数

int intPage; //待显示页码

strPage;

int i;

//设置一页显示的记录数

intPageSize = 2;

//取得待显示页码

strPage = ameter("page");

if(strPage==null){

//表明在QueryString中没有page这一个参数,此时显示第一页数据

intPage = 1;

} else{

//将字符串转换成整型

intPage = nt(strPage);

if(intPage<1) intPage = 1;

}

// 得到结果

stmt = Statement();

ResultSet sqlRst = eQuery("select f1 from test");

//获取记录总数

();

intRowCount = ();

//记算总页数

intPageCount = (intRowCount+intPageSize-1) / intPageSize;

//调整待显示的页码

if(intPage>intPageCount)

intPage = intPageCount;

%>

JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - mysql

<% if(intPageCount>0)

{

//将记录指针定位到待显示页的第一条记录上

te((intPage-1) * intPageSize + 1);

//显示数据

i = 0;

while(i

<% ();

i++;

}

}

%>

姓名

<%=ing(1)%>

第<%=intPage%>页 共<%=intPageCount%>页

<%if(intPage下一页<%}%>

<%if(intPage>1){%>上一页<%}%>

<%

//关闭结果集

();

%>

三、怎么去运行?

见前文《JAVA/JSP学习系列之八(JDBC-ODBC翻页例子)》。

注意:MySQL数据库为test,中间有个表test,有个字段f1(varchar)

12. 理解构造器

作者:东方一蛇/我的家

理解构造器

构造器和方法的区别

摘要

要学习Java,你必须理解构造器。因为构造器可以提供许多特殊的方法,这个对于初学者经常混淆。但是,构造器和方法又有很多重要的区别。

原作者:Robert Nielsen 原站:

我们说构造器是一种方法,就象讲澳大利亚的鸭嘴兽是一种哺育动物。(按:老外喜欢打比喻,我也就照着翻译)。要理解鸭嘴兽,那么先必须理解它和其他哺育动物的区别。同样地,要理解构造器,那么就要了解构造器和方法的区别。所有学习java的人,尤其是对那些要认证考试的,理解构造器是非常重要的。下面将简单介绍一下 ,最后用一个表作了些简单的总结。

功能和作用的不同

构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到:Platypus p1

= new Platypus();

相反,方法的作用是为了执行java代码。

修饰符,返回值和命名的不同

构造器和方法在下面三个方便的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用).

不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者

synchronized。

返回类型也是非常重要的。方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。

最后,谈谈两者的命名。构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。

"this"的用法

构造器和方法使用关键字this有很大的区别。方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字,因为静态方法不属于类的实例,所以this也就没有什么东西去指向。构造器的this指向同一个类中,不同参数列表的另外一个构造器,我们看看下面的代码:

public class Platypus {

String name;

Platypus(String input) {

name = input;

}

Platypus() {

this("John/Mary Doe");

}

public static void main(String args[]) {

Platypus p1 = new Platypus("digger");

Platypus p2 = new Platypus();

}

}

在上面的代码中,有2个不同参数列表的构造器。第一个构造器,给类的成员name赋值,第二个构造器,调用第一个构造器,给成员变量name一个初始值 "John/Mary Doe".

在构造器中,如果要使用关键字this,那么,必须放在第一行,如果不这样,将导致一个编译错误。

"super"的用法

构造器和方法,都用关键字super指向超类,但是用的方法不一样。方法用这个关键字去执行被重载的超类中的方法。看下面的例子:

class Mammal {

void getBirthInfo() {

n("born alive.");

}

}

class Platypus extends Mammal {

void getBirthInfo() {

n("hatch from eggs");

("a mammal normally is ");

thInfo();

}

}

在上面的例子中,使用thInfo()去调用超类Mammal中被重载的方法。

构造器使用super去调用超类中的构造器。而且这行代码必须放在第一行,否则编译将出错。看下面的例子:

public class SuperClassDemo {

SuperClassDemo() {}

}

class Child extends SuperClassDemo {

Child() {

super();

}

}

在上面这个没有什么实际意义的例子中,构造器 Child()包含了 super,它的作用就是将超类中的构造器SuperClassDemo实例化,并加到 Child类中。

编译器自动加入代码

编译器自动加入代码到构造器,对于这个,java程序员新手可能比较混淆。当我们写一个没有构造器的类,编译的时候,编译器会自动加上一个不带参数的构造器,例如:public class

Example {}

编译后将如下代码:

public class Example {

Example() {}

}

在构造器的第一行,没有使用super,那么编译器也会自动加上,例如:

public class TestConstructors {

TestConstructors() {}

}

编译器会加上代码,如下:

public class TestConstructors {

TestConstructors() {

super;

}

}

仔细想一下,就知道下面的代码

public class Example {}

经过会被编译器加代码形如:

public class Example {

Example() {

super;

}

}

继承

构造器是不能被继承的。子类可以继承超类的任何方法。看看下面的代码:

public class Example {

public void sayHi {

n("Hi");

}

Example() {}

}

public class SubClass extends Example {

}

类 SubClass 自动继承了父类中的sayHi方法,但是,父类中的构造器 Example()却不能被继承。

13. JavaMail API发邮件[servlet]

作者:东方一蛇/我的家

一:条件

必须下载sun公司的JavaMail API包,地址为:/products/javamail/

我这里用的是1.2版本,将相关包(jar文件)加到CLASSPATH中

二:该程序非常简单,不需要我们考虑很多地层的东西,因为API都帮我们做好了这些事情,下面是一个简单的发邮件的Servlet:(对于熟悉的人来说,恐怕是再简单不过了的一个servlet)

import .*;

import t.*;

import .*;

import .*;

public class SendMailServlet extends HttpServlet {

public static String MAIL_FROM = "from";

public static String MAIL_TO = "to";

public static String MAIL_SUBJECT = "subject";

public static String MAIL_BODY = "body";

public static String MAIL_HOST = "mailhost";

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,

IOException

{

tentType("text/html; charset=gb2312");

PrintWriter out = ter();

n("");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

");

n("

send mail server:
from:
to:
subject:
text:

");

n("");

n("");

n("

");

();

}

public void doPost(HttpServletRequest req, HttpServletResponse

ServletException,IOException

{

tentType("text/html; charset=gb2312");

PrintWriter out = new PrintWriter(putStream());

String from = ameter(MAIL_FROM);

String to = ameter(MAIL_TO);

String subject = ameter(MAIL_SUBJECT);

String body = ameter(MAIL_BODY);

String mailhost = ameter(MAIL_HOST);

try

{

SmtpClient mailer = new SmtpClient(mailhost);

(from);

(to);

PrintStream ps = essage();

n("From: " + from);

n("To: " + to);

n("Subject: " + subject);

n(body);

erver();

n("Success!");

}

catch (Exception ex)

{

n("An error about:" + sage());

}

();

}

public void init(ServletConfig cfg) throws ServletException

{

(cfg);

}

public void destroy()

{

y();

}

}

resp) throws

14. 简单的“抓网页”代码

作者:东方一蛇/我的家

一、前言

从一个网站上,看到一个“抓网页”的代码,觉得有点意思,但是没有提供源代码,于是,自己想写一个,其实代码比较简单的。

二、代码

<%@ page contentType="text/html;charset=gb2312"%>

<%

String sCurrentLine;

String sTotalString;

sCurrentLine="";

sTotalString="";

tream l_urlStream;

l_url = new ("/");

LConnection l_connection = (LConnection)

l_nnection();

l_t();

l_urlStream = l_utStream();

edReader l_reader = new edReader(new

treamReader(l_urlStream));

while ((sCurrentLine = l_ne()) != null)

{

sTotalString+=sCurrentLine;

}

n(sTotalString);

%>

三、后记

虽然代码比较简单,但是,我认为根据这个,可以实现“网络爬虫”的功能,比如从页面找href连接,然后再得到那个连接,然后再“抓”,不停止地(当然可以限定层数),这样,可以实现“网页搜索”功能。

15. JSP生成jpeg图片用于投票

作者:东方一蛇/我的家

一、前言

本文原作者为Tony Wang ,该文章涉及到文件的读写和jpg图片的自动生成。利用jsp+servlet的技术,jsp调用servlet生成图片。

二、首文件如下:

<%--

Author: Tony Wang

E-mail: lucky_tony@

Date: 2001-01-01

如果对程序有什么疑问,可以和我联系, 另外程序如果有什么bug,麻烦指出!!

--%>

<%@ page contentType="text/html;charSet=gb2312"%>

<%

der("Cache-Control","no-store");

eHeader("Expires",0);

%>

<%!

public String[] getQuestion(String s)

{

String[] strQ = new String[4];

String strTemp = null;

int i;

AccessFile rf = null;

try {

rf = new AccessFile(s,"r");

} catch(Exception e)

{

n(e);

(0);

}

for(i=0;i<4;i++)

{

try {

strTemp = ne();

} catch(Exception e) {

strTemp = "None Question";

}

if(strTemp==null)strTemp = "None Question";

strQ[i] = strTemp;

}

return strQ;

}

%>

<%

String s = null;

String[] question = new String[4];

s = lPath("");

question = getQuestion(s);

%>

冰帆调查

<%

String ss = null;

for (int i=0;i<4;i++)

{

ss = ""+

(char)('A'+i)+"、"+ question[i]+"

";

n(ss);

}

%>

height=100>

三、写文件

<%--

Author: Tony Wang

E-mail: lucky_tony@

Date: 2001-01-01

如果对程序有什么疑问,可以和我联系,

另外程序如果有什么bug,麻烦指出!!

--%>

<%!

public int[] getNumber(String s)

{

int[] mCount = new int[4];

String strTemp = null;

int i;

AccessFile rf = null;

try {

rf = new AccessFile(s,"r");

} catch(Exception e)

{

n(e);

(0);

}

for(i=0;i<4;i++)

{

try {

strTemp = ne();

} catch(Exception e) {

strTemp = "0";

}

if(strTemp==null)strTemp = "0";

mCount[i] = new Integer(strTemp).intValue();

}

return mCount;

}

public void setNumber(String s,int[] x)

{

try {

riter pw = new riter(new .

FileOutputStream(s));

for (int i=0;i<4;i++){

n(x[i]+"");

}

();

} catch(Exception e) {

n("Write file error:"+sage());

}

}

%>

<%

String tmp = null;

int choice = -1;

int[] count = new int[4];

tmp = ameter("choice");

if (tmp==null){

} else {

choice = new Integer(tmp).intValue();

}

/////////////

String s = lPath("");

if(choice>=0){

count = getNumber(s);

count[choice]++;

setNumber(s,count);

}

direct("");

%>

四、servlet原代码: :

/*

Author: Tony Wang

E-mail: lucky_tony@

Date: 2001-01-01

如果对程序有什么疑问,可以和我联系,

另外程序如果有什么bug,麻烦指出!!

*/

import .*;

import .*;

import .*;

import t.*;

import .*;

import .*;

import .*;

import .*;

public class VoteImage extends HttpServlet

{

private String strFile = null;

private Color color[]={,,,

};

private int baseAng = 30;

public void doGet(HttpServletRequest request,HttpServletResponse

response)

throws ServletException,IOException

{

strFile = lPath("");

float[][] xy = new float[4][2];

xy = getNumAndPercent(strFile);

int[] ang = new int[4];

ang[0] = (int)(xy[0][1]*360);

ang[1] = (int)(xy[1][1]*360);

ang[2] = (int)(xy[2][1]*360);

ang[3] = 360-ang[0]-ang[1]-ang[2];

der("Cache-Control","no-store");

eHeader("Expires",0);

tentType("image/jpeg");

ServletOutputStream out=putStream();

BufferedImage image=new BufferedImage(150,100,BufferedImage.

TYPE_INT_RGB);

Graphics2D g=(Graphics2D)phics();

deringHint(_ANTIALIASING,

_ANTIALIAS_ON);

or();

ct(0,0,150,100);

AffineTransform at = null;

Arc2D arc = null;

int fromAng = baseAng;

at = ateInstance((-20*)

/180,45,37);

nsform(at);

int r =6;

int dx = (int)(r*((baseAng+ang[0])/2.0*java.

/180));

int dy = (int)(r*((baseAng+ang[0])/2.0*java.

/180));

arc = new (10+dx,24-dy,80,50,fromAng,ang[0],);

or(color[0]);

(arc);

fromAng+=ang[0];

for (int i=1;i<4;i++)

{

or(color[i]);

arc = new (10,24,80,50,fromAng,ang[i],);

(arc);

fromAng+=ang[i];

if (fromAng>360)

{

fromAng-=360;

}

}

at = ateInstance(0,terX(),arc.

getCenterY());

nsform(at);

for (int i=0;i<4;i++){

or(color[i]);

ct(100,15*i+20,10,10);

ring((char)('A'+i)+"",120,15*i+20+8);

}

JPEGImageEncoder encoder=JPEGEncoder(out);

(image);

();

}

public void doPost(HttpServletRequest request,HttpServletResponse

response)

throws ServletException,IOException

{

doGet(request,response);

}

public synchronized float[][] getNumAndPercent(String sFileName)

{

float xx[][] = new float[4][2];

int totalNum = 0 ;

String strTemp = null;

int i = 0;

AccessFile rf = null;

try

{

rf = new AccessFile (sFileName,"r");

} catch(Exception e)

{

n(e);

(0);

}

for (i=0;i<4;i++)

{

int m=0;

try {

strTemp = ne();

} catch (Exception e){

strTemp = "0";

}

if (strTemp == null) strTemp = "0";

m = new Integer(strTemp).intValue();

xx[i][0]=m;

totalNum += m;

}

if (totalNum==0) totalNum=1;

for ( i=0;i<4;i++){

xx[i][1] = xx[i][0]/totalNum;

}

return xx;

}

}

五、在目录下建立和文件分别用来保存投

票的问题和投票的数量,用户投票后,就修改的值。

为了对原作者表示感谢,这2个文件内容不变化,如下:

:

Yes,I think so!

No,I dont think so!

Sorry,I dont know the answer!

:

12

9

5

9

六、目录结构:

(1)jsp文件和txt文件同一个目录

(2).java文件是servlet目录下

七、测试:

[server:port]/dir/

16. Applet调用JavaScript函数

作者:东方一蛇/我的家

下面的例子将说明在applet中去调用javascript函数 。

一、applet源代码(tmin_)

// Importations

import cs ;

import ;

// for JavaScript

import ct ;

public class tmin_JS extends {

// Variables

// Initialisation de l'applet

public void init() { // Methode init()

}

// Dessiner l'applet

public void paint(Graphics g) { // Methode paint()

ring("", 5, 10) ;

}

// Mouse down

public boolean mouseDown(Event e, int x, int y) {

try { // create JSObject

dow (this).eval ("javascript:ale

rt('tmin_JS click " +

" x=" + x + " y=" + y + "')") ;

}

catch (Exception ex) { // Error on create JSObject

showStatus( "Error call javascript err=" + ex );

}

return true ;

}

}

二、注意的地方

(1)在调用javascipt函数的时候,要加这行:

dow (this).eval ("javascript:... ") ;

(2)要将JSObject引用进来:

import ct ;

(3)定义applet的时候要加“MAYSCRIPT”标记

17. JavaScript改变Applet状态

作者:东方一蛇/我的家

下面的例子将说明利用javascript去改变applet状态和在javascript中调用applet中的方法。

一、applet源代码(tmin_)

// Import

import cs ;

import ;

// for JavaScript

// (it's more simple)

public class tmin_JS2 extends {

// Variables

String str ; //

int i ; //

// Initialisation de l'applet

public void init() { // Methode init()

str = new String("test");

i = 0 ;

}

// Dessiner l'applet

public void paint(Graphics g) { // Methode paint()

ring(str, 5, 10) ;

}

// setString : change string value

public void setString(String s) {

str = new String( s );

i++ ;

// force repaint to see change

repaint() ;

return ;

}

// getString : get string value

public String getString() {

return str ;

}

// getVal : get number of change

public int getVal() {

return i ;

}

}

二、注意的地方

(1)在applet中,要命名:

18. JSP源代码实例一

转:jsp源码实例(搜索引擎)

Marty Hall [2001-01-06]

作者:Marty Hall

package coreservlets;

import .*;

import t.*;

import .*;

import .*;

public class SearchEngines extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

String searchString = ameter("searchString");

if ((searchString == null) ||

(() == 0)) {

reportProblem(response, "Missing search string.");

return;

}

// The URLEncoder changes spaces to "+" signs and other

// non-alphanumeric characters to "%XY", where XY is the

// hex value of the ASCII (or ISO Latin-1) character.

// Browsers always URL-encode form values, so the

// getParameter method decodes automatically. But since

// we're just passing this on to another server, we need to

// re-encode it.

searchString = (searchString);

String numResults = ameter("numResults");

if ((numResults == null) ||

(("0")) ||

(() == 0)) {

numResults = "10";

}

String searchEngine =

ameter("searchEngine");

if (searchEngine == null) {

reportProblem(response, "Missing search engine name.");

return;

}

SearchSpec[] commonSpecs = monSpecs();

for(int i=0; i<; i++) {

SearchSpec searchSpec = commonSpecs[i];

if (e().equals(searchEngine)) {

String url =

L(searchString, numResults);

direct(url);

return;

}

}

reportProblem(response, "Unrecognized search engine.");

}

private void reportProblem(HttpServletResponse response,

String message)

throws IOException {

ror(_NOT_FOUND,

"

" + message + "

");

}

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

19. JSP源代码实例二

转:jsp源码实例(获取jsp各种参数)

Marty Hall [2001-01-06]

作者:Marty Hall

package coreservlets;

import .*;

import t.*;

import .*;

import .*;

/** Creates a table showing the current value of each

* of the standard CGI variables.

*

* Taken from Core Servlets and JavaServer Pages

* from Prentice Hall and Sun Microsystems Press,

* /.

* © 2000 Marty Hall; may be freely used or adapted.

*/

public class ShowCGIVariables extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html");

PrintWriter out = ter();

String[][] variables =

{ { "AUTH_TYPE", hType() },

{ "CONTENT_LENGTH",

f(tentLength()) },

{ "CONTENT_TYPE", tentType() },

{ "DOCUMENT_ROOT",

getServletContext().getRealPath("/") },

{ "PATH_INFO", hInfo() },

{ "PATH_TRANSLATED", hTranslated() },

{ "QUERY_STRING", ryString() },

{ "REMOTE_ADDR", oteAddr() },

{ "REMOTE_HOST", oteHost() },

{ "REMOTE_USER", oteUser() },

{ "REQUEST_METHOD", hod() },

{ "SCRIPT_NAME", vletPath() },

{ "SERVER_NAME", verName() },

{ "SERVER_PORT",

f(verPort()) },

{ "SERVER_PROTOCOL", tocol() },

{ "SERVER_SOFTWARE",

getServletContext().getServerInfo() }

};

String title = "Servlet Example: Showing CGI Variables";

n(thTitle(title) +

"n" +

"

" + title + "

n" +

"

n" +

"

n" +

"

CGI Variable NameValue");

for(int i=0; i<; i++) {

String varName = variables[i][0];

String varValue = variables[i][1];

if (varValue == null)

varValue = "Not specified";

n("

" + varName + "" + varValue);

}

n("

");

}

/** POST and GET requests handled identically. */

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

20. JSP源代码实例三

转:jsp源码实例(获取表单参数)

Marty Hall [2001-01-06]

作者:Marty Hall

package coreservlets;

import .*;

import t.*;

import .*;

import .*;

/** Shows all the parameters sent to the servlet via either

* GET or POST. Specially marks parameters that have

* no values or multiple values.

*

* Taken from Core Servlets and JavaServer Pages

* from Prentice Hall and Sun Microsystems Press,

* /.

* © 2000 Marty Hall; may be freely used or adapted.

*/

public class ShowParameters extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

tentType("text/html");

PrintWriter out = ter();

String title = "Reading All Request Parameters";

n(thTitle(title) +

"n" +

"

" + title + "

n" +

"

n" +

"

n" +

"

Parameter NameParameter Value(s)");

Enumeration paramNames = ameterNames();

while(eElements()) {

String paramName = (String)ement();

("

" + paramName + "n");

String[] paramValues =

ameterValues(paramName);

if ( == 1) {

String paramValue = paramValues[0];

if (() == 0)

n("No Value");

else

n(paramValue);

} else {

n("

    ");

    for(int i=0; i<; i++) {

    n("

  • " + paramValues[i]);

    }

    n("

");

}

}

n("

n");

}

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

}

本文标签: 方法文件构造数据

更多相关文章

xp系统

移动硬盘损坏:文件或目录已损坏(修复实录)

3小时前

一、问题描述 移动硬盘读取过程中损坏&#xff0c;提示 “文件或目录已损坏且无法读取” &#xff08;windows下&#xff09; 解决方法在第三部分 二、事情起因 我在工作站上往移动硬盘里备份一个73G数

苹果电脑怎么删除移动硬盘里的文件,苹果电脑无法删除移动硬盘文件

3小时前

苹果电脑怎么删除移动硬盘里的文件&#xff1f;也不能进行复制、编辑、移动等操作&#xff0c;只能够打开文件进行查阅&#xff0c;是因为移动硬盘是NTFS格式的&#xff0c;这种格式在Mac电脑上只允许

移动硬盘&quot;文件或目录损坏且无法读取&quot;修复方法

3小时前

证状&#xff1a;1.mmc-磁盘管理中的文件格式为空&#xff08;没有任何内容) 2.可以认到盘&#xff0c;要盘符显示&#xff0c;但双击进入则 提示“文件或目录损坏无法读取" 解决方法

硬盘结构损坏且无法读取恢复方法

3小时前

硬盘结构损坏且无法读取是计算机存储设备的一种常见故障。当硬盘出现此类问题时,用户往往无法正常访问存储在硬盘中的数据。本文将深入分析硬盘结构损坏且无法读取的潜在原因,并探讨有效的解决方法,以帮助用户恢复数据和正常使用硬盘。 硬盘结构损坏且无法

关于移动硬盘出现:文件目录已损坏,无法访问

3小时前

今天自己的移动硬盘出现了“文件目录已损坏&#xff0c;无法访问”这个问题&#xff0c;只有盘符和卷标。文件格式和存储容量啥没有&#xff0c;去改访问权限它说“Windows无法访问”。里面有好多数据&#

Linux挂载移动群晖硬盘,通过USB移动硬盘盒挂载群晖格式硬盘的方法

3小时前

我们都知道&#xff0c;在群晖NAS 中可以通过接USB移动硬盘盒给群晖扩展存储&#xff0c;然而实际上群晖能够识别NTFS和FAT32&#xff0c;但是群晖自家的格式反而不能顺利识别。如下图所示&#x

移动硬盘里面的某个文件夹或某个文件损坏无法读取

3小时前

用户反馈说Win7打开Local Settings文件夹提示“位置不可用&#xff0c;拒绝访问"怎么办&#xff1f;Local Settings是Windows系统中的一个隐藏文件&#xff0c;一般存

ntfs硬盘如何在mac上读写移动硬盘文件?

3小时前

在日常的工作中&#xff0c;总是避免不了跨平台的传输文件、文件共享等&#xff0c;例如一些用户使用Mac电脑修图或者剪辑视频之后需要拷贝到Windows电脑上查看。对于需要同时使用Mac和Windows的用户来说&

计算机硬件无法启动不能读取文件,修复Windows出现的“文件或目录已损坏且无法读取”问题...

3小时前

吴川 华南区技术负责人 概要 “文件或目录已损坏且无法读取”错误通常是出现在USB、SD卡、外置硬盘中。修复此类问题其实很简单&#xff0c;本文将介绍两种快速的解决方法并能安全保护磁盘数据。 有用户反映在Windows电脑中打开U

mac电脑里的文件如何复制到移动硬盘里面教程

3小时前

相信很多Mac用户都遇到过Mac里的文件无法复制到移动硬盘的情况&#xff0c;可能是因为Mac的系统文件格式和Windows是不兼容造成的&#xff0c;其次还有可能是因为复制的文件超过了4GB&#xff0c;恰巧

移动硬盘文件或目录损坏且无法读取?分享恢复数据的方法

3小时前

案例&#xff1a;移动硬盘提示无法访问&#xff0c;文件或目录损坏且无法读取&#xff1f; “这个移动硬盘两年没用了&#xff0c;今天拿出来找文件&#xff0c;插上电脑后移动硬盘打不开&a

移动硬盘弹出文件或目录损坏且无法读取解决办法

3小时前

最近想将移动硬盘的会声会影X2软件安装到电脑&#xff08;哎呀&#xff0c;还是大学时候视频处理社团的软件&#xff0c;都是回忆呀&#xff09;&#xff0c;但是打开安装目录显示“移动硬盘弹

TOSHIBA移动硬盘挂载Macos系统的方法

3小时前

macos 系统下如果插入TOSHIBA的移动硬盘&#xff0c;在终端中无法复制或者创建目录&#xff0c;表明你没有相应的读写的权利&#xff0c;可以通过重新手动挂载实现。 具体的步骤如下&#xff1a

苹果电脑为什么无法删除U盘的文件?mac怎么删除移动硬盘里的文件

3小时前

“我将移动硬盘插入Mac电脑上&#xff0c;准备删除上面不需要的文件&#xff0c;来腾出足够的空间&#xff0c;可是我竟然不能直接删除这些文件&#xff0c;没有删除的选项供我选择&#xff0c

python安装失败0x80070570_0x80070570 文件或目录损坏且无法读取 CHKDSK 修复方法

2小时前

错误 0x80070570&#xff1a; 文件或目录损坏且无法读取。 不要太担心是出现了磁盘坏道&#xff0c;也许只是小小的存储问题。解决方法很简单&#xff0c;用chsdsk命令即可。方法如下:开始--运行

无法访问 F:。文件或目录损坏且无法读取。

2小时前

问题描述 笔者这块西数的移动硬盘最近真的是问题频发&#xff0c;前段时间无法删除损坏的回收站&#xff0c;这两天在家里电脑上插上之后&#xff0c;双击 F 盘提示已损坏&#xff0c;较之以前问题更甚

win7计算机桌面文件位置更改,Win7小技巧:更改用户文件夹位置方法汇总

2小时前

Win7之家( www.win7china)&#xff1a;Win7小技巧&#xff1a;更改用户文件夹位置方法汇总 相信很多人都在感慨“C盘空间怎么越来越小”&#xff0c;作为系统盘&#xff0c;其实很

Data Security and Privacy数据安全与隐私重要知识点

1小时前

Data Security and Privacy Part1: Internet Communication1.1 Risk and Countermeasure1.2 TLS Protocol1.2.1 Overview1.2.1.1

数据科学 IPython 笔记本 四、Keras(下)

1小时前

四、Keras&#xff08;下&#xff09; 原文&#xff1a;keras-tutorials 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 4.7 用于 MNI

如何打开iso文件

18分钟前

iso文件用什么打开? iso文件用什么打开①使用光驱可以打开iso文件 iso文件是一种光盘(CD)上的系统文件格式&#xff0c;因此我们只需要将iso文件写入到光盘当中&#xff0c;然后用光驱打开光盘即可安

发表评论

全部评论 0
暂无评论

最新文章