还剩45页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
课题第一章Java Web概述【教学目标】驾驭JSP运行环境的搭建,能进行简单的JSP程序编写及运行【教学重点】Eclipse+Dreamweaver工具,项目的导入,导出,发布打包【教学难点】Eclipse+Dreamweaver工具,项目的导入,导出,发布打包【教学方法】讲解,探讨【教学地点】教学楼,综合楼【课时安排】4课时【教学过程】
1.1配置JSP运行环境任务描述及实现正确安装Tomcat服务器,并显示其欢迎页面如图1T所示图1-1运用Tomcat欢迎页面实现过程
1.安装JDK安装Tomcat服务器前首先安装JDK Java Development Kit,其包括了Java运行环境,Java工具和Java基础的类库目前,供应下载的最新版本为JDK7读者可到官方网站下载,下载地址为下载后双击安装,画面如图—2所示,按“下一步”操作直到完成图1-2JDK安装界面
2.安装TomcatTomcat官方网站下载地址本书采纳的版本是Tomcat-下载后,双击安装,如图1-3所示点击Next到第一步,进行安装组件选择,如图1-4所示第二步选择路径,依据系统默认路径即可第三步为配置Tomcat端口信息和账号信息,如图『5所示,依据实际配置即可第四步为选择JDK的安装路径,如图1-6所示,选择在之前第1步操作中安装的川K所在的位置之后单击最好能够及模块名称联系在一起例如login.jsp一登录页面register,jsp--注册页面message,jsp--消息页面
2.Java Web项目文件夹组织规范Java Web项目的目录结构为src存放java源文件的文件夹WebContent-web站点文件存放文件夹--images--图片文件夹一css一样式文件夹—js—js文件夹I-……一其他功能模块文件夹(存放及某个功能模块相关的资源)I-WEB-INF―网站配置及类和库文件夹I-classes-存放类编译后的字节码文件的文件夹—lib—存放jar文件的文件夹
2.2制作一个带包含文件的JSP页面任务描述及实现实现静态包含功能,编写三个不同类型的文件,然后将这三个不同类型的文件静态包含于某一JSP文件中新知识点-----JSP指令page指令,include指令JSP指令是为JSP引擎而设计的它们并不直接产生任何可见的输出,而只是告知引擎如何处理其余的JSP页面JSP指令有三种,分别为页面设置指令page,页面包含指令include和标记指令tagliboJSP指令一般语法形式为%©指令名称属性=“值%
1.page指令page指令就是通过设置内部的多个属性来定义JSP文件中的全局特性须要留意的是,page指令只能对当前自身页面进行设置,即每个页面都有自身的page指令假如没有对属性进行设置,JSP将运用默认指令属性值
2.include指令在JSP开发中,可以将一些重用的代码写入一个单独的文件中,然后通过include指令引用该文件,从而缓解代码的冗余问题,修改也比较便利Include指令语法格式为%@include file二”被包含的文件路径”%inlcude也被称为静态包含指令,包含的文件可以是JSP文件,HTML文件,文本文件和Java程序段静态包含指令只是简单的将内容合在一起显示,所以,在一个完整的页面中,对于head,title,body等元素只能出现一次,假如重复出现,则会造成HTML错误在节任务中,其主要采纳include指令完成不同类型文件的包含扩展-----taglib指令的运用运用〈%@taglib%〉指令在JSP文件中导入标签,以便在JSP中运用标签便利地完成一些动作Taglib指令的语法为%©taglib uri=tagLibraryURIvprefix=tagPrefix%uri是一个URI标识标记库描述器一个标记库描述器用来唯一的命名一组定制的标记,并且告知包涵器如何处理特别的标记Prefix定义一个prefix:tagname形式的字符串前缀,用于定义定制的标记
2.3制作一个简单的JSP网站任务描述及实现.1制作一个简单的JSP网站制作一个简单的JSP网站网站主题为产品网站,主要包括网站首页,产品和下载页面等,效果如图2-102-12所示要求公共部分采纳单独〜文件,并被包含开发过程采纳Eclipse和Dreamweaver搭配开发,设计显示界面部分全部用Dreamweaver实现,JSP程序部分在Eclipse中编写,最终在Eclipse中测试运行新知识点-----JSP动作指令,jsp:include在JSP中,还存在另外一类标记,其符合XML的语法格式利用这些标记可以达到限制Servlet引擎的作用,如动态的插入文件,调用JavaBean,页面重定向等,这类标记称为JSP动作标记JSP的常用动作标记有jsp:include,jsp:useBean,jsp:setProperty,jsp:getProperty,jsp:forward,jsp:plugin,jsp:params〉等扩展-----jsp:forward》的运用〈jsp:forward》动作指令表示把当前的页面限制权转向另外一个对象,该对象可以是一个HTML文件,JSP文件或者一个Servlet文件〈jsp:forward〉的语法格式jsp:forward page二”转向的文件路径|=表达式%〉”/或者jsp:forward page=”转向的文件路径|%=表达式%〉”jsp:param name=»paraml»value=»valuel»/jsp:param name=»param2»value=»value2»//jsp:forward在上述格式中,page属性为一个字符串或者一个表达式,用来表示转向文件的路径;jsp:param字句指令为传递参数,name指定参数名,value指定参数值【教学小结】本章主要介绍了JSP页面的组成,指令,动作等技术,重点介绍了JSP的page指令,include指令的运用,jsp:include,〈jsp:forward》等动作指令的运用通过本章的学习,读者可以建立一个简单功能的JSP网站课题第三章JSP内置对象【教学目标】驾驭JSP常用内置对象及运用方法【教学重点】JSP内置对象【教学难点】JSP内置对象【教学方法】讲解【教学地点】教学楼,综合楼【课时安排】4课时【教学过程】
3.1获得客户端数据任务描述及实现.1实现用户注册信息获得及显示编写用户注册功能,注册信息包括用户名,密码,性别,E-mail,娴熟开发语言,如图3-1所示,提交后,显示用户输入的数据为了提高开发效率,开发过程采纳Eel ipse和Dreamweaver搭配开发,设计显示界面部分全部用Dreamweaver实现,代码在界面制作自动生成基础上在Eclipse中编写,最终在Eclipse中测试运行新知识点-----JSP内置对象,request.1JSP内置对象概述为了简化Web页面的开发过程,JSP供应了一些由容器实现和管理的对象,这些对象在JSP中可以直接运用,不须要JSP页面编写进行实例化,可以直接运用,此类对象称之为JSP的内置对象JSP中规范定义了9个内置对象,分别是request,response,session,application,out,page,pageContext和exceptiono其说明见表3T表3-1JSP内置对象所属类说明对象request javax.servlet..封装了客户端的恳求信ServletRequest息response javax.servlet..包含了响应客户恳求的ServletResponse相关信息session javax.servlet..及当前恳求相关的会话Sessionapplication javax.servlet.Servle存放全局变量,实现用户tContext间的数据共享out javax.servlet,jsp.Js向客户端输出数据的对pWriter象page java.lang.Object指当前JSP页面本身,作用类似于thispageContext javax.servlet,jsp.Pa供应了对JSP页面内全geContext部的对象及名字空间的访问config javax.servlet,servle Servlet初始化时,向其tConfig传递配置参数的对象exception java.lang.Throwable页面运行中发生异样而产生的对象扩展------中文乱码处理,request中其他信息获得.1获得显示含有中文的信息客户端提交数据当含有中文时,JSP不能正常显示如将.1节的表单增加个人简介后,程序为exam3」_reg_
2.jsp,此处略,运行效果如图3-6,其提交后显示会是乱码,如图3-7所示因此,要对含有中文的表单数据,要进行编码设置其主要方法为在获得程序中设置字符集,使request其字符集及页面字符集保持一样.2获得客户端恳求的相关信息ServletRequest包含很多可以获得及当前恳求相关信息的方法,具体可查看API文档,下面的例子将展示其中一部分方法的运用,exan3_l_request.jsp是提交恳求的页面,exam3_l_showlnfo.jsp是处理恳求的页面,在此页面中将调用request对象的各种方法,以获得及当前恳求相关的一些信息
3.2处理服务器响应任务描述及实现.1实现四则运算测试功能针对刚学会整数四则运算的小学生,开发一个测试网站要求在测试页面中能随机产生一个四则运算式,当用户在userAnswer表单域内填写答案并提交后,获得用户所填的答案,推断答案的对错后,假如错误则进入错误提示页面;假如正确则进入正确页面新知识点-----response,out.1responseJSP的内置对象response代表服务器端返回给客户端的相应,其主要用于处理响应数据该对象的方法主要包括处理响应头的相关属性的方法,设定响应状态码的方法,重定向方法,设置响应体相关内容和属性的方法等等其常用方法见表3-3所示表3-3response对象的常用方法方法说明void setHeaderString name,String为名为name的响应头设定值value为valueoolean containsHeaderString name推断响应对象中是否出名为name的头void addCookieCookie cookie将参数指定的cookie添加到response对象中void sendRedirectString location将页面重定向到参数所指定的URLvoid setContentTypeStringtype设置响应的MIME类型PrintWriter getWriter得到返回客户端的打印流.2out对象out对象是类的实例,表示一个输出流,用于向客户端输出数据查阅API文档可知,JspWriter对象和由ServletResponse的getWriter方法得到的PrintWriter对象是有依靠关系的假如页面没有缓冲区,则写入JspWriter对象的数据将直接通过PrintWriter对象进行输出;假如页面有缓冲区,则直到缓冲区满且如setContentType等操作都合法时才创建PrintWriter对象,由PrintWrtier对象进行输出扩展一一设置响应的MIME类型任务将一个文本文件包含在jsp页面中,且在显示页面内容之前先让用户选择查看文件所运用的方式,将三种可选方式(文本方式,网页方式,word文档方式)放在下拉框中供用户选择当用户选择并点击“查看按钮”后,按用户所选方式呈现内容
3.3存储用户会话任务描述及实现.1推断用户是否已登录实现如下功能用户胜利登录后,只要未关闭阅读器的状况下,可随时访问本站点的任何页面(当然此处本站点只有登录页面和欢迎页面),假如用户在未登录的状况下访问欢迎页面的话,给出相应的提示,并在5秒后跳转到登录页面实现当用户在登录页面(exam3_3_login.jsp)输入用户名和密码并点击登录后,在处理页面exan)3_3_login_do.jsp(代码如程序3-12所示)中推断用户名和密码是否正确,假如正确,即登录胜利,则将名为“username”,值为用户所输入的用户名的属性添加到session对象中,然后进入exani3_3_welcome.jsp(代码如程序3-13所示)中;假如用户名或密码不正确,则输出提示“用户名或密码不正确,5秒后为您跳转回登录页面”,并在5秒后跳转回登录页面假如用户没有登录,而直接访问exam3_3_welcome.jsp,则输出提示“您必需先登录,5秒后为您跳转回登录页面”,并在5秒后跳转回登录页面新知识点------session,aplication1session・session(会话)是用来在访问一个网站时发出的多个页面恳求或者在多次页面跳转之间识别同一个用户并且存储这个用户的相关信息的一种方式通常从一个客户连接到某个服务器开始,直到他关闭阅读器离开这个服务器为止,称之为一次会话Servlet容器运用javax.servlet..Session这个接口在客户端和服务器端之间创建一个会话,JSP的内置对象session就是这个接口的一个实例一个session通常只对应一个用户,它有肯定的生存时间,它可以使同一个用户在访问同一个Web站点时在多个页面连接和恳求之间共享数据服务器通常通过cookie或者重写URL的方式来维持session,不过开发者无需关切这些细微环节Session接口的方法主要分为两类,一类是查看和操作关于这个session的信息的方法,如session的ID,创建时间,最近访问时间等;另一类方法是将对象绑定到session中,以能够运用户信息在客户端及服务器端的多次连接中能够共享.2applicationJSP内置的application对象是类的一个实例,可以通过它和Servlet容器进行通信,如获得一个文件的MIME类型,转发恳求,写日志文件等等;也可以通过它共享一些全局信息Application对象表示Servlet的上下文,每台Java虚拟机上的同一个Web应用只有一个上下文,即当Web应用被部署到服务器上,服务器启动时就创建一个application对象,全部访问该应用的客户都共享同一个application对象,直到服务器关闭因此可以通过将一些信息放在application对象里,以实现全局共享,当然要留意这个“全局”只是相对的,因为不同的Java虚拟机上的Servlet上下文也是不同的扩展------cookie.1记录用户以往访问当前站点的相关信息任务描述当用户访问本网站的登录页面时,能够自动显示出该用户以前访问本网站时曾经运用过的用户名实现过程这样的功能一般都是基于cookie实现的首先创建一个web应用,当用户访问本网站的登录页面exam3_3_cookie_login.jsp(代码如程序3-17所示)时,该页面读取客户端的cookie,假如cookie中存在username记录,则在登录表单的用户名一栏中自动填入该username值当用户胜利登录后,将该username存入cookie中.2知识点:Cookie简介Cookie是Web服务器发送给客户端的一小段信息假如服务器须要在客户端记录某些数据时,就可以向客户端发送Cookie,客户端接收并保存该Cookie,而且客户端每次访问该服务器上的页面时就会将Cookie随恳求数据一同发送给服务器下面从向客户端发送Cookie以及从客户端读取Cookie两方面来介绍Cookie的运用方法
1.向客户端发送Cookie首先须要创建Cookie对象Cookiec=new CookiecookieNamev,“cookieValue;然后须要调用setMaxAge longtime为Cookie对象设置有效时间该时间参数以秒为单位,不然阅读器关闭时Cookie就会被删除;最终运用ServletResponse对象的addCookie Cookiec方法把Cookie对象添加到响应头中发送到客户端
2.从客户端读取Cookie首先获得客户端上传的Cookie数组调用ServeltRequest对象的getCookies得到一个Cookie对象的数组;然后遍历该数组,找寻须要的Cookie对象通过Cookie的getName方法,获得Cookie对象的name属性,通过getValue方法获得Cookie对象的值【教学小结】本章介绍了JSP的各个内置对象,并着重讲解了request,response,session,application,out这几个最常用的对象,这些对象在JSP开发中具有很重要的地位,盼望读者能够结合本章任务理解这些对象,并能够驾驭其用法对于其它未详解的对象,可参考相关的API文档课题第四章JDBC及数据库应用【教学目标】驾驭通过JDBC连接数据库并进行数据操作的方法【教学重点】连接数据库和读取数据库,写入数据库【教学难点】连接数据库和读取数据库,写入数据库【教学方法】讲解,演示【教学地点】教学楼,综合楼【课时安排】4课时【教学过程】
4.1连接数据库并读取数据任务描述及实现通过JDBC连接Mysql数据库,查询hncst数据库中users数据表中的数据,并以表格形式显示,如表4-1所示Users表的结构如表4T所示表4-1任务执行结果用密码性别Email娴熟开户名发语言leiyanrui123456female JAVA,C,C#•••••••••••••••新知识点——JDBC概述,JDBC连接Mysql数据库.1JDBC简介JDBC的英文名称是Java DatabaseConnecivity,中文名称是Java数据库连接,它是一种用于执行SQL语句的Java API类包,由一组用Java语言编写的类和接口组成,通过它可以构建更高级的工具和接口,使数据库开发人员能够用纯Java API编写数据库应用程序JDBC是Java操作数据库的方法,由SUN供应有了JDBC,向各种关系数据发送SQL语句就是一件很简单的事换言之,有了JDBC API,就不必为访问MySQL数据库特地写一个程序,为访问Oracle数据库又特地写一个程序运用JDBC API,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用,这和“Next”开始安装安装完毕后,提示安装完成,如图1-7所示单击“Finish”完成Tomcat的安装安装完成之后,在程序菜单中可以看到Tomcat的选项,如图「8所示点击Monitor Tomcat,可在任务栏看到Tomcat的服务图标,如图1-9所示,双击该图标,弹出如图1T0所示的Tomcat启动界面,在此界面中可以选择启动或停止Tomcat服务启动Tomcat后,在地址栏中输入,若出现图1T的显示效果,则Tomcat已正常安装并运行图1-3Tomcat安装欢迎界面新知识点一一JSP概述,Tomcat目录结构,虚拟目录配置.1JSP概述
1.动态网页动态网页是在服务器运行的程序或者网页,它们会随不同用户,不同时间,不同需求,返回不同的内容如当登录到论坛时,作为论坛管理员身份,就可以看到“删除”,“修改”等操作;作为论坛一般用户身份,则只能看到帖子的阅读页面动态网页会运用服务器端脚本语言,比如目前流行的JSP等,访问动态网页时会获得最新内容显示,这就是为什么不同时间访问网页显示内容会发生变化的缘由动态网页的特点交互性好即网页会依据用户需求和选择而动态改变和响应例如用户在网页中填写表单信息并提交,服务器经过处理将信息自动存储到后台数据库中,并转到相应提示页面因此,采纳动态网页技术的网站可以实现及用户的交互功能,如用户注册,用户登录,信息查询等自动更新对于网页设计者来说,无需每次修改页面内容,只需在后台添加或者删除要显示的信息即可例如,在论坛发布信息,后台服务器将自动生成新的网页内容
2.B/S技术运用动态网页技术开发网站事实上是B/S技术的一种应用,因此,要更好地理解动态网页的开发原理,首先须要了解B/S技术的一些基本概念B/S技术跟C/S技术的区分Microsoft的ODBC技术是类似的,ODBC是由Microsoft公司提倡并得到业界普遍响应的数据库连接技术,通过它可以运用一组通用的接口及各种数据库进行连接,但这仅限于Windows平台;而JDBC不同,运用Java编写的应用程序可以在任何支持Java的平台上运行,程序员甚至不必在不同的平台上编写不同的应用这也是Java语言“编写一次,到处运行”的优势.2Mysql数据库简介MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司o在2008年1月16日被Sun公司收购2009年,Sun又被Oracle收购目前MySQL被广泛地应用在Internet上的中小型网站中由于其体积小,速度快,总体拥有成本低,尤其是开放源码这一特点受到了众多中小型网站制作者的青睐MySQL的开发也得到了很多闻名厂商和技术团队支持.3JDBC连接Mysql数据库的基本步骤
1.下载驱动要通过JDBC连接数据库须要运用数据库厂商供应的JDBC Drive在Mysql官方网站下载其mBC驱动,官网地址,下载页面如图4-2所示
2.将下载好的驱动mysql-connector-java—bin.jar文件此处的为驱动版本号,复制到当前工程的WEB-INF的lib目录中,如图4-3,图4-4所示
3.编写数据库连接程序1加载驱动Class.forNamecom.mysql.jdbc.Driver.newlnstance;2建立连接对象String url=v jdbc:mysql://localhost:3306/hncstn;〃连接字符串Connectionconn=DriverManager.getConnectionurl;3建立Statement对象或PreparedStatement对象Statement stmt=conn.createStatement;//仓建Statement对象String sql=select*from userswhere oolean=And password=;PreparedStatementpstmt=conn.prepareStatement sql;Preparedment对象pstmt.setStringl,adminv;pstmt.setString2,liubin;Statement是PreparedStatement的父接口Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行预编译SQL语句;也就是说,Statement接口供应了基本方法,而PreparedStatement接口添加了处理IN参数的方法对于需多次执行的SQL语句,用PreparedStatement即可以减轻编码负担,又可以提高系统效率4执行SQL语句执行SQL查询O1String sql=select*from users”;ResultSet rs=stmt.executeQuerysql;执行insert,update,delete等语句,先定义sql02stmt.executeUpdatesql;Statement接口供应了三种执行SQL语句的方法executeQuery,executeUpdate和execute运用哪一个方法由SQL语句所产生的内容确定5关闭对象,释放资源Rs.close;stmt,close;conn,close;通过上面五个步骤,就可以完成JDBC连接数据库,执行SQL语句,并在执行完后释放数据库资源扩展-----JDBC连接SQL Server,Oracle.1JDBC连接SQL ServerSQL Server是一个关系型数据库管理系统SQL Server运用集成的商业智能工具供应企业级的数据管理,可以为不同规模的企业供应不同的数据管理解决方案下边以SQL Server2005为例,介绍JDBC连接SQL Server数据库实现过程通过JDBC连接SQL Server的hncst数据库,实例文件为exam4_2_sqlserver,jsp,具体步骤如下
1.在Microsoft SQL Server的官网下载SQL ServerJDBC驱动不同版本的数据库对应不同驱动程序将下载好的驱动sql jdbc.jar文件复制到网站的lib目录中
2.将SQL Server的验证方式改为混合验证方式,并设置合法用户名和密码打开Microsoft SQL Server ManagementStudio Express,通过右键点击数据库“服务器属性”面板,在“安全”选项里进行配置,重启SQLServer后生效,.2JDBC连接Oracle及JDBC连接Mysql,SQLServer类似,须要先下载Oracle数据库的JDBC驱动,并将其放置在网站的lib目录下在此不再具体描述其次,创建连接文件建BCOracleConnection.jsp,代码如程序4-3所示
4.2写入数据库任务描述及实现编写程序完成用户注册功能,即通过JDBC连接数据库,并向users表中添加一条新记录注册的资料包含姓名,密码,性别,娴熟开发语言,个人简介新知识点-----Connection,Statement,ResultSet等对象的常用方法在Java语言中供应了丰富的类和接口用于数据库编程,利用它们可以便利地进行数据的访问和处理下面主要介绍Java,sql包中供应的常用类和接口
1.Driver接口每个数据库驱动程序必需实现Driver接口,对于JSP开发者来说只要运用Driver接口就可以了在编程中要连接数据库必须要装载特定的数据库驱动程序Driver,格式如下Class.forName“数据库商供应的驱动程序名称”;在运用Class.forName之前,应先运用Import语句导入java,sql包,即在Java源程序中为import java.sql.*;在JSP程序中为%@page import=java.sql.*%
2.DriverManager®0类负责管理JDBC驱动程序的基本服务,是JDBC的管理层,作用于用户和驱动程序之间,用来管理数据库中的全部驱动程序它可以跟踪可用的驱动程序,注册,注销以及为数据库连接合适的驱动程序,设置登录时间限制等
4.Statement接口Statement接口用于在已经建立连接的基础上向数据库发送SQL语句Statement接口中包含了执行SQL语句和获得返回结果的方法在JDBC中有3种Statement对象Statement,PreparedStatement®CallableStatement Statement对象用于执行不o带参数的简单SQL语句;PreparedStatement继承了Statement,用于处理须要被多次执行的SQL语句;CallableStatement继承了PreparedStatement,用于执行对数据库的存储过程的调用
5.PreparedStatement接口PreparedStatement接口继承Statement,包含已经编译的SQL语句这就是使语句“打算好”,所以它的执行速度要高于Statement对象因此,将多次执行的SQL语句创建为PreparedStatement对象,可以提高效率
6.ResultSet接口ResultSet接口用来短暂存放数据库查询操作所获得的结果ResultSet接口中包含了一系列get方法,用来对结果集中的数据进行访问,扩展数据库连接是JDBC数据库应用程序中最为耗时的一个部分服务器的资源有限,程序假如始终保持数据库的连接状态,就会消耗数据库服务器的资源,影响服务器的正常响应在部分状况下JSP也会自动关闭数据库连接进而释放资源,例如在一个方法或一个类的内部创建数据库连接,当这个方法或类运行结束时,JSP将会自动的回收资源,并不需运用close方法主动释放资源但在实际应用中,JDBC连接数据库通常会运用servlet(见第五章),而servlet会始终保持在服务器内,servlet的数据库连接也会始终保存在服务器内,所以为了减少消耗服务器资源,应当习惯在方法或类中创建数据库连接,并通过close方法主动关闭数据库连接新知识点-----分页假如要显示的数据太多,在一个页面上显示不仅会运用户难以阅读,更加会影响程序的运行,加重服务器的负担,解决的途径就是对记录进行分页显示分页的方法有很多种,下面我们介绍一种最简单最简单理解的通过前面的学习,我们可以通过RecordSet对象的方法,获得记录集中的记录条数,已知每页显示的记录个数,可以很简单的计算出分页的页数,页数等于记录条数除以每页记录条数,再将结果向上取整,即页数二总记录条数/每页记录数;当前页显示的记录可以通过SQL中Select语句的Limit来限定,已知当前页码,则显示记录的起始位置为(当前页码-1)*每页记录数,以MYSQL为例,构造出的SQL语句为Select*from userslimit(当前页码-1)*每页记录数,每页记录数分页只显示符合要求的部分记录,所以肯定要设计翻页连接帮忙用户翻页阅读,常用的翻页连接有首页,尾页,上一页和下一页,首页即页码为1的页面,尾页即页码为总页数的页面,上一页即页码为当前页减1的页面,下一页即页码为当前页加1的页面,依据这些设置超连接进行翻页SQLServer的SQL语句没有Limit关键字,假如要对SQLServer中的数据表进行分页就要利用T_SQL中的top和not in语句,top关键字用来指定返回结果集的前n行,很简单理解,第一页就是select top每页记录数from users,第二页select top2*每页记录数from user,结果是前两页的记录,然后要将第一页的记录从记录集中剔除,运用not in,即select top2*每页记录数from userswhere idnot in(select top每页记录数id from users)o则当前页的分页SQL语句为select top当前页*每页记录数*fromuserswhere idnot in(select top(当前页-1)*每页记录数id fromusers)【教学总结】本章介绍了应用JDBC技术实现对Mysql,SQLServer,Oracle数据库的连接,数据的查询和更改等操作,并对数据查询的分页技术进行了具体的讲解数据库操作是JSP技术的核心内容,必需扎实驾驭本章的知识本章为了便于学习,将数据库逻辑直接放置在JSP页面中,这样凡要进行数据操作的页面都要加上连接数据库的代码,不便于维护课题第五章JavaBean技术【教学目标】
1.驾驭JSP中运用JavaBean的语法
2.驾驭JavaBean的作用域
3.驾驭JavaBean封装方法【教学重难点】封装用户信息,实现数据库连接的JavaBean【教学方法】讲解【教学地点】教学楼,艺术馆【课时安排】4课时【教学过程】
5.1封装用户信息的JavaBean任务描述及实现.1实现封装用户信息的JavaBean创建封装用户信息的JavaBean,用户信息包括用户名,密码,性别,变量类型表5-1用户信息表属性用户名userName String密码userPasswo Stringrd性别Sex String年龄age int家庭住址address String年龄和家庭住址等内容如表5-1所示.1JavaBean概述一.JavaBean技术介绍JavaBean是一种Java语言写成的可重用组件,JavaBean归根结底就是一个封装了属性和方法的类为写成JavaBean,类必需是具体的和公共的,并且具有无参数的构造器JavaBean通过供应符合一样性设计模式的公共方法将内部域暴露成员属性众所周知,属性名称符合新知识点JavaBean概述,JSP调用JavaBean这种模式,其他Java类可以通过自身机制发觉和操作这些JavaBean属性运用JavaBean的最大优点就在于它可以提高代码的重用性编写一个胜利的JavaBean,宗旨是“一次性编写,任何地方执行,任何地方重用”这正迎合了当今软件开发的潮流,将困难需求分解成简单的功能模块,这些模块是相对独立的,可以继承,重用,这样为软件开发供应了一个简单,紧凑,优秀的解决方案
1.一次性编写一个胜利的JavaBean组件重用时不须要重新编写,开发者只须要依据需求修改和升级代码即可
2.任何地方执行一个胜利的JavaBean组件可以在任何平台上运行,由于JavaBean是基于Java语言编写的,所以它可以轻易移植到各种运行平台上
3.任何地方重用一个胜利的JavaBean组件能够被在多种方案中运用,包括应用程序,其他组件,Web应用等二.JavaBean的组成一个Bean由两部分组成
1.属性propertiesJavaBean供应了高层次的属性概念,属性在JavaBean中不只是传统的面对对象的概念里的属性,它同时还得到了属性读取和属性写入的API支持属性值可以通过调用适当的Bean方法进行比如,可能Bean有一个名字属性,这个属性的值可能须要调用String getNameO方法读取,而写入属性值可能要须要调用void setNameString str的方法每个JavaBean属性通常都应当遵循简单的方法命名规则,这样应用程序构造器工具和最终用户才能找到JavaBean供应的属性,然后查询或修改属性值,对Bean进行操作JavaBean还可以对属性值的改变作出及时的反应比如一个显示当前时间的JavaBean,假如改变时钟的时区属性,则时钟马上重画,显示当前指定时区的时间
5.Userlnfo_do/Z%这里的chapter
5.Userlnfo do是指在包chapter5下的Userlnfo_do.java类2调用JavaBean调用JavaBean运用的是动作标签jsp:useBean语法如下ojsp:useBeanid=user“class=uchapters.Userlnfo do“scope=sessi on/上述代码中声明白一个名字为user的JavaBean对象jsp:useBean标签具有id,class和scope三个属性具体说明如下id属性代表JavaBean对象的ID,表示引用JavaBean对象的局部变量名,以及存放在特定范围内的属性名class属性用来指定JavaBean对象的类名scope属性用来指定JavaBean对象的存放范围,可选择的值包括page,request,session和application3设置JavaBean属性设置JavaBean的属性,运用的是〈jsp:setProperty标签语法如下jsp:setProperty name=user”property=password”value二“123”/jsp:setProperty标签具有以下属性name属性必需和〈jsp:useBean》标签中的id属性值匹配property属性用来指定JavaBean对象的某个属性值假如值为*号,则是指定全部属性value属性用来指定属性的属性值相当于运用%user.setPassword123;%o4访问JavaBean属性访问JavaBean属性,运用的是jsp:getProperty标签语法如下jsp:getProperty name=user”property=password”/jsp:getProperty〉标签的name属性也必需和〈jsp:useBean〉标签中的id属性值匹配依据ID为user的JavaBean对象,然后打印它的password属性相当于运用〈%=user.getPassword%o扩展JavaBean作用域------在我们调用bean的时候其中最重要的三个属性是须要设定的,他们分别是id二class二scope二”在这三个属性中,id表示我们要创建的事例对象名称;class表示我们调用的bean,也就是你编写bean完成后通过编译生成的.class文件;scope就表示我们创建的bean的事例对象的生命周期我们常常看到这样的代码来限制bean的生命周期
1.jsp:useBeanid=user”class=uchapters.Userlnfo_do“scope=page
2.jsp:useBean id=user“class二uchapters.Userlnfo_do“scope=request〉
3.jsp:useBean id=user“class=^chapter
5.Userlnfo_do“scope=session〉
4.jsp:useBeanid二user“class=uchapter
5.Userlnfo_do“scope=uapplication”52数据库连接的JavaBean任务描述及实现6现注册信息的添加并写入数据库数据库连接对动态网站来说特别重要,通过JavaBean来访问数据库事实上就是建立一个JavaBean组件,然后再运用JavaBean来完成及数据库的连接新知识点数据库连接的JavaBean在JSP文件中HTML及大量Java代码交织,且直接嵌入访问数据库的代码及SQL语句则会使页面设计困难使得程序员难以理解,维护,扩展,调试程序将JSP和JavaBean技术结合在一起,可以用JavaBean实现业务逻辑和数据库操作的封装,JSP只负责页面的显示用户端阅读器发送JSP文件恳求,JSP文件访问JavaBean,JSP页面响应恳求并将处理结果返回客户,而运用JavaBean处理全部的数据访问其架构如图5-8所示在访问数据库时,运用这种结构可使JSP页面中只须要嵌入少量的Java代码甚至不运用Java代码,可重用对数据库进行处理的JavaBean,便利调试并且将对数据库的操作封装在JavaBean中使得数据库的地址,登录用户名和密码等信息都封装在应用C/S客户机/服务器结构分为客户机和服务器两层,一般将应用软件安装在客户机端,通过网络及服务器相互通信,实现交互,如QQ,飞信,MSN等软件对于这类系统的结构如图1T1所zj\O对于C/S结构的应用软件,若要在客户机运行,就必需在先安装,而且每次对系统做了微小的改动,全部客户机的应用软件都须要更新
3.JSP简介I什么是JSPJSP JavaServer Pages是由Sun Microsystems公司提倡,很多公司参及一起建立的一种动态网页技术标准它是在传统的网页HTML文件*.htm,*.html中插入Java程序段Scriptlet和JSP标记tag,从而形成JSP文件*.jspWeb服务器在遇到访问JSP网页的恳求时,首先对其中的Java代码进行处理,然后将执行结果连同JSP文件中的HTML代码一起返回给客户的阅读器插入的Java程序段可以操作数据库,重新定向网页等,以实现建立动态网页所须要的功能
4.JSP的特点JSP最大的优点是开发的跨平台结构,它可以运行在几乎全部的操作系统平台JSP的优势一次编写,到处运行在这一点上Java比PHP更精彩,除了系统之外,代码不用做任何更改系统的多平台支持基本上可以在全部平台上的随意环境中开发,在随意环境中进行系统部署,在随意环境中扩展相比ASP/PHP的局限性是显而易见的强大的可伸缩性从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力多样化和功能强大的开发工具支持这一点及ASP很像,Java已经有了很多特别优秀的开发工具,而且很多可以免费得到,并且其中很多已经可以顺当的运行于多种平台之下程序中,用户在阅读器上看不到任何对数据库操作进行访问的源代码,只有通过JavaBean对数据库进行访问,从而提高了对数据库进行访问的安全性【教学总结】本章主要介绍JavaBean技术的运用,JavaBean的属性,JSP中及JavaBean相关的操作指令的语法和用法,JavaBean的作用域和通过JavaBean访问数据库等内容首先介绍了如何在eclipse中创建JavaBean,然后介绍了如何在Jsp页面应用JavaBean在讲到JavaBeano的作用域时用两个例子作比较,通过这两个例子体现作用域的不同用法在讲解每个知识点时都先会举相关的例子来说明,然后通过例子来引出和扩展知识点通过阅读本章,读者可以熟识JavaBean并且驾驭JavaBean的运用为以后更深化的学习打好基础课题第六章JavaServlet技术【教学目标】驾驭Java Servlet及运用方法【教学重难点】JavaServlet的编写及部署过程,Servlet的生命周期,Servlet接口【教学方法】讲解,探讨【教学地点】教学楼,综合楼【课时安排】4课时【教学过程】
6.1建立并部署Servlet任务描述及实现运用Eclipse创建简单的He^oServlet程序,Servlet运行效果见图6-1所示图6-1HelloServlet运行效果实现过程
1.创建Servlet
2.配置web.xml文件Tomcat
7.X版本仓U建Servlet、各在.java文件中酉己置@WebServlet声明,可进行URL映射配置,在上例中的配置为©WebServletdescription=Hello,Servlet程序”,urlPatterns={/HelioServlet,a/chapter6/HelloServlet在Tomcat
6.X之前版本,创建Servlet后,须要在web.xml文件中进行配置,运用Eclipse创建Servlet过程和前面的过程相同,创建Servlet后,Eclipse会在web.xml文件中自动创建配置节点,具体代码见程序6-2o
3.访问HelloServlet打开阅读器,在地址栏输入,可以看到图6-1所示运行效果新知识点-----Java Servlet概述
1.Java Servlet简介Servlet是一个执行在服务器端的Java Class文件,载入前必需先将Servlet程序代码编译成.class文件,然后将此class文件放在Servlet Engline路径下Servlet API运用javax.servlet和javax.servlet.两个包的接口类当服务器上的一个JSP网页被第一次恳求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件(即Servlet类),再将这个Java文件编译成class字节码文件,然后执行以响应客户的恳求,当这个JSP页面再次被恳求执行时,JSP引擎将直接执行这个字节码文件来响应客户,响应速度比第一次执行快很多
2.Web.xml文件Java Web应用通过一个基于XML的发布描述文件来配置其发布信息Web.xml文件中可包含的配置信息有Servlet的定义;Servlet的初始化参数;Servlet以及JSP的映射;安全域配置参数;资源引用;环境变量的定义
3.Java Servlet功能Servlet是运用Java Servlet应用程序设计接口及相关类和方法的Java程序它在Web服务器上或应用服务器上运行并扩展了该服务器的实力Java Servlet对于Web服务器就好像Java Applet对于Web阅读器Applet装入Web阅读器并在Web阅读器内执行,而Servlet则是装入Web服务器并在Web服务器内执行Java Servlet API定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性Servlet通过创建一个框架扩展服务器的实力,采纳恳求-响应模式供应Web服务当客户机发送恳求至服务器时,服务器将恳求信息发送给Servlet,Servlet生成响应内容并将其传给Server,然后再由Server将响应返回给客户端Servlet的功能涉及范围很广,Servlet可完成如下功能创建并返回一个包含基于客户恳求性质的动态内容的完整的Html页面创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)及其他服务器资源(文件,数据库,Applet,Java应用程序等)进行通信用多个客户机处理连接,接受多个客户机的输入,并将结果广播到多个客户机上例如,Servlet可以是多参及者的嬉戏服务0将定制的处理供应应全部服务器的标准例行程序例如,Servlet可以修改如何认证用户通过运用Servlet API,开发人员不必担忧服务器的内部运作方式表格资料,服务器头,cookies等皆可通过Servlet处理另外,因为Servlet是用Java编写,能将其从一个服务器移到另一个服务器以供发布,同时不必担忧操作系统或服务器的类型扩展------Java Servlet版本历史Servlet
1.0版本由Sun Microsystems公司创建于1997年,从
2.3版本开始,Java Servlet由JCP组织下开发,JCP是Java CommunityProcess的缩写,一个由全世界的Java开发人员和获得许可的人员组成的开放性组织,其对Java技术规范,参考实现和技术兼容性包进行开发和修订JSR53(Java SpecificationRequest,Java规范恳求,指向JCP提出增加一个标准化技术规范恳求)定义了Servlet
2.3和JSP
1.2规范,JSR154提出了Servlet
2.4和
2.5规范,直到2010年3月,推出了现行Servlet
3.0规范
6.2获得客户端数据并写入数据库任务描述及实现当前Web应用程序,用户信息注册时最为广泛的功能之一,下面以用户信息注册并写入数据库为例介绍运用JSP和Servlet结合完成信息注册并保存在数据库中,如图6-6所示
3.创建Servlet在Eclipse中添加Servlet,其中包名chapter6,类名为RegistToDb,仅选择doPost方法,在doPost方法中输入代码,具体代码见程序6-4所示
4.留意事项在这里要留意,假如是Servlet
3.0以上版本,须要在RegistToDb.java文件中找到鲫ebServlet(〃/chapter6/RegistToDb〃)修改Servlet访问路径,这里的路径为/chapter6/RegistToDb假如是
3.0以下版本,则须要在web.xml文件中修改〈servlet-mapping》节中的url-pattern,修改为/chapter6/RegistToDb新知识点-----Java Servlet工作过程
1.Servlet的工作过程Servlet为客户端和服务器端信息的处理供应了一种“恳求/应答”模式机制同时,Java的Servlet API为客户端和服务器之间的恳求和应答信息定义了标准接口图6-8描述了一个Servlet的工作过程客户端发送恳求给服务器端;服务器将恳求信息发送至ServletServlet生成响应内容并将其传给服务器响应内容动态生成,通常取决于客户端的恳求服务器将应答返回给客户端Servlet看起来像是通常的Java程序,Servlet导入特定的属于JavaServlet API的包因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就犹如Applet对Client一样,但是,由于Servlet运行于Server中,它们并不须要一个图形用户界面从这个角度讲,Servlet也被称为FacelessObject一个Servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“恳求-响应”编程模型来访问的应用程序虽然Servlet可以对任何类型的恳求产生响应,但通常只用来扩展Web服务器的应用程序
2.Servlet的生命周期通过Servlet的工作过程,我们可以看出,客户端的程序并不是直接及Servlet进行通信,而是通过Web服务器和其他应用服务器来完成的一个Servlet是javax.servlet包中Servlet类的子类,类似一个Java Applet是类似,只不过Servlet运行在服务器端而已,须要支持Servlet的服务器完成对Servlet的初始化,Servlet生命周期如图6-9所示Servlet的生命周期由Servlet容器来限制,主要有初始化,运行和销毁三个过程来完成,1初始化Servlet,Servlet第一次被恳求加载时,服务器创建一个Servlet对象,Servlet容器调用Servlet对象的init方法进行初始化2运行Servlet,创建的Servlet对象依据客户端的恳求,调用Service方法响应客户端的恳求3销毁Servlet,当Web应用被终止时,Servlet容器会先调用Servlet对象的destrory方法,然后再销毁Servlet对象,释放Servlet对象占用的资源在Servlet生命周期中,Servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于客户端的恳求次数
3.Servlet核心类Servlet运用一个HTML表单来发送和接收数据要创建一个Servlet,请扩展Servlet类,该类是用特地的方法来处理HTML表单的GenericServlet的一个子类HTML表单是由<form>和</form>标记定义的表单中典型地包含输入字段如文本输入字段,复选框,单选按钮和选择列表和用于提交数据的按钮当提交信息时,它们还指定服务器应执行哪一个Servlet或其它的程序Servlet类包含init,destroy,service等方法其中init和destroy方法是继承的1GenericServlet类GetnericServlet类定义了一个一般的,依靠于协议的Servlet,假如要写一个用于Web的Servlet,扩展HpptServlet一个Servlet可以直接扩展GenericServlet类扩展一个指定协议的子类如Servlet更为普遍GenericServlet类使编写Servlets变得更简单它供应了一般版本的生命周期方法inin,destroy和来自ServletConfig接口的方法GenericServlet类也实现了log方法,这是一个在ServletContext类中定义的方法扩展-----JavaServlet接口
1.Servlet接口Servlet的框架的核心是接口,全部的Servlet都必需实现这一接口在Servlet接口中定义了5个方法这些方法的功能及运用方法如下1init方法在Servlet的生命期中,仅执行一次init方法它是在服务器装入Servlet时执行的可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet无论有多少客户机访问Servlet,都不会重复执行init缺省的initO方法通常是符合要求的,但也可以用定制initO方法来覆盖它,典型的是管理服务器端资源例如,可能编写一个定制initO来只用于一次装入GIF图像,改进Servlet返回GIF图像和含有多个客户机恳求的性能另一个示例是初始化数据库连接缺省的initO方法设置了Servlet的初始化参数,并用它的ServletConfig对象参数来启动配置,因此全部覆盖init方法的Servlet应调用super,init以确保仍旧执行这些任务在调用service方法之前,应确保已完成了initO方法2service方法service方法是Servlet的核心每当一个客户恳求一个Servlet对象,该对象的service方法就要被调用,而且传递给这个方法一个恳求ServletRequest对象和一个“响应”ServletResponse对象作为参数在Servlet中已存在service方法缺省的服务功能是调用及恳求的方法相应的do功能例如,假如恳求方法为GET,则缺省状况下就调用doGet oServlet应当为Servlet支持的方法覆盖do功能因为Servlet,service方法会检查恳求方法是否调用了适当的处理方法,不必要覆盖service方法只需覆盖相应的do方法就可以了Servlet的响应可以是下列几种类型一个输出流,阅读器依据它的内容类型如text/HTML进行说明一个错误响应,重定向到另一个URL,servlet,JSP3doGet方法当一个客户通过HTML表单发出一个GET恳求或直接恳求一个URL时,doGet方法被调用及GET恳求相关的参数添加到URL的后面,并及这个恳求一起发送当不会修改服务器端的数据时,应当运用doGet方法4doPost方法当一个客户通过HTML表单发出一个POST恳求时,doPost方法被调用及POST恳求相关的参数作为一个单独的恳求从阅读器发送到服务器当须要修改服务器端的数据时,应当运用doPost方法5destroy方法destroy方法仅执行一次,即在服务器停止且卸装Servlet时执行该方法将Servlet作为服务器进程的一部分来关闭缺省的destroy方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源例如,假如Servlet在运行时会累计统计数据,则可以编写一个destroy方法,该方法用于在未装入Servlet时将统计数字保存在文件中另一个示例是关闭数据库连接当服务器卸装Servlet时,将在全部service方法调用完成后,或在指定的时间间隔过后调用destroy方法一个Servlet在运行service方法时可能会产生其它的线程,因此请确认在调用destroy方法时,这些线程已终止或完成6GetServletConfigO方法GetServletConfig方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContextServletContext接口供应有关servlet的环境信息7GetServletlnfoO方法GetServletlnfo方法是一个可选的方法,它供应有关servlet的信息,如作者,版本,版权当服务器调用Servlet的Service,doGet和doPost这三个方法时,均须要“恳求”和“响应”对象作为参数“恳求”对象供应有关恳求的信息,而“响应”对象供应了一个将响应信息返回给阅读器的一个通信途径
2.ServletRequest接口ServletRequest接口封装了客户端恳求的细微环节它及协议无关,并有一个指定的子接口ServletRequest主要处理找到客户端的主机名和IP地址检索恳求参数取得和设置属性取得输入和输出流
6.3处理服务器响应任务描述及实现用户登录是Web应用程序开发最常见的功能之一,登录过程为:首先获得用户输入的用户名或密码,然后在数据库中比对,查找相匹配用户信息,胜利则保存会话,并跳转到对应页面,否则提示用户名密码错误新知识点------Servlet中会话存储,重定向到JSP页面
1.会话跟踪Servlet API供应了一种简单而又高效的模型来跟踪会话信息在Web服务器看来,一个会话是由在一次阅读过程中所发出的全部HTML恳求组成的换句话说,一次会话是从你打开阅读器开始到你关闭阅读器结束会话跟踪的第一个障碍就是如何惟一标识每一个客户会话这只能通过为每一个客户安排一个某种标识,并将这些标识保存在客户端上,以后客户端发给服务器的每一个HTML恳求都供应这些标识来实现Servlet中运用servletRequest对象的getSession方法来取得当前的用户会话getSession的参数确定了假如会话尚不存在,getSession是否创建一个新会话还有一个版本的getSession没有任何参数,它将缺省地创建一个新会话当一个新用户第一次调用Servlet引擎时,这将会强制产生一个新的会话请留意,我是说Servlet引擎而不是某一个Servlet全部的会话数据都是由Servlet引擎来维护的,并且在Servlet之间共享这样你就可以运用一组Servlet一起为一个客户会话服务了另外,Servlet API规范上指出“为了确保会话被正确维护,Servlet的开发都必需在提交应答之前调用getSession方法”这正是说,在向应答的输出流中写入之前,你肯定要调用getSession方法一旦你获得了会话对象,它工作起来就像标准Java的哈希表或字典一样运用一个惟一的键,你可以在会话对象中加入或者获得任何对象由于会话数据是由Servlet引擎维护存储的,你在为这些键赋值时肯定要留意维护它的惟一性我建议将Servlet的名字甚至它的包名作为键的一部分,这样你就不会不当心修改其他Servlet设置的键值了
2.Servlet中会话存储我们知道Web应用是基于协议的,而协议恰恰是一种无状态协议,为解决这个冲突,Session由此产生既然Web应用并不了解有关同一用户以前恳求的信息,则解决这个问题的一个方法是运用Servlet/JSP容器供应的会话跟踪功能,ServletAPI规范定义了一个简单的Session接口,通过它我们可以便利地实现会话跟踪Session接口供应了存储和返回标准会话属性的方法标准会话属性如会话标识符,应用数据等,都以“名字-值”对的形式保存简而言之,Session接口供应了一种把对象保存到内存,在同一用户的后继恳求中提取这些对象的标准方法在会话中保存数据的方法是setAttributeString s,Object o,从会话提取原来所保存对象的方法是getAttribute Stringso在服务器端,每当新用户恳求一个运用了Session对象的JSP页面,Servlet/JSP容器除了发回应答页面之外,它还要向阅读器发送一个特别的数字这个特别的数字称为“会话标识符”,它是一个唯一的用户标识符此后,Session对象就驻留在内存之中这当然是在服务器端,等待同一用户返回时再次调用它的方法在客户端,阅读器保存会话标识符,并在每一个后继恳求中把这个会话标识符发送给服务器会话标识符告知JSP容器当前恳求不是用户发出的第一个恳求,服务器以前已经为该用户创建了Session对象此时,JSP容器不再为用户创建新的Session对象,而是找寻具有相同会话标识符的Session对象,然后建立该Session对象和当前恳求的关联
3.Servlet重定向至IJJSP页面重定向技术可以分为两类,一类是客户端重定向,一类是服务器端重定向客户端重定向可以通过设置特定的头,或者写JavaScript脚本实现扩展-----JavaServlet及JSP的共享对象Java Web应用程序有四个对象存放共享对象这些共享对象存放在那里,以便存放者或者其它程序代码日后运用这四个对象分别是页面,恳求,会话和应用程序,它们都是以数据结构键/值对的形式保存的同时这四个对象形成了四个级别的共享对象存放地,即应用程序对象中的共享对象是全局性的,在整个应用程序的生命周期内有效当然主动去掉除外,属于全部的上网用户;会话对象中的共享对象是在一个会话期内有效,属于用户的当前会话;恳求对象中的共享对象在一个恳求期内有效,属于用户发送的当前恳求;页面对象中的共享对象只属于当前页面的执行实例JSP的劣势及ASP一样,Java的一些优势正是它致命的问题所在正是由于为了跨平台的功能,为了极度的伸缩实力,所以极大的增加了产品的困难性Java的运行速度是用class常驻内存来完成的,所以它在一些状况下所运用的内存比起用户数量来说确实是“最低性能价格比”了从另一方面,它还须要硬盘空间来储存一系列的.java文件和.class文件以及对应的版本文件
5.JSP开发及运行环境要求
①操作系统要求操作系统可以选择Windows操作系统,Unix操作系统和Linux操作系统等
②软件环境要求集成开发工具集成开发工具有NetBeans,Eclipse等本书选用EclipseWeb服务器JSP运行时须要安装JDK和Web服务器,目前运用较多的Web服务器有Tomcat,WebLogic,Jboss和Resin等本书选用TomcatTomcat是Apache软件基金会Apache SoftwareFoundation的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成本书选用目前最新版本Tomcat
7.
0.3虚拟目录配置配置JavaWebExample的虚拟目录,方法如下
1.前期打算工作
①在D盘建立D:\WorkSpace\JavaWebExample的文件夹也可以建立在其他磁盘
②在JavaWebExample文件夹中新建index,html文件,输入“欢迎”二字
2.配置Tomcat虚拟目录
①打开Tomcat的安装目录下conf文件夹的server.xml文件在〈Host〉和</Host>标签之间加上虚拟目录配置标签,即〈Contextpath=/JavaWebExamp1e vdocBase=D:\WorkSpace\JavaWebExample”/>,其中path属性值【课堂小结】本章通过3个具体的任务,介绍了Java Servlet功能,历史版本及配置方法,介绍了Servlet工作原理,Servlet生命周期,Servlet核心类和Servlet接口的常用方法,还介绍了Servlet会话跟踪,Servlet会话管理,重定向技术以及Servlet和JSP共享对象方法Java Servlet是Java Web技术的基础通过上述知识的学习,有助于读者更加深刻的理解和应用Java Web开发技术课题第七章EL【教学目标】驾驭Java EL及运用方法【教学重点】EL语法,EL中的隐含对象【教学方法】讲解【教学地点】教学楼,综合楼【课时安排】4课时【教学过程】
7.1配置和运用EL任务描述及实现运用EL协作JSTL标签遍历输出JSP容器中的一个Map中的数据运行后的效果如图7T所示图7-1运用EL访问JSP容器中的数据实现过程
1.引入JSTL库文件转到tomcat目录下,找至lJ\webapps\examples\WEBTNF\lib下的jstl.jar和standard,jar两个文件,拷贝到项目WEBTNFlib目录下
2.创建JSP文件在Eclipse中JavaWebExample项目下创建chapter7目录,并创建exam7_l_el.jsp文件,在文件首部添加%@taglib uri二””prefix=c%,在本例中,我们运用EL访问JSP容器中的数据,具体代码见程序7-
11.EL语法结构EL语法特别简单,${expression,是一个以特{”开始,以结束的表达式,expression通常是一个变量名称或者表达式,功能是在JSP页面中输出该变量或表达式对应的值
2.EL运算符EL供应”和“[]”两种运算符来存取数据当要存取的属性名称中包含一些特别字符,如.或等并非字母或数字的符号,就肯定要运用“[]”例如${user.My-Name}应当改为${user[“My-Name”]}此外,假如要动态取值时,应当运用“[]”,因为”无法做到动态取值例如${sessionScope.user[data]}中data是一个变量
3.变量EL存取变量数据的方法很简单,例如${username}它的意思是o取出某一范围中名称为username的变量由于我们并没有指定是哪一个范围的变量username,所以它会依序从page,request,session,application范围查找假如途中找到username,就直接回传,不再接着找下去,但是假如全部的范围都没有找到时,就回传miH属性范围在EL中的名称,见表7-1o新知识点——EL语法基础EL ExpressionLanguage,表达式语言,是JSP
2.0的一个重要组件,在JSTL中被广泛运用EL运用特别便利,语法也很简单,已成为标准规范之一EL的主要优势在于简化对象的访问,简化对象属性的访问,简化集合元素的访问,简化恳求参数等的访问,同时EL还供应了运算符集合,支持条件输出,支持自动类型转换等功能扩展一一EL运算符JSP表达式语言供应以下操作符,其中大部分是Java中常用的操作符,基本分为四大类,分别是算术运算符,关系运算符,逻辑运算符和其他运算符
1.算术运算符表达式语言支持的算术运算符和逻辑运算符特别多,全部在Java语言里支持的算术运算符,表达式语言都可以运用;甚至Java语言不支持的一些算术运算符和逻辑运算符,表达式语言也支持
7.2运用EL简化JSP开发任务描述及实现运用EL重写JSP页面完成及
3.1节相同的注册功能,但要求在获得恳求参数时不再运用Java脚本获得,而是运用EL表达式获得request参数用户注册页面如图7-2所示,当注册恳求提交后服务器返回的响应页面如图7-3所示新知识点一一EL内建对象JSP有9个隐含对象,而EL也有自己的内建对象EL内建对象分为6大类,总共有11个,具体描述见表7-6所示扩展一一EL数据类型和自动类型转换EL是为了便于存取数据而定义的一种语言,JSP
2.0之后才成为一种标准EL借鉴了JavaScript语言简单的数据类型和多类型之间转换无关性的特点,运用特别便利
1.EL数据类型表达式语言EL定义了5种数据类型,也称之EL字面量LiteralsBoolean布尔型,值为true或falseInteger整型,及Java语言一样Float浮点型,及Java语言一样String字符串,及Java语言中的String一样Null空值,null
2.EL自动类型转换表达式语言EL除了供应便利存取变量的语法之外,它另外一个便利的功能就是自动转变类型,主要优点表现在于EL元素可以出现在常规的页面正文,HTML以及JSP的标签属性中EL表达式的结果会被强制转换成字符串,并和其他静态文本拼接在一起EL的各种操作运算中,不须要考虑运算对象和结果的类型转换,缘由是在表达式内部已经处理好了从隐含对象中获得参数的值时,可以自动进行类型转换,对类型的限制很宽松比如${param,count+20},假如窗体传来count的值为10时,则上面的结果为30空值代替错误消息大多数状况下,缺失的值或NullPointerExceptions会导致空串,不会抛出异样所以,EL解除了大部分类型的转换,使得JSP编程变得更加敏捷,更简单【课堂小结】:本章通过2个具体的任务,介绍了JSP中EL表达式语言,包括EL的基本语法,算术运算符,内建对象,数据类型和类型转换EL可提高JSP页面上的逻辑实力这样能减少页面运用Java代码供应逻辑支持,从而实现Java代码和HTML界面的分别,能够提高Web程序的开发进度课题第八章Java web高级编程技术【教学目标】驾驭Java web高级编程技术【教学重难点】访问权限限制,数据库连接池【教学方法】讲解【教学地点】教学楼,艺术馆【课时安排】4课时【教学过程】
8.1访问权限限制任务描述及实现完成系统某些模块的受限访问即当用户未登录访问位于admin目录下的系统后台页面时,给出如图8T所示的提示,当用户单击该提示对话框中的确定按钮后,跳转至如图8-2所示的登录页面图8-1未登录访问后台管理页面时的提示信息图8-2系统登录页面新知识点-----Filter
8.
1.
2.1Filter
1.Filter的概念Filter过滤器是在源数据和目的数据之间起过滤作用的中间组件对Web应用来说,过滤器是一个驻留在服务器端的Web组件,它可以截取客户端和资源之间的恳求及响应信息,并对这些信息进行过滤当Web容器接收到一个对资源的恳求时,它将推断是否有过滤器及这个资源相关联,假如有,则容器将把恳求交给过滤器处理在过滤器中,你可以改变恳求的内容,或者重新设置恳求的报头信息,然后再将恳求发送给目标资源当目标资源对恳求作出响应时,容器同样会将响应先转发给过滤器在过滤器中,还可以对响应的内容进行转换,然后再将响应发送给客户端过滤器在Web开发中的一些主要应用如下1对用户恳求进行统一认证;2对用户的访问恳求进行记录和审核;3对用户发送的数据进行过滤或替换;4转换图像格式;5对响应内容进行压缩,减少传输量;6对恳求或响应进行加解密处理;7触发资源访问事务
2.过滤器的实现在javax.serlvet和javax.servlet.包中供应了开发过滤器的相关API,其中过滤器类要实现的接口是,该接口的具体运用方法见.2节
3.过滤器的部署在实现一个过滤器后,须要在部署描述文件web.xml中对过滤器进行配置,这是通过〈filter〉和〈filter-mapping〉元素来完成的在〈filter〉元素内,〈description〉,〈display-name〉,〈icon〉元素及以往Servlet配置中的相同〈filter-name〉用于为过滤器指定一个名字,该元素的内容不能为空〈filter-class元素用于指定过滤器的全限定类名init-param元素用于为过滤器指定初始化参数,它的子元素〈param-name〉用于指定参数的名字,〈param-value〉用于指定参数的值在过滤器中,可以运用FilterConfig接口对象来访问初始化参数下面的程序8-5是〈filter》元素的一个配置例子程序8-5〈filter〉元素配置例子〈filter〉filter-nametestFitler/filter-namefilter-classorg.test.TestFiter/filter-classinit-paramparam-nameword_param-value/WEB-INF/word.txt/param-value/init-param/filterfilter-mapping元素用于指定过滤器关联的url样式或Servleto其中〈filter-name子元素的值必需是在〈filter〉元素中声明过的过滤器的名字〈url-pattern〉元素和servlet-name元素可以选择其中一个;url-pattern〉元素指定过滤器关联的URL样式;〈servlet-name〉元素用于指定过滤器对应的Servlet只有当用户访问<url-pattern>元素指定的URL上的资源或〈servlet-name〉元素指定的Servlet时,该过滤器才会被容器调用<filter-mapping〉元素还可以包含0~4个〈dispatcher〉,指定过滤器对应的恳求方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认为REQUESTREQUEST当用户直接恳求网页资源时,Web容器将会调用过滤器假如目标资源是通过Request Dispatcher的include或forward方法访问,则该过滤器就不会被调用INCLUDE假如目标资源是通过RequestDispatcher的include方法访问,则该过滤器将被调用,反之,该过滤器不会被调用FORWARD假如目标资源是通过RequestDispatcher的forward方法访问,则该过滤器将被调用,反之,该过滤器不会被调用ERROR假如目标资源是通过声明式异样处理机制调用,则该过滤器将被调用,反之,过滤器不会被调用.3处理字符编码的过滤器任务编写一个处理中文乱码的过滤器,该过滤器能够将全部恳求参数包括get和post方式提交的参数的编码方式由“ISO-8859T”改为“UTF-8”编码实现
1.依据Decorator装修者设计模式,对ServletRequest对象进行进一步装饰,在该类中改变其getParameter Stringname方法的行为特性即自定义一个MyServletRequest,该类继承ServletRequestWrapper包装类
2.编写过滤器类Encoding,在该类的doFilter方法中,在运用FilterChain对象将恳求传递至下一个过滤器或调用目标资源前,将原request对象进行装饰扩展------Servlet
3.0新特性Servlet
3.0在Servlet
2.5版本的基础上供应了若干新特性用于简化Web应用的开发和部署其中有几项特性的引入获得了Java开发人员的赞誉
1.异步处理支持有了该特性,Servlet线程不再须要始终堵塞,直到业务处理完毕才能输出响应,最终才结束该Servlet线程在接收到恳求之后,Servlet线程可以将耗时的操作委派为虚拟目录名称,docBase属性值为虚拟目录指向的物理目录修改后如图1-16所示这里path保存的值是你在阅读器中输入的值即虚拟目录,docBase保存的值是你要访问的文件的物理肯定路径
1.2利用开发工具制作Hello.jsp任务描述及实现任务描述利用Dreamweaver,Eclipse搭配开发一个简单的JSP网页开发过程采纳Eel ipse和Dreamweaver搭配开发,设计显示界面部分用Dreamweaver实现,代码在界面制作自动生成基础上在Eel ipse中编写,最终在Eel ipse中测试运行实现过程
1.下载安装Eclipse到Eclipse的官方网站下载Eclipse IDEfor JavaEE Developers,下载后解压即可运用Eclipse官方网站
2.下载并安装DreamWeaver
83.配置Eclipse开发环境启动后,配置Web项目测试服务器打开WindowfPreferences菜单,选择Server-Runtime Environments选项,然后选择添加服务器,添加已经安装的Tomcat v
7.
04.在Eclipse中创建JavaWebExa^lple项目在新建项目选择对话框,选择Dynamics WebProject,如图1-24所示单击“Next”按钮后,出现如图1-25所示的对话框,填写项目名称JavaWebExample,选择及项目相关的信息在本例中,项目文件都置于D:workspace\JavaWebExample中,因此以默认选项配置;测试用服务器选择Tomcat
7.0,其它部分按默认配置,之后单击“Finish”按钮
5.在Dreamweaver中仓ll建JavaWebExample站点在Dreamweaver中创建站点时,其站点根目录指向在Eclipse中创建的项目的WebContent目录,本例的根目录为D:\workspace、JavaWebExample\WebContent,如图1-29所示此外,设置站点为JSP站点,并指定前缀
6.测试测试在Dreamweaver中编写的Web页面,在Eclipse中运行本例中为了便利演示,在Dreamweaver的JavaWebExample站点的Chapter1文件夹创建一个简单的JSP页面examl lHello.jsp新知识点-----Eclipse,Dreamweaver工具简介.1Eclipse简介Eclipse是闻名的跨平台的自由集成开发环境IDE,最初主要用于Java语言开发,目前也有人通过插件使其作为其他计算机语言如C++和Python的开发工具虽然Eclipse本身只是一个框架平台,但是众多插件的支持使得Eel ipse拥有其他功能相对固定的IDE软件很难具有的敏捷性很多软件开发商以Eclipse为框架开发自己的IDEEclipse就其本身而言,它只是一个框架和一组服务,但可通过插件组件构建集成开发环境Ec1ipse附带了一个标准的插件集,包括Java开发工具JavaDevelopmentTools,JDToEclipse最初是由IBM公司开发的替代商业软件Visual AgeforJava的下一代IDE Eclipse,2001年H月贡献给开源社区,现在它由非盈利软件供应商联盟Eclipse基金会Eclipse Foundation管理.2Dreamweaver简介Dreamweaver,简称DW,是一款有着多年历史和良好口碑的可视化网页编辑工具,它最大的优点就是所见即所得,对W3c网页标准化支持特别到位同时它还支持网站管理,包含HTML检查,HTML格式限制,HTML格式化选项,HomeSite/BBEdit捆绑,图像编辑,全局查找替换,全FTP功能,处理Flash和Shockwave等多媒体格式和动态HTML,以及支持ASP,JSP,PHP,ASP,XML等程序语言的编写及调试.3工具联合开发调试项目运用Eclipse开发程序时,虽然系统框架结构会给你带来便利,但并不太适合于开发Web显示界面,而Dreamweaver开发Web页面时可以实现所见即所得的效果,页面也遵循W3c国际标准因此,可以利用这些开发工具各自的优点,结合开发Web程序,从而提高开发效率扩展一一现有项目导入,导出,发布打包对于程序员来说,有时须要将现有项目导入,导出和发布打包,下面介绍如何将项目导入,导出和发布打包.1项目导入项目导入可直接将文件拷贝至相应文件夹中,也可导入War文件下面先来介绍第一种方法
1.文件拷贝1新建项目在Eclipse中新建project,参考中介绍新建项目新建项目test,此时src及WebContent均为空,【教学小结】本章介绍了进行Java Web应用开发的特点,B/S架构的优势,介绍了Java Web程序的服务器运行的安装配置及开发工具的搭配运用,重点介绍了JDK,Tomcat的安装及配置,以及利用DreamWeaver及Eel ipse搭配开发项目通过本章的学习,读者可以创建简单的JSP文件,并且进行测试课题第二章JSP语法【教学目标】驾驭JSP的页面组成,驾驭JSP简单网站的制作【教学重点】page指令,include指令,tablib指令,jsp:include动作指令,jsp:forward》动作指令【教学难点】page指令,include指令,tablib指令,jsp:include动作指令,〈jsp:forward》动作指令【教学方法】讲解,探讨【教学地点】教学楼,综合楼【课时安排】4课时【教学过程】
2.1制作第一个JSP页面任务描述及实现在Jsp文件中定义方法实现两个数的加法定义方法实现两个数的加法,调用其计算1+2并显示结果,如图2T所示图2-1求和效果实现过程
1.新建JSP文件在项目的chapters文件夹中,单击右键选择New—JSP File选项,弹出如图2-2所示的对话框,在中输入exam2_l_sum.jsp,单击Finish之后进入JSP页面编辑窗口,输入代码如程序2-1o新知识点一一JSP页面组成,声明,代码段,表达式,注释JSP页面由两部分组成,一部分为静态部分,即HTML标记,用来完成数据页面显示;另一部分为动态部分,用来完成数据处理,包括脚本元素,指令元素和动作元素脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;JSP指令元素用来从整体上限制Servlet的结构;动作元素用来引入现有的组件或者限制JSP引擎的行为.1声明%!%JSP中声明部分可以进行变量,方法和类的声明,其一般在%!%〉标签中进行其语法格式为%!声明1;声明2;……%如o在程序2-1中,进行了求和方法的声明下边进行一个变量的声明,如程序2-
2.2代码段%%在JSP页面中嵌入Java代码来执行特定的功能,其放置在%%标记中格式为Java代码段1Java代码段2这种Java代码在Web服务器响应恳求时就会运行如程序2-3,定义2个变量并输出.3表达式%=%JSP表达式可以把JSP页面中的数据直接输出到页面,其格式为〈%二表达式%表达式一次只能运用一个表达式,并且该表达式是完整的在表达式的语句中不能运用分号如程序2-4,进行了变量输出这种代码段的主要功能是输出一个变量或常量,有时候将其叫做表达式输出运用方法见程序2-5所示.4注释在JSP中支持两种注释,一种是显式注释,这种注释客户端允许查看的;另一种是隐式注释,这种注释客户端是看不到的
1.显式注释语法HTML注释!-这是显式注释
2.隐式注释语法1//Java供应的单行注释2/*Java供应的多行注释*/3%—JSP注释—%.扩展一一代码编写规范好的代码应当简单理解,并且见名知意的,因此大家都须要遵守一些约定,下面介绍一些常规的编写规范
1.JSP文件命名JSP文件名称要以小写字母命名,名称要体现出该页面的意义,。