前言
下面我要给大家讲解的是《JSP实用教程(第三版)耿祥义 张跃平编著》的第4章(JSP与Javabean)中例题4_9,这个例子所实现的功能是编写一个类和一个jsp文件,动态获取项目中一个文件夹下面所有的图片文件并将路径存储到对象中,当我们点击jsp页面中的上一张和下一张按钮时,重新向服务器提交请求,服务器返回新的html页面从而达到切换图片的效果。
1.效果展示
(注意:这里的上面的按钮是“上一张”,下面的按钮是下一张,哈哈,没想到我自己居然打错字了,而且是等文章快写好的时候才发现写错字的,不过问题应该不大,大家明白这个意思就好了,我就不重新截图了,麻烦地很!!)
2.知识点讲解
2.1什么是javabean?
bean的本意是豆子,而在java ee的开发中,一般我们把一些可重用的组件称为一个javabean,简单的来说,javabean就是一个类,当有一些信息需要我们进行存储或者在不同的程序之间传递时,封装成一个javabean会是一个很好的选择,例如:
2.2javabean代码示例
package tom.jiafei;
import java.util.Date;
public class UserInfo {
//这里的用户的信息存储在UserInfo类的成员变量里,类UserInfo就是一个javabean
public String id;
private String password;
public String name;
public int sex;//0未知 1男 2女
public String phone;
public String email;
public Date registerTime;
public boolean vip;
//一般我们会为javabean中的每个属性编写一个对应的set方法和get方法,不过时候后也会故意不写,例如:
public String getId() {return id;}
public void setId(String i) {id=i;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
//jsp页面调用<jsp:getProperty/>和</jsp:setProperty/>来获取和设置javabean中的成员时,bean中必须存在对应的is方法或get方法或set方法,否则会出错
public boolean isVip() {
return vip;
}
public void setVip(boolean vip) {
this.vip = vip;
}
//其他的东西我就不写了,大家随便看看就好了
}
2.3 File类的使用
File类是java.io包中一个操作磁盘上的文件或目录的类,这里我简单介绍一下File类的使用以及背后的原理。直接上代码,在代码中解释吧。我在我电脑的D盘中新建了一个test.java。内容如下:
package com;
import java.io.File;
public class test{
public static void main(String args[]){
//File类使用方法1.使用绝对路径,路径分隔符可以是\\或/
File f1 = new File("d:/test1.txt");//1.1文件
File f2 = new File("c:\\test");//1.2目录
//注意,上面的这两个路径都是不存在的,File中只是存储了路径信息,
//如果需要判断文件是否存在或者创建文件的话,需要调用File类中的方法。
if(f1.exists()){
System.out.println("文件存在");
}else{
try{
f1.createNewFile();//创建新文件
}catch(Exception e){System.out.println(e);}
}
//File类使用方法2.使用相对路径
File f3 = new File("");//这个目录就是当前目录,具体是啥我后面再解释
File f4 = new File("test3.txt");
System.out.println("f3 "+f3.getAbsolutePath());
System.out.println("f4 "+f4.getAbsolutePath());
}
}
下面简单看一下运行结果:
上面的File类的示例还是比较简单的,唯一容易产生疑问的就是File类中相对路径的参照到底是怎么来的。从上面的图我们可以看到,java中File类获取到的相对路径和我们执行java命令时的工作目录是一致的,下面我再给大家详细讲讲这里。
2.3.1 File类的相对路径
根据JDK的官方文档,java.io包中的所有类都将相对路径名解释为起始于用户的当前工作目录,可以通过调用System.getProperty(“user.dir”) 来获得,这个user.dir属性,简单来说就是执行java命令的工作目录的路径,下面我用代码给大家验证一下,将上个例子中的代码精简如下:
package com;
import java.io.File;
public class test{
public static void main(String args[]){
System.out.println(new File("").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
2.3.2 列举出目录中的所有文件
File类中提供的列举目录中的文件的方法有2个分别是list()和listFiles();在源码中它们的定义如下:
下面我简单示范一下:
package com;
import java.io.File;
import java.util.Arrays;
public class test{
public static void main(String args[]){
//用法1.list方法列举出所有文件和目录,获取到的是字符串
File f = new File("d:\\cordova");//注意这里的必须传入一个目录的值才能使用list方法
String [] list