Java Web 实训2012-12-9.ppt_第1页
Java Web 实训2012-12-9.ppt_第2页
Java Web 实训2012-12-9.ppt_第3页
Java Web 实训2012-12-9.ppt_第4页
Java Web 实训2012-12-9.ppt_第5页
已阅读5页,还剩232页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,JavaWeb,2011-12,HTMLJSPServletJavaBeanJDBCMySQL,TrainingofJavaWebProject,2,1.课程介绍,3,1.课程介绍,课程的性质和目标本实训课程是在学生具备了Java程序设计知识与面向对象技术的基础上,为进一步提高项目实践能力、开拓创新能力而设置的实践性环节课程。本课程的目的掌握使用JSP应用程序设计的基本技能,熟练使用Eclipse进行Web应用程序的编写、调试。结合案例详细说明JavaWeb软件项目的整个开发过程,在项目开发过程中逐步熟悉知识点,掌握JavaB/S结构程序的运行原理和应用技能,最后完成一个完整的软件开发项目。先修课程:Java语言程序设计、计算机网络、数据库原理。,4,1.课程介绍,课程的基本要求掌握Java集成开发环境(IDE)Eclipse的使用和调试方法利用JSP+Servlet+JavaBean实现Web应用开发掌握分层体系结构开发的技巧完成教师指定的开发任务,5,1.课程介绍,课程的基本内容本实训课程是围绕一个完整的Java项目而展开的,虽然每部分内容相对独立,但通过几次迭代开发后,最后形成一个完整的软件系统。在软件项目选择上遵循的原则是:技术上必须覆盖Java技术应用最为普遍的编程领域等;项目的选择具有良好的伸缩性,既要难易适中又能充分调动学生的创新能力,让学生有发挥的空间。项目:Web电子相册,6,1.课程介绍,考核方法每个学生按照实训项目要求完成实训报告,教师对实训的各项内容进行综合考核。比例为平时考勤20%实训项目考核80,提交源代码和实训报告,7,1.课程介绍,教学思想教师精炼地讲解理论知识教师做例子示范教师布置任务学生的任务课前自己学习相关的基础知识上课听基础知识上课看例子上课做例子课下饿补基础知识课下设计项目每次上课前检查进度,8,1.课程介绍,参考书目(1)邱加永,卞志城,郑经煜,JSP基础与案例开发详解,清华大学出版社,2009.(2)温尚书,陈石华,万欣,JavaWeb编程入门与实战,人民邮电出版社,2010.,9,2.Java软件项目要求与编程环境,10,2.Java软件项目要求与编程环境,项目要求前台查看图片下载图片发表评论用户登录新用户注册后台管理管理员登录修改管理员密码添加图片管理图片管理分类删除评论,11,2.Java软件项目要求与编程环境,软件项目开发的基本过程需求获取画出用例图用例描述系统分析架构设计初步的类设计和类图初步的界面设计利用分析类描述用例(顺序图)系统设计类细化、类图细化顺序图、活动图细化系统实现利用开发工具实现,12,2.Java软件项目要求与编程环境,客户端用户需求,13,2.Java软件项目要求与编程环境,服务器端用户需求,14,2.Java软件项目要求与编程环境,服务器端用户需求细化,15,2.Java软件项目要求与编程环境,逻辑结构,16,2.Java软件项目要求与编程环境,关于用户管理的功能,软件的构架示例如下,17,2.Java软件项目要求与编程环境,符合MVC模式,18,2.JavaWeb项目实训的要求与编程环境,我们所使用的工具JDK1.6(编译、解释器)MyEclipse(集成开发工具)Tomcat6(JSP/Servlet容器)MySQL5.1(数据库服务器)-安装配置Connector/J(mySQL的JDBC驱动)NavicatLite(MySQL客户端工具),19,2.JavaWeb项目实训的要求与编程环境,MyEclipseTomcat配置Web工程创建Web项目的结构,20,2.JavaWeb项目实训的要求与编程环境,JavaWeb应用程序工程制作流程设计目录结构编写Web应用程序代码编写部署描述文件Web.xml编译代码将Web应用程序打包(.war)部署Web应用程序(deploy)执行Web应用程序,21,2.Java软件项目要求与编程环境,Java编程基本规范为GUI上的每个控件起一个规范的Name包、类、变量的命名命名规则包:Java包的名字都是由小写单词组成类:类的名字必须由大写字母开头而单词中的其他字母均为小写,如果类名称由多个单词组成,则每个单词的首字母均应为大写方法:方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头,22,2.Java软件项目要求与编程环境,常用类型缩写对照,变量:变量命名的方法采用匈牙利命名法,它使用3字符前缀来表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,23,2.Java软件项目要求与编程环境,任务1-熟悉开发环境开发环境的搭建在MyEclipse中配置好Tomcat服务器配置好MySQL数据库在MyEclipse中利用jdbc驱动访问MySQL数据库利用MyEclipse部署Web应用程序在MySQL创建用户表提示MySQL的数据库编码设置为UTF-8,这样有利于Web项目开发时,中文编码的一致性MyEclipse中Tomcat服务器的设置时,要将JVM设置为本机的JDK安装路径,而非JRE的路径记住netstartmysql,netstopmysql命令使用navicatelite创建用户表,24,3.HTML网页编程基础,25,网页包含有文本、图形、超级链接以及其他信息元素的文件,可以通过Internet传输,用户可以使用浏览器浏览网站是一个包括多个超级链接在一起的网页集合主页某个站点的起始网页,包含必要的内容和索引信息浏览器是一种用于搜索、查看和管理网络上信息的一种带图形交互界面的应用软件超链接不同网页之间的连接关系地址(URL)标识Web上的页面和资源,3.网页编程基础-HTML,26,浏览器,网站主页,超链接,网页,网页,URL,27,网页的本质-HTML语言编写的文本,HTML用于创建网页文档。HTML文档是使用HTML标记和元素创建的,此文件以扩展名.htm或.html保存在Web服务器上。,3.网页编程基础-HTML,28,Web服务器软件,浏览器,http请求,http响应,解释,工作原理:访问网页的规则-HTTP协议,网页开发工具,编辑生成,发布,3.网页编程基础-HTML,Web程序,动态生成,29,网站,超链接,网页,Web浏览器,网站开发工具,Web服务器,多媒体,主页,通过http协议访问,具有1个或多个,发布,具有,具有,是一种,HTML,源代码是,构建,可视化编辑、生成,模型,3.网页编程基础-HTML,Web程序,动态生成,发布,30,网页开发工具的主要作用HTML文档的可视化编辑生成HTML文档发布到Web服务器常用开发工具FrontPageDreamWeaver,3.网页编程基础-HTML,31,HTMLHyperTextMarkupLanguage超文本标记语言用它编写的文件(文档)的扩展名是.html或.htm,它们是可供浏览器解释浏览的文件格式HTML的基本形式内容标记名往往成对出现,中间的内容是标记的作用域,3.网页编程基础-HTML,32,常用标签全局架构标签:,格式标签:,.文本标签:,.超链接标签:图像标签:,表单标签:,.表格标签:,框架标签:,头元素标签:,区域标签:,3.网页编程基础-HTML,33,用于Html文档的最前边,用来标识Html文档的开始。放在Html文档的最后边,用来标识Html文档的结束两个标志必须一块使用。,3.网页编程基础-HTML,34,构成Html文档的开头部分在此标志对之间可以使用等标志对标志对之间的内容是不会在浏览器的框内显示出来的,3.网页编程基础-HTML,35,是html文档的主体部分在此标志对之间可包含、(分段标记)、(标题标记)(换行标记)(水平分界标记)等它们所定义的文本、图像等将会在浏览器的框内显示出来,3.网页编程基础-HTML,36,3.网页编程基础-HTML,实例用记事本构造最简单的HTML文档,37,常用的标记图像标记超链接标记文本,3.网页编程基础-HTML,38,表单表单是用来收集访问者信息的域集可实现网页与浏览者的交互,达到收集浏览者信息的目的表单元素主要包括单行文本框文本域下拉框单选按钮复选框,3.网页编程基础-HTML,39,表有以下部分组成标题行表头单元格边框cellspacing属性,3.网页编程基础-HTML,40,CSS内联样式表嵌入样式表外联样式表导入样式表请大家自学,3.网页编程基础-CSS,41,JavaScript由浏览器负责解释和执行脚本语言位置一般放在标记之间放在单独的.js文件中作为某个标签的事件属性值或者超链接的href属性值,3.网页编程基础-JavaScript,42,JavaScript常用内置对象winodw对象window.open(test.html,width=390,height=5,toolbar=no,resizable=no,top=200,left=200);document对象包含当前文档的信息write()/writeln()方法,向浏览器输出内容form对象表单对象,一个文档中可以有多个表单,表单之间互不关联document.formName或document.formsindex来获得对form的引用得到from对象后,就可以获得form中元素的引用,3.网页编程基础-JavaScript,43,JavaScript常用的方法(函数)alertconfirmprompt,3.网页编程基础-JavaScript,44,JavaScript中的事件处理onLoad事件onFocus事件onBlur事件onClick事件onChange事件onSelect事件onSubmit事件,3.网页编程基础-JavaScript,45,3.网页编程基础-实例,HTML实例利用HTML构造用户登录界面使用DreamWeaver注意表格的使用,46,3.网页编程基础-实例,JavaScript实例登录form中用户名有默认值当用户名文本框获得焦点则将文本框中文字选中当点击用户名文本框,自动清除文本框中的值,47,3.网页编程基础-实例,48,3.网页编程基础-训练,任务2用HTML构造登录表单,并且利用JavaScript验证表单,要求各项不能为空在MyEclipse中构建Web项目部署到Tomcat中课后任务:学习HTML学习Servlet的基本原理熟悉MyEclipse的使用尝试构造出Web电子相册的后台管理端页面原型根据需求进行数据库设计,画出E-R模型,并在MySQL中建立表,49,50,51,4.Servlet基础与应用,52,Servlet服务端应用小程序用Java编写执行过程与CGI脚本相似,但有以下优势多线程应用编译的程序跨平台性,4.Servlet的应用-基础,53,Servlet的工作任务读取客户机发送的数据显式数据-表单中输入的数据隐式数据-http请求header信息生成结果可能要与数据库进行交流经过计算后形成结果发送数据到客户机显式数据-包括html、二进制数据隐式数据-http响应header信息,4.Servlet的应用-基础,54,4.Servlet的应用-实例,实例-创建简单的Servlet:利用MyEclipse生成一个Web项目在Web项目中创建一个简单的Servlet程序提示:注意Get和Post在Web.xml中配置Servlet映射,55,4.Servlet的应用-实例,创建Web项目,56,4.Servlet的应用-实例,输入Web项目信息,57,4.Servlet的应用-实例,创建一个Servlet类名为TestServlet所在包为myServlets在Web.xml中配置Servlet映射目的是隐藏Servlet的真正位置,58,这里的/是不能省略的,代表的含义是工程根目录,59,4.Servlet的应用-实例,在MyEclipse中配置好Tomcat服务器注意JVM的配置,要选择本机的Java安装路径下的完整JDK目录部署(deploy)实际是将开发环境中的程序拷贝到服务器的Webapps目录下启动服务器,60,4.Servlet的应用-实例,运行,61,4.Servlet的应用-实例,实例-利用表单向Servlet提交数据构建一个HTML网页,带有form在form的action中设置要提交的servlet,此处路径如果没有/,则表示为相对于该网页的相对路径如果有/,则表示为http:/localhost:8080/根目录,62,4.Servlet的应用-实例,创建UserManagerServlet,63,4.Servlet的应用-实例,关于JavaWeb项目中路径的总结web.xml的/表示的是http:/localhost:8080/+工程名而HTML网页(或JSP网页)的form中的action属性,*如果加了/的时候表示绝对路径http:/localhost:8080/;*而没有加/表示的是相对路径在Servlet中,跳转时如果加了/的时候表示绝对路径http:/localhost:8080/而没有加/表示的是相对路径,64,已经加载了Servlet?,调用service()方法,加载Servlet类,并创建新实例,调用init()方法初始化Servlet,HTTP请求,是,HTTP响应,初始化,处理请求,否,利用一个线程调用service()方法,根据所接收到的http请求类型调用doGet、doPost,Servlet的工作方式,4.Servlet的应用-基础,Servlet生命周期创建(New)初始化(Init)服务(Service)撤销(Destory),65,HttpServlet类doGet-GETdoGet(HttpServletRequest,HttpServletResponse)doPost-POSTdoPost(HttpServletRequest,HttpServletResponse)Web容器收到一个请求时,调用HttpServlet类的公共的Service方法,再根据HTTP请求方法的类型,调用相应的doXXX()方法。,4.Servlet的应用-基础,66,GET与POST1、GETGET的参数不能超过255个字符GET的参数用URL中的?开头GET/servlet/Query?name=tt设置Servlet从表单读取数据的编码格式解决读取表单中中文参数的问题response.setContentType(”text/html;charset=utf-8”);相当于设置Servlet返回的HTML的编码解决向客户端输出中文的问题该语句要在PrintWriterout=response.getWriter();语句之前才能起作用,4.Servlet的应用-基础,74,Servlet开发,4.Servlet的应用-基础,75,J2EE应用程序目录结构,4.Servlet的应用-基础,76,实例不带数据库的登录程序构建login.html构建用于登录的servlet,LoginCheck构建web.xml中的servlet路径映射在servlet中显示登录表单提交上来的用户名和密码注意编码问题固定密码的验证逻辑登录成功页面跳转,登录失败页面跳转利用session防止绕过登录页面直接进入,4.Servlet的应用-实例,77,任务3不带数据库的登录程序使用Servlet完成一个用户登录验证的程序(无数据库支持),若成功则导航到成功页面,若失败则导航到失败页面提示构建login.html构建用于登录的servlet构建web.xml中的servlet路径映射在servlet中显示登录表单提交上来的用户名和密码注意编码问题固定密码的验证逻辑登录成功页面跳转,登录失败页面跳转利用session防止绕过登录页面直接进入,4.Servlet的应用-任务,78,4.Servlet的应用-任务,79,4.Servlet的应用-任务,任务4Web电子相册系统的面向对象分析按照边界、控制、实体的模式画出分析类图画出系统中主要的活动流程,80,4.Servlet的应用-任务,开发过程,DougRosenbergandMattStephens,UseCaseDrivenObjectModelingwithUML,81,4.Servlet的应用-任务,示例:登录用例的分析类图,前端控制器,应用控制器,82,4.Servlet的应用-任务,成功登录的顺序图,83,5.JDBC基础知识与应用,84,JDBC介绍JDBC驱动分类使用JDBC编程的步骤实例,5.JDBC基础知识与应用,85,JavaDataBaseConnectivity是一种可用于执行SQL语句的JavaAPI,为不同的DBMS提供统一的数据库编程接口,(1)JDBC介绍,背景Java诞生后,没有Java语言直接可使用的数据库访问的API在Java程序中嵌入C语言的ODBC函数调用,使得Java的优秀特性无法发挥(平台无关、面向对象)JDK1.1,java.sql包(即JDBCAPI)成为Java语言的标准部件,5.JDBC基础知识与应用,86,JDBC特点ForJavaSQL层API与数据库无关的、统一的API“编写一次,随处运行”,5.JDBC基础知识与应用,87,分类Type1:桥驱动Type2:本地驱动Type3:基于中间件的驱动Type4:基于网络协议的驱动注意:Type1、Type2需要在客户端安装代码Type3、Type4是纯Java驱动,(2)JDBC驱动分类,5.JDBC基础知识与应用,88,Type1即JDBC-ODBC桥,提供了经由一种或多种ODBC驱动进行访问的JDBC接口。通常的DBMS都支持微软提出的ODBC规范,因此该模式可以普遍使用,非常灵活,具有很好的代码移植性。因为每次调用都要转换成ODBC调用,所以这种模式与其他模式相比性能最差。,Type2使用NativeAPI它将JDBC调用转换为对数据库(Oracle、Sybase、Informix、DB2等)客户端接口的调用,5.JDBC基础知识与应用,89,Type3纯Java驱动将JDBC调用转换为中间网络协议,然后转换为DBMS协议中间网络协议层起到一个读取数据库的中间件的作用,能够连接许多类型的数据库,因而是最灵活的JDBC模式,5.JDBC基础知识与应用,90,5.JDBC基础知识与应用,Type4纯Java驱动一般是数据库厂商才能实现直接调用DBMS(数据库管理系统)使用的网络协议,91,5.JDBC基础知识与应用,92,Java应用程序,JDBCAPI,JDBC-ODBC桥,JDBC-Native桥,JDBC-Net,JavaJDBC,ODBC驱动,NativeAPI(C),中间件服务器,数据库,客户端,93,步骤加载驱动程序DriverManager类获取数据库连接Connection类创建一个数据库声明Statement类执行SQL语句,(3)使用JDBC编程的步骤,5.JDBC基础知识与应用,94,DriverManager,Connection,Statement,ResultSet,数据库,创建,创建,创建,建立连接,SQL语句,数据,5.JDBC基础知识与应用,95,java.sql包中的主要类DriverManager作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接驱动加载方法:Class.forName(类名);ConnectionConnectioncon=DriverManager.getConnection(Stringurl,Stringuser,Stringpassword);url-jdbc:subprotocol:subname,5.JDBC基础知识与应用,96,StatementTheobjectusedforexecutingastaticSQLstatementandreturningtheresultsitproducesResultSetAtableofdatarepresentingadatabaseresultset,whichisusuallygeneratedbyexecutingastatementthatqueriesthedatabase,5.JDBC基础知识与应用,97,加载驱动程序Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();获取数据库连接Connectioncon=DriverManager.getConnection(“jdbc:odbc:studs”,“userID”,“Password”);创建一个数据库声明Statementstmt=con.createStatement();执行SQL语句ResultSetrs=stmt.executeQuery(“select*fromstutable”);,5.JDBC基础知识与应用,98,ResultSet类移动next()、previous()、first()、last()取字段值ObjectgetObject(“字段名”)getInt(“字段名”),getFloat(“字段名”),getString(“字段名”),getDate(“字段名”),,5.JDBC基础知识与应用,99,5.JDBC基础知识与应用实例,实例访问数据库,取出所有数据,并显示出所有记录的某字段值例如,显示出用户表的所有用户姓名利用PreparedStatement联系访问指定用户,取出密码提示注意相应数据库的JDBC驱动是否配置好注意数据库连接串的基本语法本例的SQL语句没有参数,如果有参数怎么办?数据访问相关的Java语句必须放在trycatch中,异常处理本例无需编写Web程序,只需编写一个带main函数的Java类即可,将结果写在控制台上即可,100,简单实验代码,5.JDBC基础知识与应用实例,101,5.JDBC基础知识与应用实例,利用PreparedStatement联系访问指定用户,取出密码,102,5.JDBC基础知识与应用实例,实例利用Servlet实现带数据库的登录将MySQL的JDBC驱动jar包文件放入web-inf目录下的lib目录下(1)直接在Servlet中访问数据库(2)创建UserDAO类,构建isCheck()方法,在该方法中访问数据库并验证用户,103,5.JDBC基础知识与应用,104,5.JDBC基础知识与应用实例,实例-Web电子相册项目的数据库设计E-R实体联系图注意主键和外键,105,5.JDBC基础知识与应用实例,106,5.JDBC基础知识与应用实例,物理模型,107,5.JDBC基础知识与应用任务,任务4带数据库的登录程序Web电子相册数据库E-R模型设计并在MySQL上构造物理数据表重构Web电子相册管理员登录功能(带数据库支持),在Servlet中直接访问数据库然后,将访问User表的程序放入单独的类提示在Eclipse中加入mySQL数据库驱动,108,6.JavaBean与DAO模式,109,JavaBean与DAO,JavaBean一个特殊的Java类没有任何公共变量变量名首字母必须小写,例如name通过getter/setter方法来读/写变量的值,例如getName()实现serializable接口将对象的状态保存在存储媒体中以便可以在以后重新创建出完全相同的副本;按值将对象从一个应用程序域发送至另一个应用程序域用途:主要用于在页面之间传递一个被封装的数据对象,110,例子:User类,111,JavaBean与DAO,JavaBean的范围Page:该JavaBean只能在实例化它的页面中使用,这种JavaBean被存储在PageContext对象中Request:使用jsp:include、jsp:forward、RequestDispatcher的include()或forward()方法时,两个JSP页面或者Servlet页面之间共享这个JavaBean,该JavaBean实例被存储在ServletRequest对象中Session:这种JavaBean实例被存储在HttpSession对象中,该JavaBean实例会在整个会话过程中存在。Application:这种JavaBean实例存储到ServletContext中,该JavaBean可以被运行在应用服务器的相同生命周期中的任何对象(JSP或Servlet)调用。,112,JavaBean与DAO,DAO模式DataAccessObject用来抽象和封装所有对数据源的访问完全隐藏了数据源的实现细节当底层数据源实现发生变化时,只要DAO对象向客户提供的接口不变,就不会影响到客户程序,113,JavaBean与DAO,UserDAO类的结构,114,JavaBean与DAO,部分,115,JavaBean与DAO,数据库操作独立出来,116,JavaBean与DAO,117,JavaBean与DAO,将数据库访问连接参数放入config包中的perties文件,perties文件,118,JavaBean与DAO,Bean的使用,119,JavaBean与DAO,任务5分层架构的带数据库的登录程序构建User类构建UserDAO类,在该类中构造isCheck(Useruser)方法在Servlet中接收登录界面提交的用户名和密码,构造User对象,构造UserDAO对象,调用isCheck方法,120,JavaBean与DAO,完成登录工作的设计类,121,JavaBean与DAO,成功登录的顺序图,122,JavaBean与DAO,login.jsp,123,JavaBean与DAO,UserServlet类(/UserManager)-doPost方法登录部分关键代码,124,JavaBean与DAO,UserBiz类-isChecked()方法,125,JavaBean与DAO,UserDAO类-isChecked()方法,126,JavaBean与DAO,dao包和pojo包,127,7.JSP原理及应用,128,JSP(JavaServerPages)(1)基于JavaServlet技术(2)页面包括静态HTMLJSP标记脚本,129,JSP特点内容的生成和显示分离(JavaBeans)生成可重用的组件(JavaBeans)采用标记简化页面开发能提供所有Servlets功能健壮的存储管理和安全性一次编写,随处运行JSP的平台适应性更广利用JDBC连接数据库,130,JSP实现原理客户对JSP的请求直接发送给JSP引擎JSP引擎接受到请求后,按照JSP源代码所规定的内容生成给客户端的响应把响应传递给客户端的浏览器,131,JSP与ServletJSP文档在后台会自动转换为ServletJSP更简捷,适合于生成大量的HTML,但与HTML标记混在一起Servlet适合于生成大量的二进制数据、访问数据库等工作,用它生成大量的html会很麻烦JSP与Servlet配合使用,132,jsp,133,JSP程序的基本结构,JSP页面,Elements,JSPComments,TemplateData,Directives,Actions,Scripting,delarations,Scriptlets,expressions,134,JSPComments(注释)第一种在结果html文档中显示第二种不在结果html文档中显示,TemplateData是不经过转换的文本一般是标准的HTML元素,135,Declarations(声明)在JSP程序中声明方法和全局变量形式可以一次声明多个变量和方法以分号结尾,136,Scriplet(小脚本)包含一个有效的程序段Java代码段例如:,137,Expression(表达式)表示一个值在页面动态生成时以字符串的形式插入到页面中的相应位置。形式例如:,138,Directives(指令)影响由JSP页产生的Servlet的总体结构语法指令page指令属性:import,contentType,language,pageEncodinginclude指令(在转换为servlet前插入)属性:file作用:把其他的文件加入到当前的JSP文件中,例子:test.jsp,test-include.jsp,139,Actions(动作)jsp:include-在页面被请求时包含进一个文件。jsp:forward-让请求者可以向前到一个新的页面。jsp:useBean-找到或实例化一个JavaBean。jsp:setProperty-设置一个JavaBean属性。jsp:getProperty-将JavaBean的属性插入到输出。jsp:plugin执行一个Applet或Bean用OBJECT或EMBED标签为Javaplugins生成特定的浏览器的代码,140,include指令与include动作区别include指令:当被包含的文件内容发生变化时,服务器可能监测不到,此时服务器不会对它进行重新转换和编译.Include动作:在客户端对JSP文件发出请求的时候将对应包含文件的输出内容包含进来。它总是会检查被包含文件的变化。,141,Haveaniceday!Havealousyday!经过转译后将会是如下形式:if(Math.random()niceday!);elseout.println(Havealousyday!);,JSP被编译为Servlet,142,JSP内建对象requestresponseoutsessionpageContextapplicationconfigpage,143,request获取请求的头部信息getHeader(Stringname);获取客户端传送的数据getParameter(Stringname);获取客户端host/IP获取服务器名字,144,response用于向客户端发送数据addCookie(Cookiecook);setHeader(Stringname,Stringvalue);sendRedirect(“”);,out用来向客户端输出数据out.print();out.println();,145,session用来保存每一个用户信息getAttribute(Stringname);setAttribute(Stringname,java.lang.Objectvalue)removeAttribute(Stringname);,application用来在多个程序中保存信息每个用户都共用同一个application对象getAttribute(Stringname);setAttribute(Stringname,java.lang.Objectvalue),146,pageContext管理JSP中已经命名对象的访问config用来配置处理JSP程序的句柄Page,147,实例构造管理端界面利用include动作包含界面的上面头部和下面尾部,148,构造后台管理界面(admin.jsp),头部Top.jsp,尾部foot.jsp,导航条navibar.jsp,149,admin.jsp,150,top.jspfoot.jsp,151,navibar.jsp,152,实例构造修改用户密码功能,153,admin.jsp表现,154,modifyPass.jsp表现,155,modifyPass.jsp代码,提交给对应的servlet并标明要做什么,利用session对象取出user对象中的name属性,156,result.jsp,用于显示反馈结果,由Servlet中设置msg的值,157,UserServlet(/UserManager)-doPost()方法,158,UserBiz类-updatePassWord()方法,159,UserDAO类-updatePassWord()方法,160,任务6(1)利用JSP构造后台管理页面,利用jsp:include包括顶部页面top.jsp、navibar.jsp、底部页面foot.jsp、(2)利用Servlet、JSP、JavaBean实现多层结构下的“添加分类”功能,161,8.分层架构与MVC,162,Model1,163,Model2-MVC,模型:封装了应用程序的数据结构和事务逻辑视图:模型的外在表现控制器:对用户的输入进行相应处理并将模型和视图联系在一起。,164,分层,165,修改密码(ModifyPass.jsp),Form,提交给相应的Servlet,View,166,在UserServlet中撰写相应的处理代码,control,167,添加分类(Class_add.jsp),Form,View,提交给相应的Servlet,168,在ClassServlet中撰写相应的处理代码,control,169,9.EL与JSTL,170,9.EL与JSTL,EL(ExpressionLanguage)JSP2.0后增加的重要功能,要求Tomcat5.0以上访问存储对象对JavaBean简化访问对集合的简化访问简单运算符条件输出$varName,171,9.EL与JSTL,$varName以此从PageContext、HttpServletRequest、HttpSession、ServletContext中查找名字为varName的属性所对应的值$firstVar$secondVar$thirdVar,EL作用域,172,9.EL与JSTL,EL访问JavaBean$beanName.beanVar例如:在Servlet中request.setAttribute(“bookBean”,book)在jsp中$bookBean.publisher.publisherName,173,9.EL与JSTL,EL访问集合$collectionindex例如$,其中studnets是student对象的数组EL运算略,174,9.EL与JSTL,JSTL(JavaServerPagesStandardTagLibrary)JSP标准标签库提供Web开发人员通用的标签库函数,用于取代在JSP页面上直接写Java代码的做法标签库c:核心标签库fmt:I18N标签库sql:SQL标签库xml:XML标签库fn:函数标签库,175,9.EL与JSTL,在JSP中显示数据在JSP中定义变量并赋值用于移除指定范围内的某个变量用于捕获被嵌套在其中的操作的异常对象,176,9.EL与JSTL,完成if功能3”,var=“result”.完成ifelse功能,177,9.EL与JSTL,标签其他标签库略,178,9.EL与JSTL实例,实例利用EL和JSTL构建表格显示所有分类Jsp页面,179,9.EL与JSTL实例,pojo包的PhotoClass类,180,9.EL与JSTL实例,PhotoClassDAO,181,9.EL与JSTL实例,PhotoClassBiz,182,9.EL与JSTL实例,PhotoClassServlet(/ClassManager),传递bean集合给,183,9.EL与JSTL任务,任务7实现Web电子相册“图片分类管理”功能首先列出分类信息可以进行删除和修改,184,9.EL与JSTL任务,185,10.实用技术,186,10.实用技术文件上传,使用jspsmart组件完成上传工作将对应的jar文件放入web-inf/lib目录下步骤编写上传界面编写后台处理程序,187,10.实用技术文件上传,图片上传简单例子通过jspSmartUpload上传图片,188,10.实用技术文件上传,上传处理文件,189,任务8(1)实现Web电子相册中的“图片上传”功能(2)实现Web电子相册中的“图片管理”功能,190,10.实用技术文件上传1-先上传再增加图片,图片添加界面photo_add.jsp,图片上传界面upload.jsp,upimg.jsp,191,10.实用技术文件上传1,将图片地址传回图片添加界面,192,10.实用技术文件上传1,图片上传界面upload.jsp中的主要代码,193,10.实用技术文件上传1,后台处理程序upimg.jsp中的主要代码(使用jspSmartUpload),194,10.实用技术文件上传2-上传与增加图片信息一起进行,使用commons-fileupload类,选择文件,文件并未上传,图片信息与上传一同进行,图片添加界面photo_add1.jsp,195,10.实用技术文件上传2-上传与增加图片信息一起进行,需要两个jar包支持,196,10.实用技术文件上传2-上传与增加图片信息一起进行,PhotoServelt(PhotoManager),197,10.实用技术文件上传2-上传与增加图片信息一起进行,PhotoServelt(PhotoManager),198,任务9图片管理首先显示图片分类(相册)然后选择一个分类的图片进行管理可以对图片进行删除和描述信息的编辑,199,10.实用技术中文乱码问题,字符编码ASCII128个字符,面向使用英语的国家ISO-8859解决欧洲个国家的字符编码问题GB2312、GBK、GB18030汉字编码Unicode使用双字节表达每个字符的编码,统一全球编码UTF-8变长的编码,对不同的Unicode可能采用不同的长度,从而减少存储或传输的数据量,200,10.实用技术中文乱码问题,乱码原因在JSP中pageEncoding是指JSP文件自身的编码格式contentType的charset是指服务器发送给客户端的内容编码如果pageEncoding存在,那么JSP页面的字符编码由pageEncoding决定,否则由contentType的charset决定,如果都不存在,则默认为ISO-8859-1在Web应用中,浏览器、Web服务器、Web应用程序和数据库等各个部分都有可能使用不同的字符集,字符在不同字符集之间进行转换时,就可能出现乱码问题,201,10.实用技术中文乱码问题,解决方案使用过滤器解决比较方便过滤器当客户请求某个html/JSP/Servlet之前,过滤器先“过滤”;或者当服务器对客户端进行响应之前,过滤器先“过滤”从一个页面跳转(forward)到其他页面的时候在包含(include)其他内容时在发生错误时作用对HttpServletRequest进行预处理,对HttpServletResponse进行后处理,202,10.实用技术中文乱码问题,创建一个过滤器的两个步骤:创建Filter处理类在Web.xml文件中配置Filter过滤器必须实现javax.servlet.Filter接口,接口3方法voidinit(FilterConfigconfig),初始化voiddestroy()销毁前voiddoFilter(ServletRequestRequest,ServletResponseresponse,FilterChainchain)实现过滤功能,203,10.实用技术中文乱码问题,web.xml,204,10.实用技术登录检测,登录检测防止用户在不登录的情况下,直接进入管理页面使用过滤器实现,205,10.实用技术登录检测,web.xml,206,10.实用技术分页显示,分页显示的策略基于缓存:一次性地将所有的记录取出来放到session中。优点:除第一页外,后续的页面都能够很快的访问到所需数据缺点:第一页显示可能很慢;如果用户多时,内存开销大基于查询:根据需要从数据中取数据优点:第一个页面和后续页面访问时间差不多缺点:每次都要从数据库中读取数据,频繁地访问数据库,207,10.实用技术分页显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论