




免费预览已结束,剩余57页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP基础一、 JSP准备阶段首先安装JDK 然后安装tomcat 进入Jsp编辑页面默认服务器根目录:http:/localhost:8080/.一个简单的JSP程序:JSP运行原理:当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将该JSP页面转译为一个Java文件,再生成字节码,然后通过执行字节码文件来响应客户的请求,而当这个JSP页面再次被请求时,JSP引擎将直接执行这个字节码文件来响应客户,这也是JSP比ASP快的原因之一。字节码文件首次执行主要做一下工作:1. 将JSP页面中普通的HTML(静态部分)交给客户浏览器负责现实2. 执行之间的Java程序片(JSP页面的动态部分),并把结果交给客户的浏览器负责现实当多个用户请求一个JSP页面时,JSP引擎将为每个客户启动一个线程而不是进程,这些线程有JSP引擎服务器负责管理,与传统的CGI为每个客户启动一个进程相比,效率高很多。二、 JSP语法JSP是在传统的HTML中加入Java程序片和JSP标签而成的页面。2.1JSP页面由5种元素组合而成结构:1.普通html标签2.jsp标签:指令标签,动作标签3.变量和方法声明以及类4.java程序片5.java表达式后三种称为JSP的脚本部分JSP标签、数据和方法声明、Java程序片由服务器负责执行,将需要显示的结果发送到客户浏览器。Java表达式由服务器负责计算,并将结果转化为字符串,而后交给客户浏览器。2.2变量、方法、类声明标签: 作用域为整个JSP页面有效,但是方法内定义的变量只在方法内有效,方法结束立即释放。2.3Java程序片标签: 这些程序片被JSP引擎按顺序执行,在程序片内定义的变量在整个页面有效。(会编译为java类中的方法变量,但是作用域是所有程序片结束后释放)2.4表达式标签: 2.5JSP注释标签: html注释部分 用户源码可见 Jsp注释部分 编译忽略2.6JSP的指令标签:1.page指令标签:例:页面显示标准汉语属性:1)language 定义JSP页面使用的脚本语言 目前默认为Java2)import 引入java包 如3)contentType 定义JSP响应的MIME类型和JSP页面字符的编码4)session用于设置是否使用内置对象session 默认为true5)buffer 用于指定内置输出流对象out的缓冲区大小或者不使用缓冲区默认8Kb6)autoflush 指定out缓冲区被填满时,缓冲区是否自动刷新,默认为true7)isThreadsafe 设置JSP页面是否可多线程访问2.include指令标签(静态) 此文件必须是可访问和可使用的在收到该JSP页面请求时,服务器就将该文件先加载进来,组成一个新的JSP页面,然后返回给客户。2.7JSP动作标签动作标签是一种特殊的标签,它影响JSP运行时的功能。1.include动作标签(动态)该include和静态的include区别在于:动态加载的部分是在执行时(而不是事先加载好)才让服务器运行然后返回给用户。如果加载的部分是文本文件,就直接将内容发给客户,如果是JSP文件,则由JSP引擎执行,再将结果返回客户。例:2.param动作标签 配合一起使用用处:如在include时 param标签中的值会被传递到加载的页面中,被加载的页面用request.getParameter(“name”)方法来获得这些传过来的值(就是传递了一定信息到include的页面)3.forward动作标签或作用:从该指令停止当前页面的继续执行,而转到其他的一个JSP页面4.plugin动作标签不是所有的浏览器都支持Java applet小程序,使用plugin标签可以保证客户能执行你的小应用程序。目前IE5.5并不支持Java小程序该标签作用:指示JSP页面加载Java plugin插件,该插件由客户负责下载,并使用该插件来运行Java applet小应用程序若应用程序不在该jsp同目录下,还需要codebase属性指定程序目录位置Align 属性指定java applet屏幕位置5.useBean动作标签用于创建并使用一个javaBeanSun公司倡导:用html完成JSP页面的静态部分,用javaBean完成动态部分,实现真正意义上的静态和动态分割。三、 JSP内置对象有些对象不用声明就可以在JSP页面的脚本部分使用,这就是JSP的内置对象。Request和response对象是JSP的内置对象中比较重要的两个,这两个对象提供了对服务器和浏览器通信方法的控制。HTTP协议 工作方式:GET/hello.jsp HTTP/1.1Host:又如:Post/tree2.jsp/HTTP.1.1Host:localhost:8080Accept-encoding:gzip,deflate1. Request该对象封装了用户提交的信息,调用该对象的响应方法能获得封装的信息,既该对象用可以获取用户提交的信息客户通常使用HTML表单向服务器提交信息,一般格式为:数据提交手段部分Form是表单标签,method取值get或post,前者提交的信息会在提交过程中显示在浏览器的地址栏中,后者则不会显示。表单 的 提交手段 有:框、列表、文本区、表格等基本格式GUI类型可以是text(文本框)(value=,size=,algin=,maxlength= )GUI类型可以是radio(单选框)(value=,size=,algin=,checked= )GUI类型可以是checkbox(复选框)(value=,size=,algin=,checked= )GUI类型可以是password(口令框)(size=,mexlength= )GUI类型可以是submit(提交)(value=,size=)一个表单至少要包含一个提交键GUI类型可以是reset(重置键)重置键将表单中输入的数据清空,以便重新输入 /下拉列表和滚动列表 文本框 表格1) Request可以使用getParameter(String s)方法获取通过文本框提交的信息(养成这样的写法,避免让JSP引擎误以为你使用空对象的错误)String textContent = request.getParameter(“name”);If(textContent = null)textContent = “”; (处理汉字信息:request对象获取客户提交的汉子时会出现乱码现象,如下处理则可解决此问题)String str = request.getParameter(“name”);Byte b = str.getBytes(“ISO-8859-1”);Str = new String(b);2) Request使用getProtocol() 获取客户向服务器提交信息所使用的通信协议3) Request使用getServletPath()获取客户请求的JSP页面文件的目录4) Request使用getContentLength()获取客户提交的整个信息的长度5) Request使用getMethod()获取客户提交信息的方式 如get或post6) Request使用getHeader(String s)获取HTTP头文件中由参数s指定的头文件的值,一般s可取值为:accept、referer、accept-language、content-type、accept-encoding、user-agent、host、conten-length、connection、cookie等7) Request使用getHeadNames()获取文名字的一个枚举8) Request使用getHeaders(String s)获取头文件中指定头文字的全部值的一个枚举9) Request使用getRemoteAddr()获取客户IP地址10) Request使用getRemoteHost()获取客户机的名称(若获取不到则获取IP地址)11) Request使用getServerName()获取服务器名称12) Request使用getServerPort()获取服务器的端口号13) Request使用getParameterNames()获取客户提交的信息体部分中name参数值的一个枚举“用户注册”的例子,首先查散列表是否存在该用户名,没有就创建,有则返回提示。2. Response当客户访问一个服务器的页面时,会提交一个HTTP请求,服务器收到请求时,返回HTTP响应,响应和请求类似,也有某种结构,每种响应都由状态行开始,可以包括几个头及可能的信息体(网页的结果输出部分)我们用request对象获取客户请求提交的信息,响应的我们用response对象对客户的请求作出动态的响应,向客户端发送数据(该对象都是写在返回客户的页面中,理解好)。1) setContentType(String s)动态响应 修改访问页面的contentType属性2) addHeader()动态添加新的响应头和头的值,并将这些头发送给客户的浏览器。如果添加的头已经存在,则先前的头被覆盖。3) sendRedirect(URL url)实现客户的重定向在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,例如:如果客户输入的表单信息不完整,就会再次被引导到该表单的输入页面,使用该方法就可实现重定向。例:客户在Example3_13.jsp页面填写表单提交给tree.jsp页面,如果表单不完整就会被重定向到Example3_13.jsp页面4) setStatus(int n)手动(服务器本身一定会返回一个状态的)增加从服务器返回的状态行的内容状态代码表:3. SessionSession对象的idGetid()方法 获得当前jsp页面的session值Session对象与URL重写Session对象的常用方法n Public void setAttribute(String key,Object obj)Session对象类似于散列表,可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象制定一个索引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被消除。n Public Object getAttibue(String key)获取session对象中包含的关键字是key的对象,由于任何对象都可以添加到session对象中,因此该方法取回对象时,应强制转换为原来的类型。一个综合的例子:练习:4. ApplicationApplication对象常用的方法有些服务器不直接支持使用application对象,必须先用servletContext类声明这个对象,再使用getServletContext()方法对这个application对象经行初始化一个综合的例子:用application制作留言板5. OutOut对象是一个输出流,用来向客户端输出数据,在前面许多例子中曾多次使用out对象进行数据的输出。Out对象可调用一下方法用于各种数据的输出,如:四、 JSP中的文件操作有时服务器需要将客户提交的信息保存到文件或根据客户的要求将服务器上的文件的内容显示到客户端,JSP通过Java的输入输出流实现文件的读写操作。4.1File类File类的对象主要用来获取文件本身的一些信息,如文件所在目录,文件长度,读写权限等,不涉及文件读写操作。创建一个File对象的构造方法3种:n File(String filename);n File(String directoryPath,String filename);n File(File f,String filename);其中filename是文件名字,directoryPath是文件的路径,f是指定成一个目录的文件。File(String filename);默认生成的文件在bin下。创建目录File对象调用 public Boolean mkdir()创建一个目录,成功返回true,否则false例 在root目录下创建一个名为Students的目录列出目录中的文件File对象调用下述方法列出该目录下的文件和子目录n Public String list() 用字符串形式返回目录下的全部文件n Public File listFiles() 用File对象的形式返回目录下全部文件例 输出root目录下全部文件和全部子目录列出指定类型的文件有时我们需要列出目录下制定类型的文件,如jsp,txt等扩展名的文件,可以使用File类的下述两方法,列出定制类型文件。n Public String list(FilenameFilter obj)该方法用字符串形式返回目录下制定类型文件n Public File listFiles(FilenameFilter obj)该方法用File对象返回目录下制定类型文件FilenameFilter是一个接口,接口有一个方法Public Boolean accept(File dir,String name);当向list方法传递一个实现该接口的对象时,list方法将在列出文件时,让该文件调用的accept方法检查该文件是否符合accept方法制定的目录和文件名字的要求例 列出root目录下全部jsp文件删除文件和目录File对象调用Public Boolean delete()可以删除当前对象代表的文件或目录,如果File对象表示的是一个目录,则该目录必须是一个空目录,删除成功返回true例 删除root目录下A.java文件和Students目录4.2使用字节流读写文件java.io 包提供大量的流类。所有字节输入流类都是InputStream(输入流)抽象类的子类,所有字节输出流类都是OutputStream(输出流)抽象类的子类。InputStream抽象类常用方法:OutputStream抽象类常用方法:1) FileInputStream和FileOutputStream类FileInputStream是从InputStream派生出的简单输入类,该类所有方法都是从InputStream继承而来,构造方法有:FileInputStream(String name);FileInputStream(File file);第一种构造方法使用给定的文件名name创建一个FileInputStream对象,第二个构造方法使用File对象创建一个FileInputStream对象,参数name和file指定的文件成为输入流的源,输入流通过调用read()方法读出源中的数据。例 为了读取一个名为myfile.dat的文件,创建一个来自源的文件输入流对象FileInputStream istream = new FileInputStream(“myfile.dat”);或用方法二 使用文件对象来制定要打开的文件是哪个文件File f = new File(“myfile.dat”);FileInputStream istream = new FileInputStream(f);FileOutputStream是从OutputStream派生出的简单输出类,该类所有方法都是从OutStream继承而来,构造方法有:FileOutputStream(String name);FileOutputStream(File file); 类似FileinputStream当使用文件输入流构造方法建立通往文件的输入流时或使用文件输出流构造方法建立来自文件的输出流时,可能出现错误(异常)。最好使用异常处理机制处理该异常2) BufferedInputStream和BufferedOutStream类为了提高读写效率,FileInputStream和FileOutputStream流经常配合BufferedInputStream和BufferedOutStream使用。BufferedInputStream类的一个常用构造方法是:BufferedInputStream(InputStream in);例 写入一个文件再读取4.3使用字符流读写文件字节流不能直接操作Unicode字符,所以Java提供了字符流。所有字符流类都是Reader(输入流)抽象类和Writer(输出流)抽象类的子类。 1) FileReader和FileWriter类FileReader类构造方法:FileReader(String name);FileReader(File file);第一个构造方法是使用给定的文件名name创建一个FileReader对象,第二个构造方法是使用File对象创建FileReader对象,参数name和file指定的文件称作输入流的源,输入流通过调用read方法读出源中的数据。FileWriter类似2) BufferedReader和BufferedWriter类为了提高读写效率,FileReader和FileWriter经常配合BufferedReader和BufferedWriter使用。BufferedReader可以使用方法String readline()读取一行BufferedWriter可以使用方法write(String s,int off,int length)将字符串s的一部分写入文件,使用newline()向文件写入一个行分隔符。4.4回压字符流PushbackReader类创建的对象叫回压字符流,可以使用unread(char ch)将一个字符回压到该流中,被回压的字符时该回压流紧接着再调用read()方法时最先对出的字符,回压流可以用来监视读出的信息,当读出一个不需要的信息时,可以不处理该信息,而将需要的信息回压,然后再读出回压的信息,该类构造方法:PushbackReader(Reader in);4.5数据流DateInpoutStream类和DateOutputStream类创建的对象分别称为数据输入流和数据输出流。它们允许程序按着与机器无关的风格读取原始数据,也就是说,当我们读取一个数值时,不必关心这个数值应当时多少字节。DateInpoutStream类和DateOutputStream类的构造方法:DateInpoutStream(InputStream in)将创建的数据输入流指向一个由参数in决定的输入流,以便以后者读取数据(按着与机器无关的风格读取)DateOutputStream(OutputStream out)将创建的数据输出流指向一个由参数out决定的输出流,然后通过这个数据输出流把java数据类型的数据写到输出流out4.6对象流ObjectInputStream类和ObjectOutputStream类分别是InputStream类和OutputStream类的子类,ObjectInputStream类和ObjectOutputStream类创建的对象分别称为对象输入流和对象输出流。对象输入流使用writeObject(Object obj)方法将一个对象obj写入到一个文件,对象输入流使用readObject()方法读取一个对象到程序中。构造方法:ObjectInputStream(InputStream in);ObjectOutputStream(OutputStream out);ObjectOutputStream类的指向应当是一个输出流对象,因此当准备将一个对象写入到文件时,首先用FileOutputStream类创建一个文件输出流,如下:FileOutputStream file_out = new FileOutputStream(“tom.txt”);ObjectOutputStream object_out = new ObjectOutputStream(file_out);ObjectInputStream类似散列表数据结构 在java.util包中的Hashtable类练习:使用对象流技术实现网上货单的录入和查询。客户在first.jsp页面输入数据提交给Input.jsp页面,该页面首先读取文件good_name.txt中的散列表对象,查找客户要存放的货物的货号是否已经存在,如存在,客户被重定向到de1.jsp页面。在该页面可以删除某货号所对应的货物,如果货号不错呢在,客户就可将新的货号的库存信息存入散列表,并将散列表写入到文件,用户也可链接到showgoods.jsp页面查看库存。4.7RandomAccessFile类4.8文件上传客户通过一个JSP页面上传文件给服务器时,该Jsp页面必须含有File类型的表单,并且表单必须将ENCTYPE属性设置为multipart/form-data。File类型表单如下:JSP引擎可以调用request的getInputStream()获得一个输入流,通过这个输入流读入客户上传的全部信息,包括文件的内容和表单域的信息。例 4.9文件下载4.10分页读取文件五、 JSP中使用数据库在JSP中可以使用Java的JDBC技术,实现对数据库中记录的查询、修改和删除等操作。JDBC(java database Connectivity)是Java数据库连接API。简单的说,JDBC能完成三件事:l 与一个数据库连接l 向数据库发送SQL语句l 处理数据库返回的结果DBC桥接器首先设置好数据源,于是我们有了一个数据库(数据源就是一个数据库)。为了连接到这个数据库,需要建立一个JDBC-ODBC桥接器,即加载桥接器驱动程序。TryClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Catch(ClassNotFoundException e)5.1查询记录步骤:要查询数据库中的记录,必须和数据库建立连接。1) 连接到数据库首先使用包Java.sql中的Connection类声明一个对象,然后再使用类DriverManager调用方法getConnection创建这个连接对象:TryConnection con = DriverManager.getConnection(“jdbc:odbc: 数据源名字”,”login name”,”password”);Catch(SQLException e)2) 向数据库发送SQL语句首先使用Statement类声明一个SQl语句对象,然后通过刚才连接数据库的对象con调用方法createStatment()创建这个SQl语句对象:TryStatement sql = con.createStatement();Catch(SQLException e)3) 处理查询结果(5.2重点讲解)有了SQL语句对象后,这个对象就可以调用相应方法实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中,也就是说,SQL语句对数据库的查询操作将返回一个ResultSet对象:ResultSet rs = sql.executeQuery(“SELECT * From 成绩表”);ResultSet对象是由统一形式的列组织的数据行组成。ResultSet对象一个只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后,ResultSet对象可以使用get*方法获得字段值,将按位置索引(第一列使用1,第二列使用2等等)或字段名传递给get*方法的参数即可。5.2查询Public int executeQuery(String sqlStatement)方法实现查询 顺序查询使用Result的next()方法,可以顺序查询。例 :查询pubs中students表里所有全部字段记录例 :查询“英语成绩”大于80的记录,但只显示“姓名”字段和“英语成绩”字段 游动查询 随机查询 参数查询 排序查询 分析结果集查询 使用通配符查询5.3更新Public int exec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 强化训练人教版8年级数学下册《平行四边形》定向测试试卷(附答案详解)
- 2024年电梯考试考前冲刺练习题附完整答案详解【有一套】
- 2024-2025学年度自考专业(计算机信息管理)能力检测试卷及答案详解(典优)
- 2024年医院三基考试考试历年机考真题集附参考答案详解【考试直接用】
- 2024年安全员考试考前冲刺测试卷及参考答案详解【模拟题】
- 2024银行岗位测试卷带答案详解(基础题)
- 2023年度计算机三级模拟试题附参考答案详解(达标题)
- 华为公司国际营销战略研究
- 医疗从业者述职报告
- 智能化招聘系统的构建与应用效能研究
- 水域救援知识课件
- GB 31604.60-2024食品安全国家标准食品接触材料及制品溶剂残留量的测定
- 新国际政治学概论(第三版)-教学课件-陈岳-109503国际政治学概论(第三版)
- XX医院DRG绩效分配方案
- 《研究生英语》(第二版)练习答案及译文
- 加油船租赁油船租赁合同
- 《茶叶审评技术》课程考试复习题库(含答案)
- 专题四“挺膺担当”主题团课
- 智能高速铁路概论-课件-第一章-世界智能铁路发展-
- 部编人教版五年级上册语文 第三单元单元分析
- 空间向量及其运算练习题
评论
0/150
提交评论