• 1. 第十二章 JSP编程基础卓越时代
  • 2. 标签如何使用? 如何配置JSP开发环境? JSP程序的基本架构包括哪些内容? request作用是什么? 什么是会话? include指令如何使用?预习检查
  • 3. 什么是HTMLHTML:Hyper Text Markup Language 超文本标签语言 HTML:网页的“源码” 浏览器:“解释和执行”HTML源码的工具 HTML告知浏览器如何显示网页
  • 4. HTML文档的基本结构HTML文档的结构 我的第一个网页 Hello World! HTML 网页头部部分主体部分…标签标记 HTML 文档的开始和结束网页标题网页内容,可以是文本、图像等这部分包括标题和其他说明信息,包括在 … 标签内这部分包含文本、图像和链接,它包括在 … 标签内
  • 5. 标签网页摘要信息利于浏览器解析和搜索引擎搜索: 使用<title>标签 <head> <title>搜狐-中国最大的门户网站
  • 6. 标签 使用标签 (1)描述文档类型和字符编码 (2)描述搜索关键字和描述提供搜索关键字和内容描述信息,方便搜索引擎的搜索
  • 7. 标签

    BODY中的文字,

    将会显示成绿色。 控制HTML文档的正文文字颜色控引入HTML文档 的背景图片控制HTML文档 的背景颜色

    BODY中的文字,

    将会显示成绿色。
  • 8. 标签 文字 文字的字体文字的颜色文字的大小标记对用来控制文字显示为粗体(Bold)标记对用来控制文字显示为斜体(Italics)标记用来控制文字的下划线
  • 9. 标题字体标题标签 ……

    一级标题

    二级标题

    三级标题

    四级标题

    五级标题
    六级标题
    ……h1最大 h6最小 前后隔行

    标题

    ……
    标题
  • 10. 标签图像标签 …… 精品热卖:高清晰,30寸等离子电视 ……提示文字为了不同浏览器之间的兼容,推荐使用title属性 ,确保能显示提示文字
  • 11. 超链接 超链接---实现页面间的导航链接文本或图像链接地址(目标)
  • 12. 标签…… 灿坤蒸气电熨斗 ……链接在新窗口中打开 链接热点文本或图像
  • 13. 标签…… 上级目录 上上级目录 ……相对地址:相对于当前目录的地址,常用 绝对地址:指向目标地址的完整描述 ,少用 上级目录:../ 上上级目录:../../登录 搜狐登录
  • 14. 标签…… [免费注册] [登录] ……页面间链接 锚链接 功能性链接 常用于网站导航相对路径
  • 15. 标签实现锚链接 1、定义标记(锚): 目标位置 2、设置链接到标记位置:当前位置 …… [明星专区] …… 明显专区内容 ……定义标记设置链接到标记位置A.页面内的锚链接适用于页面内容较多,超过一屏的场合
  • 16. 标签实现锚链接……标记所在页…. [明星专区] ……B.页面间的锚链接……链接页…. 明星体验:明星专区 ……
  • 17. 标签功能性链接 邮箱、QQ链接等 …… 站长信箱 ……
  • 18. 列表标记有序列表标签 ……

    注册步骤:

    1. 填写信息
    2. 收电子邮件
    3. 注册成功
    ……有序列表
    1. 列表项1
    2. … …
  • 19. 列表标记无序列表标签

    新人上路指南

    • 如何激活会员名?
    • 如何注册贵美会员?
    • 注册时密码设置有什么要求?
    • 贵美认证
    无序列表
    • 列表项1
    • ……
  • 20. 表格定义标记表格 ……
    百度 新浪
    --表格 --行
    --列(单元格)
  • 21. 为什么使用表单 表单的典型应用 用户登录/注册收集用户反馈信息提供搜索工具
  • 22. 常见的表单元素单行文本框(text)单选按钮(radio)复选框(checkbox)下拉列表(select)重置按钮 (reset)提交按钮(submit)密码框(password)文本域(textarea)
  • 23. 表单的基本语法
    … 文本框、按钮等表单元素…
    指定提交后,由服务器上哪个处理程序处理指定向服务器提交的方法: 一般为post或get方法, post方法比较安全
  • 24. ……

    用户名:

    密  码:

      

    ……表单提交地址和方法的设置表单的基本语法
  • 25. 表单的执行原理表单的典型应用:假定登录 126 邮箱 Internet12客户端:请求登录,通过表单填写账户信息服务器端:验证发来的账号信息,然后给出反馈客户端和服务器类似两人沟通一样,从而建立交互活动
  • 26. 表单元素的基本格式指定元素的类型,可为text、radio、submit等控件的名称控件的初始值控件的初始宽度控件中输入的最多字符个数控件是否被选中checked
  • 27. 密码框 密码框

    密  码:

    ……
    隐藏输入的信息
  • 28. 文本框文本框

    用户名:

    ……
    单行文本输入框,字符宽度为21name用于服务器端获取数据,例如:request.getParameter("userName ")
  • 29. 文本域文本域 ......

    阅读协议 阅读贵美网服务协议

    ……
  • 30. 下拉列表 列表框 ...... ……提供固定选项,避免用户输入错误
  • 31. 单选框 单选框 ......
    性别: ……特点:单选名字name相同表明属于同一组
  • 32. 复选框 复选框 …… 爱好: 运动   聊天   玩游戏 ……特点:多选
  • 33. 按钮...... ……普通按钮:button 提交按钮:submit 重置(清空)按钮:reset 图片按钮:image
  • 34. 隐藏域 隐藏域 方便服务器端“记住”客户端的信息、但又不希望客户看到的数据 ...... ……隐藏的客户代号信息:666,但客户端页面不显示 隐藏域:既方便服务器端“记住”客户端的数据,又避免因显示浏览者不关心的数据导致用户反感
  • 35. 文件上传组件 文件域 ......


    ……显示上传文件的地址
  • 36. Tomcat服务器简介Tomcat服务器 Apache Jakarta的开源项目 JSP/Servlet容器
  • 37. Tomcat服务器应用启动和停止Tomcat服务器 方式一:通过“程序”  “管理工具”  “服务”  鼠标右击“Apache Tomcat”  选择“启动”或者“停止”操作 方式二:通过“程序”  “Apache Tomcat XX”  “Monitor Tomcat”  鼠标右击窗口右下角的Tomcat图标选择“Start Service”或者“Stop Service” Tomcat服务启动检测 在IE地址栏中输入:http://localhost:端口号,页面进入到Tomcat启动成功界面
  • 38. Tomcat的目录结构Tomcat服务器的目录结构 目录 说 明/bin存放Windows或Linux平台上用于启动和停止Tomcat的脚本文件/conf存放Tomcat服务器的各种配置文件,其中最重要的是server.xml/server/lib存放Tomcat服务器所需的各种JAR文件/server/webapps存放Tomcat自带的两个Web应用:admin应用程序和manager应用程序/commom/lib存放Tomcat服务器以及所有Web应用都可以访问的JAR文件/workTomcat把由JSP生成的Servlet放于此目录下/webapps当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中
  • 39. Tomcat的端口配置通过配置文件修改Tomcat端口号 Tomcat端口号默认使用的是8080端口 可以通过server.xml文件修改Tomcat的端口号 http://localhost:8080/...http://localhost:6060/...
  • 40. 建立应用目录(1)在Tomcat下的webapps目录下创建自己的程序目录;例:frist (2)在first下创建目录WEB-INF,注意大小写; (3)在WEB-INF下创建目录classes和文件web.xml。classes用于存放Servlet类文件、Java Bean类文件以及其他的相关类文件等。 index.JSP 假定在web应用(news)下存在一个index.jsp页面, 输入http://localhost:8080/news地址时,web容器会默认调用index.jsp页面
  • 41. 为什么需要JSP为什么需要的动态网页? 使用动态网页,可以动态输出网页内容、同用户进行交互、对网页内容进行在线更新 应用 服务器IEIE解释执行 HTML文件从服务器端检索到的信息返回响应客户端的请求信息发送请求访问数据库返回结果 运行JSP等 服务器端程序1用户输入 234数据库 服务器
  • 42. 什么是JSPJSP (Java Server Pages)是指: 在HTML中嵌入Java脚本代码 由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码 然后将生成的整个页面信息返回给客户端 JSP页面 数据库 服务器应用 服务器编译、执行客户端嵌入Java脚本1234返回页面信息
  • 43. 设计目录结构 存放Java源文件Web应用的顶层目录系统自动生成,存放系统描述信息Web应用所需的.Jar或者.zip文件web应用的初始化配置文件页面中生成动态的内容该目录下存放的文件无法对外公布
  • 44. 编写JSP代码<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=GBK"%> 第一个JSP程序 现在时间是:<%=new java.util.Date()%>
  • 45. JSP 页面组成JSP 页面的元素包括: 静态内容 指 令 表达式 小脚本 <% Java 代码 %><%=Java表达式 %>HTML静态文本以“<%@ ” 开始,以“%> ” 结束。 比如:<%@ include file = " Filename" %> 声 明 <%! 方法 %> 注释 <%-- 这也是注释,但客户端不能查看到 --%>
  • 46. JSP中的注释合理、详细的注释有利于代码后期的维护和阅读 在JSP文件的编写过程中,共有三种注释方法: 发送到客户端的注释: 不发送到客户端的注释:<%-- 注释--%> 在JSP脚本中注释: <% //单行注释 %> <% /*多行注释 */ %> 缺点:不安全,加大网络传输负担
  • 47. 小脚本与表达式<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=GBK" %> 计算求和 两个数的求和结果为: <% int numA = 4, numB = 5 ; int result = numA+numB; %> <%=strCurrentTime %> 指令小脚本表达式在JSP页面中计算两个数的和,将结果输出显示 表达式只能单独出现 必须能够转换成字符串形式
  • 48. JSP 声明声明就是在JSP页面中定义Java的变量和方法 语法:<%! Java代码%> <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%! String formatDate(Date d){ SimpleDateFormat formater = new SimpleDateFormat("yyyy年MM月dd日"); retrun formater.format(d); } %> 你好,今天是 <%=formatDate(new Date()) %> 方法声明后可在页面中多处调用
  • 49. JSP执行过程3执行2翻译编译1请求响应Web容器处理JSP文件请求需要经过3个阶段: 翻译阶段 编译阶段 执行阶段应用服务器客户端JSP文件.java.class
  • 50. JSP执行过程执行第二次请求响应第一次请求之后,Web容器可以重用已经编译好的字节码文件应用服务器客户端.class注意:如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译
  • 51. 什么是JSP内置对象JSP内置对象是 Web 容器创建的一组对象 JSP内置对象的名称是JSP 的关键字 JSP内置对象是可以直接在JSP页面使用的对象,无需使用“new”获取实例 <% request.setCharacterEncoding("GBK"); String titleName = request.getParameter("titlename"); %>没有出现new关键字,但却可以使用request对象
  • 52. JSP内置对象常用的JSP内置对象 隐式对象输入/输出对象作用域通信对象Servlet 对象错误对象requestresponseoutsessionpageContextapplicationpageconfigexception
  • 53. JSP内置对象outout对象常用方法 方法名称 说 明out.print()输出数据out.newLine()输出一个换行符 out.close()关闭输出流out.clearBuffer()清除缓冲区里的数据,并把数据输出到客户端 out.clear()清除缓冲区里的数据,但不会把数据输出到客户端out.getBufferSize()获得缓冲区大小out.getRemaining()获得缓冲区中没有被占用的空间大小
  • 54. JSP内置对象out<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> out对象的使用 <% out.print("您好!"); out.newLine(); out.print("缓冲区大小是:"+out.getBufferSize()); out.print("缓冲区中没有被占用的空间大小是:"+out.getRemaining()); %>
  • 55. JSP内置对象requestrequest对象主要用于处理客户端请求request 对象客户端 请求请求信息
  • 56. request对象常用方法 方法名称 说 明String getParameter(String name)根据页面表单组件名称获取页面提交数据String[ ] getParameterValues(String name)获取一个页面表单组件对应多个值时的用户的请求数据 void setCharacterEncoding(String charset)指定每个请求的编码,在调用getParameter( )之前进行设定,可以解决中文乱码问题String getRemoterAddr()返回提交请求的客户机的IP地址JSP内置对象request
  • 57. JSP内置对象request编程实现安卓越学员的注册功能 注册信息包括:用户名、密码、你从哪里知道安卓越 页面提交后,显示学员输入的数据12
  • 58. JSP内置对象request
    用户名
    密码
    你从哪里知道安卓越 报刊 网络 朋友推荐 电视
    学员注册页面
  • 59. JSP内置对象request<% //读取用户名和密码 String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); …HTML页面代码… //读取复选框选择项 String[] channels = request.getParameterValues("channel"); if (channels != null) { for (int i = 0; i < channels.length; i++) { out.println(channels[i]); } } %>信息读取显示页面为什么我们输入的中文都是乱码显示?
  • 60. 在进行页面开发时,存在多种字符集编码设置,我们只需要在页面设置支持中文字符的字符集就可以了<% ----以GET方式提交数据时---- //读取用户名和密码 String name = request.getParameter("name"); //对请求数据进行字符编码 name = new String(name.getBytes("ISO-8859-1"), "GBK"); %><% ----以POST方式提交数据时---- //设置读取请求信息的字符编码为GBK或者GB2312 request.setCharacterEncoding("GBK"); //读取用户名和密码 String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); %>JSP内置对象request
  • 61. JSP内置对象responseresponse对象用于响应客户请求并向客户端输出信息 response 对象常用方法 void sendRedirect (String location):将请求重新定位到一个不同的URL,即页面重定向 response 对象客户端响应从服务器中检索的信息存储信息,以在响应客户端请求时发送此信息
  • 62. JSP内置对象response
    用户名: 密码: 根据业务逻辑实现页面跳转input.jsp客户端重新建立链接<% request.setCharacterEncoding("GBK"); String name = request.getParameter("userName"); String pwd = request.getParameter("pwd"); if(name.equals("sa") && pwd.equals("sa")) response.sendRedirect("welcome.jsp"); %>跳转至欢迎页面control.jsp
  • 63. 页面的转发转发的作用:在多个页面交互过程中实现请求数据的共享 转发的实现: RequestDispatcher对象 forward()方法 <% RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp"); rd.forward(request,response); %>将当前接收的用户请求,发送给服务器的其他资源使用
  • 64. 转发与重定向的比较转发是在服务器端发挥作用,通过forward方法将提交信息在多个页面间进行传递。 转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会显示出转向后的地址 重定向是在客户端发挥作用,通过请求新的地址实现页面转向 重定向是通过浏览器重新请求地址,在地址栏中可以显示转向后的地址
  • 65. 生活中的访问控制下载电子书时,系统会提示用户登录网站 点击下载, 系统转入登录页面 每次下载之前,系统如何判断用户是否已经登录?
  • 66. 如何实现访问控制系统如何保存不同用户的登录信息?使用JSP会话跟踪机制,可以维持每个用户的会话信息,也就是为不同的用户保存不同的数据 12用户登录进入用户注册页面系统保存该用户的登录信息进入欲访问的页面是否是注册用户否是用户直接访问某个页面进入用户登录页面显示该页面内容系统是否保存了该用户登录信息否是访问流程控制分析
  • 67. 什么是会话浏览器关闭,本次会话结束一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程 浏览器session对象请求 1浏览器请求 2…nsession是JSP内置对象,与浏览器一一对应,允许用户存储和提取会话状态的信息响应 1响应 2…nsession对象
  • 68. JSP内置对象sessionsession对象用来存储有关用户会话的所有信息 session对象常用方法:类型方法名称说 明voidsetAttribute(String key,Object value)以key/value的形式保存对象值ObjectgetAttribute(String key)通过key获取对象值 intgetMaxInactiveInterval()获取session的有效非活动时间,以秒为单位StringgetId()获取session对象的编号voidinvalidate()设置session对象失效
  • 69. session与窗口的关系一个session对应一个窗口,那么通过超链接打开的窗口是否也是新的session呢?每个session对象都与浏览器一一对应 重新开启一个浏览器,相当于重新创建一个session对象重新开启一个IE窗口,直接访问系统首页面 通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
  • 70. session实现访问控制在新闻发布系统中,增加访问控制功能,具体要求如下: 提供用户登录功能 管理员有权对新闻实现增删改的操作登录处理页面 1、获得登录信息 2、查询数据库,判断该用户是否注册 3、如果该用户已注册,在session中保存该用户的登录信息 4、如果用户时管理员就跳转到管理员界面;否则跳转到新闻发布系统的首页面管理员界面 1、从session中提取该用户信息 2、如果用户信息存在,显示管理员界面内容 4、如果用户信息不存在,跳转到登录页面用户已注册session中无法 提取到用户信息123
  • 71. 在控制页面获取用户请求的登录信息进行验证------登录处理页面的代码片断------ <% if (rs.next()) { //如果是已注册用户 session.setAttribute("LOGINED_USER", loginedUser); response.sendRedirect("index.jsp"); } else { response.sendRedirect("login.html"); } %>在session中存放用户登录信息session实现访问控制
  • 72. session实现访问控制 在新闻发布系统新闻发布页面增加登录验证<% User user = (User) session.getAttribute("LOGINED_USER"); if (user == null) { response.sendRedirect("login.jsp"); } %>如果session中不存在该用户的登录信息,转入登录页面
  • 73. session实现访问控制访问控制效果验证,步骤如下: 直接在IE地址栏中输入URL,访问系统首页面通过登录页面进入系统首页面重新开启一个IE窗口,直接访问系统首页面
  • 74. include指令除了首页面,其它页面中同样需要加入登录验证,有没有办法避免冗余代码的出现?可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件,从而降低代码的冗余问题,也便于修改共性内容
  • 75. 创建登录验证文件 loginControl.jsp 在后台首页面中使用include指令引用登录验证文件<%@ page import="org.jbit.bean.User"%> <% User user = (User) session.getAttribute("LOGINED_USER"); if (user == null) { response.sendRedirect("login.html"); } %><%@ include file="loginControl.jsp" %>include指令
  • 76. include动作 被包含的页面发生更改时,无须对主页面做出修改
  • 77. JSP内置对象applicationapplication类似于系统的“全局变量”,用于实现用户之间的数据共享 application对象的常用方法: void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中 Object getAttribute(String key):根据键去获取application中存放对象的值application.setAttribute("LOGINED_USER", new ArrayList());if (application.getAttribute("LOGINED_USER") != null) { List loginedUsers = (List) application.getAttribute("LOGINED_USER"); }
  • 78. JSP内置对象applicationapplication是JSP内置对象 实现服务内数据的共享 在服务内值存在一个对象实例 application对象的常用方法类型方法名称说 明voidsetAttribute(String key,Object value)以key/value的形式保存对象值ObjectgetAttribute(String key)通过key获取对象值 StringgetRealPath(String path)返回相对路径的真实路径
  • 79. 中包含哪些标签主要作用是什么? 如何配置JSP开发环境? 如何编写简单的JSP应用程序? JSP程序的基本架构包括哪些内容? 如何利用JSP内置对象处理客户端请求? 如何实现JSP页面访问控制?总结
  • 80. 谢谢浏览