javaweb应用开发任务教程

张开发
2026/4/10 8:31:24 15 分钟阅读

分享文章

javaweb应用开发任务教程
请求参数HttpServletRequest 接口提供了多种方法来获取 HTTP 请求中的参数。这些参数通常是通过 GET 请求的查询字符串或 POST 请求的表单数据传递的。今天主要讲getParameter(String name)、getParameterValues(String name)1StringgetParameter(String name) 获取某个指定名称的参数值2String【】getParameterValues(String name)获取某个指定名称的参数值 根据参数名获取请求中该参数的值返回一个字符串数组。当参数在请求中出现了多次例如表单中的复选框时这个方法特别有用。如果参数不存在则返回一个 数组。具体怎么使用请看如下在 src/main/webapp 目录下新建一个 info.html 页面提供用户输入数据的功能代码如下代码通过form表单进行数据提交action属性为servlet配置的映射地址,提交方式为GET。表单通过文本框让用户输入姓名数据和年龄数据通过复选框让用户选择爱好数据。效果图然后在src/main/java目录下新建一个包com.example.unit3_18,包中新建infoServlet类继承HttpServelet类用来获取用户提奖参数具体代码如下在 doGet() 方法中通过请求对象 req 的 getParameter() 方法获取了表单提交的姓名和年龄通过请求对象 req 的 getParameterValues() 方法获取了批量数据。部署运行项目并在浏览器中访问页面info.html输入个人信息并提交后台就会看到这些数据设置请求转发设置属性与请求转发请求转发是 Servlet 之间共享请求的一种机制。在 Servlet 中可以使用 RequestDispatcher 对象的 forward() 方法来实现请求转发。在此过程中还可以使用请求对象的 setAttribute() 方法来设置属性以保存需要传递的数据。下面给出示例程序本人本次则继上边操作继续在 com.example.unit3_18 包包中新建一个 ServletReq1类继承 HttpServlet 类在其中设置属性并进行请求转发代码如下。在重写的 doGet() 方法中先通过请求对象 req 的 setAttribute() 方法保存了phone 电话信息再通过请求对象 req 的 getRequestDispatcher() 方法获取了 RequestDispatcher 对象方法的参数为转发的路径直接调用 RequestDispatcher 对象的 forward() 方法实现了请求转发。在包中再新建一个 ServletReq2 类继承 HttpServlet 类获取请求中的属性并输出代码如下。代码重写了 doGet() 方法该方法通过请求对象 req 的 getAttribute() 方法获取之前保存的值并通过 out 对象输入页面进行显示。setContentType() 到底做了什么resp.setContentType(text/html;charsetUTF-8) 是 Servlet 中设置 HTTP 响应头的核心方法它告诉浏览器两件关键信息1. 内容类型MIME 类型 text/html- 告诉浏览器“我返回的是 HTML 格式的网页请按网页的方式解析渲染而不是当成纯文本、图片或文件下载”。- 如果写成 text/plain 浏览器会把内容当成普通文本展示不会解析 h1 等 HTML 标签。2. 字符编码 charsetUTF-8- 告诉浏览器“我用 UTF-8 编码 来表示文字请用 UTF-8 解码显示”。- 如果不指定浏览器可能会用默认编码比如 GBK、ISO-8859-1去解析就会出现中文乱码比如“我的电话”变成一堆问号或乱码。二、为什么要这样写- HTTP 协议要求服务器必须在响应头里明确告知客户端「内容是什么」「怎么读」否则浏览器无法正确处理。运行项目在浏览器中访问地址 “req1”即可看到运行结果如图值得注意的是这里的请求转发属于服务器的内部行为用户是没有感知的。因此在 ServletReq1 将请求转发到 ServletReq2 的过程中数据通过请求对象进行了传输显示的内容是 ServletReq2 的内容但浏览器地址栏中的地址没有改变依然是 ServletReq1 的地址。HttpServletResponse对象HttpServletResponse 对象在 Java Servlet 技术中扮演着至关重要的角色它代表了服务器对客户端的 HTTP 响应。当 Web 服务器处理完客户端的请求后会使用 HttpServletResponse 对象来构建响应并发送响应到客户端。HttpServletResponse 对象封装了多种与响应相关的功能这些功能主要包括发送响应数据、设置响应头与状态码、请求重定向等下面分别进行介绍。1发送响应数据本次主要讲PrintWriter getWriter() 获取字符流输出对象本人本次则继上边操作继续在 com.example.unit3_18 包包中新建一个 ServletReq类继承 HttpServlet 类代码如下。请求重定向当用户的请求因某种原因例如URL变更、需要用户认证与授权、接入第三方服务等无法完成时通常可以使用 HttpServletResponse 的 sendRedirect() 方法让用户访问另一个URL地址即所谓的重定向。需要注意的是 sendRedirect() 方法实现的是客户端重定向这意味着它实际上是两次 HTTP 请求第一次是原始请求第二次是浏览器根据重定向指令发起的新请求。因此它与RequestDispatcher 对象的 forward() 方法不同后者是在服务器端实现的请求转发只涉及一次请求。下面通过 sendRedirect() 方法的一个简单示例来熟悉其使用。sendRedirect() 方法示例。本人本次则继上边操作继续在 com.example.unit3_18 包包中新建一个 ServletResq2类继承 HttpServlet 类输出提示信息并重定向到ServletResq3代码如下。新建一个ServletReq3类继承HttpServlet,输出提示信息代码如下部署运行项目在浏览器中输入 resq2 的地址用户先访问了 ServletResq2然后再访问 ServletResq3。地址栏会显示 ServletResq3的地址页面只显示 “Servlet2”控制台运行结果如图网页效果CookieCookie 是一种客户端会话技术它在客户端通常是浏览器存储一些数据以便在后续的请求中发送给服务器。当服务器响应客户端的请求时它可以通过 Set-Cookie 响应头将 Cookie 信息发送到客户端。客户端在接收到这些 Cookie 后会将其保存在本地并在后续的请求中通过 Cookie 请求头将这些信息发送回服务器。通过这种方式服务器可以在多个请求之间识别同一个客户端的请求并共享相关的会话数据。Cookie 就是网站存在你浏览器里的一张 “小纸条”用来记住你。简单总结Cookie 网站给你的临时小名片作用让网站认得你不用每次都重新介绍自己放到上网里你第一次登录某网站网站说“记住我”然后在你浏览器存一个 Cookie下次再打开这个网站浏览器自动把 Cookie 发给网站网站一看哦是你不用再输账号密码了Cookie 能干啥记住登录状态不用每次都输密码记住你的设置主题、语言、购物车记住你看过什么、点过什么介绍完cookie之后接下来做个“上次访问时间示例”本人本次在example下新建一个package名叫 unit_23,在unit_23下创建一个java类名叫CookieServlet,继承HttpServlet类。此次目的是用来显示用户上次访问时间。如果第一次访问则显示首次访问欢迎信息代码如下部署项目首次访问页面再次刷新页面即可显示上次访问时间如图HttpSession接口Session是一种服务器端会话技术它在服务器端维护用户的会话状态。当用户首次访问服务器时服务器会为其创建一个新的会话并分配一个唯一的会话ID。这个会话ID会通过Cookie或URL重写的方式发送给客户端并在后续的请求中携带回服务器。服务器通过会话ID来识别和管理用户的会话状态并在多个请求之间共享相关的会话数据。Session数据存储在服务器端因此相对于Cookie来说其安全性更高。但是由于Session数据需要占用服务器资源因此在高并发场景中可能会对服务器性能造成一定压力。Session 就是服务器给每个来访用户发的“专属小本本”用来记这个用户的临时信息比如登录状态、购物车服务器靠这个小本本识别“你是你”不用每次都重新认人。拆成3个生活场景场景1去奶茶店点单核心逻辑 1. 你第一次去奶茶店访问网站→ 店员服务器不认识你给你一张**带编号的点单小票Session ID2. 你说“要半糖、少冰”要存的临时数据→ 店员把这些要求**写在小票对应的档案本上**Session 存储数据3. 你后续取餐/加单刷新/跳转页面→ 出示小票浏览器传 Session ID→ 店员看档案本Session立刻知道“你要半糖少冰”不用你重复说。 这里 - 小票编号 Session ID唯一标识 - 档案本 Session服务器存的用户数据 - 你拿小票 浏览器存 Session ID靠 Cookie。场景2为啥关浏览器再进小票就没用了你关浏览器 把小票扔了Cookie 里的 Session ID 被清 再进店 → 没小票 → 店员重新给你一张新小票新 Session ID旧档案本还在店里服务器的旧 Session但没人认领30分钟后店员就扔了Session 超时销毁。场景3为啥刷新页面小票还能用刷新页面 你没扔小票只是催店员快点做 → 小票还在手里 → 店员认得出档案本也还在信息不变。 ### 核心特点新手必记 1. **存在哪里**只在服务器端奶茶店的档案本不在你手里 2. 认人方式靠浏览器里的 Session ID小票编号没这个编号服务器不认 3. 生命周期临时的你关浏览器/长时间不用服务器就删了避免占地方 4. **作用**解决“网页记不住你”的问题比如登录后不用每次都输账号。总结Session 就是服务器给你的临时身份档案靠 Session ID 绑定到你身上能存你的临时信息让网页“认识你”但这个档案只在你本次浏览期间有效关浏览器就失效除非特意设置持久化。了解完Session之后接下来做个“示例”本人本次在example下新建一个package名叫 unit_23,在unit_23下创建两个个java类一个用来存储数据一个用来读取数据名叫SaveServlet, GetServlet 继承HttpServlet类。此次目的是在session对象中存储数据。从session中读取数据代码如下接下来在GetServlet中写代码用来读取session数据在SaveServlet下来部署项目得到存储数据接下来在网址上把SaveServlet 换成getServlet,得到读取的数据ServletContext接口ServletContext 为 Web 应用程序在容器中的上下文。它是 Servlet 中最大的一个接口呈现了 Web 应用的 Servlet 视图为整个 Web 应用程序提供了全局性的信息和服务。每个 Web 应用程序在容器中只有一个 ServletContext 实例它在 Web 应用程序启动时被创建并在 Web 应用程序关闭时被销毁。因此ServletContext 是一个全局 Web 应用程序共享对象所有的 Servlet 都可以访问这个对象并通过它来获取服务器中的全局信息或者设置全局参数。你可以把ServletContext理解成整个 Web 应用的 “大管家”也常被称为 “应用上下文”。存储和共享 “全局数据”整个 Web 应用中所有 Servlet、JSP 都能访问的公共数据都存在这里。比如网站的名称、版本号全网站所有页面都要显示数据库连接池所有 Servlet 处理请求时都要用到数据库连接统计网站的总访问量所有用户的请求都要累计这个数值。本人本次在example下新建一个package名叫 unit_23,在unit_23下创建一个java类名叫ContextServlet。继承HttpServlet类。此次目的是是使用ServletContext统计网站访问次数代码如下部署项目可以刷新页面来增加访问次数ServeltConfig接口ServletConfig 接口是 Java Servlet API 的一部分它提供了用于获取 Servlet 初始化参数的方法。每个 Servlet 都有一个与之关联的 ServletConfig 对象该对象在 Servlet 初始化时由容器创建并传递给 Servlet 的 init() 方法。要使用 ServletConfig开发人员需要在web.xml或注解中为特定 Servlet 定义初始化参数同时实现该特定 Servlet 的 init() 方法并在 init() 方法中通过 ServletConfig 对象获取初始化参数。1. ServletConfig 是什么你可以把ServletConfig理解成单个 Servlet 的「专属配置小本本」。Servlet 是处理 Web 请求的核心程序比如接收用户登录、查询数据的请求ServletConfig就是专门给这一个 Servlet 用的配置对象里面只存这个 Servlet 自己的「私人参数」其他 Servlet 拿不到。2. ServletConfig 能干什么核心用途它的核心作用就是给单个 Servlet 提供专属配置1存 / 取当前 Servlet 的专属参数2获取当前 Servlet 的名称3获取全局上下文ServletContext总结ServletConfig是单个 Servlet 的专属配置对象只服务于当前 Servlet核心作用是存储 / 读取当前 Servlet 的私人初始化参数也能获取 Servlet 名称和全局上下文关键特点参数「专属」不会和其他 Servlet 共用和全局的 ServletContext 形成「单例 vs 全局」的区别。简单记ServletConfig就是给单个 Servlet 「量身定做」的配置工具只管自己的事儿了解完Session之后接下来做个“示例”本人本次在example下新建一个package名叫 unit_23,在unit_23下创建个java类名叫ConfigServlet, 继承HttpServlet类。此次目的是使用ServletConfig配置数据库连接信息代码如下在上面的代码中重写了 init() 方法并在其中将 ServletConfig 对象的引用赋给成员变量。然后在后续代码中依次取出设置好的初始化参数 url 、 username 、 password接下来在web.xml中配置Servlet,并设置相应的初始化参数代码如下部署项目访问MyServlet,即可读取web.xml中的初始化参数JSP技术(1) 什么是 JSPJSP 是由 Sun 公司主导、多家公司共同参与建立的一种动态网页技术标准是基于 Java 的脚本技术。利用 JSP 可以构建跨平台的动态网站应用JSP 是在服务器端带有 JSP 容器的 Web Server如 Tomcat、JBoss、IBM WebSphere、BEA WebLogic 等中运行的。以前的 HTML 是静态的不同客户端访问同一网页得到的都是相同的内容网页中的数据是没有变化的而 JSP 或其他如 ASP、PHP 等动态页面技术按不同条件请求同一个页面可以得到不同的结果如可以在同一页面实现数据库中的数据分页显示也可以在同一页面实现对数据库的查询。客户端请求页面后页面代码会被 Web Server 执行然后将结果返回。由于条件不同Web Server 返回给客户端的数据执行结果也是 HTML当然也不相同。JSP 以 Java 语言为基础可以实现页面表示HTML和业务逻辑Java 程序相分离并能体现 Java 平台的优点。1. 核心流程运行流程浏览器访问 .jsp 文件时服务器Tomcat内部会自动做 4 件事翻译把 index.jsp → 变成 index_jsp.java编译把 index_jsp.java → 变成 index_jsp.class运行执行 class输出 HTML 字符串响应把 HTML 发给浏览器总结JSP 最终就是一个运行在服务器上的 Java 程序JSP 页面的程序片段代码以 % 和 % 作为开始和结束标记标记对 % 和 % 在 JSP 页面中可以多次出现。2 Jsp脚本元素JSP 脚本元素是指嵌套在 % 和 % 之间的一条和多条Java 程序代码。通过 JSP 脚本元素可以将 Java 代码嵌入 HTML 页面中所有可执行的 Java 代码都可以通过 JSP 脚本来执行。JSP 脚本元素主要包含 JSP Scriptlet% %、JSP 声明语句(声明全局变量)%! %、JSP 表达式 % %3 种类型。1JSP ScriptletScriptlet 即 JSP 小脚本又叫 Java 程序片它可以包含任意的 Java 代码实现复杂的操作和控制。在 % 和 % 之间插入 Java 程序片使用格式如下。% Java代码 %2JSP 声明语句声明是指在 JSP 程序中定义变量或方法声明后的变量或方法可以在 JSP 页面的任意地方使用。声明放在 %! 和 % 标记符号之间使用格式如下。%! 声明1[声明2]....%【说明】声明是一段 Java 代码应以 ; 结尾。%! 和 % 之间声明的变量或方法在整个 JSP 页面有效多个客户端请求同一个 JSP 页面时共享其成员变量。声明中一般不会有输出它一般和表达式、小脚本一起配套使用。3JSP 表达式表达式可以获取变量的值或方法的返回值并在 JSP 页面上输出信息表达式在页面的位置也就是表达式结果所在的位置。在 % 和 % 之间插入表达式使用格式如下% 表达式%- 在 % 和 % 之间不可插入语句表达式后没有 ; 。- 表达式必须能求值其值由服务器负责计算将计算结果以字符串的形式返回并插入 JSP 页面的相应位置。接下来写一个简单的示例演示一下本人在项目Webapp目录下创建一个名叫myjsp2的目录在myjsp2的目录下创建一个叫xjsp.jsp的文件代码如下部署运行 /myjsp2/xjsp.jspJSP 指令在 JSP 页面中可以通过一些指令来指定页面的输出方式、引用包、加载文件、缓冲区、出错页面、出错处理等相关设置这些指令称为 JSP 指令。JSP 指令的主要作用是和 JSP 引擎进行沟通。JSP 指令发送消息到服务器端并不向客户端产生任何输出所有的指令都在 JSP 整个文件范围内有效。在 % 和 % 之间插入 JSP 指令使用格式为% 指令名 属性1值1 [属性2值2...] %【说明】① 属性值总是用双引号或单引号引起来。② 属性之间用空格分隔不需要任何标点。JSP 中主要有以下 3 种指令。page页面设置编码、导包include引入其他页面taglib使用标签库(JSP 指令就是给服务器看的 “设置命令”不是给用户看的也不输出内容。它的作用只有一个告诉 Tomcat 服务器这个 JSP 页面该怎么翻译、怎么运行。)1、page指令是JSP 中最常用、最重要的指令用于定义整个 JSP 页面的全局属性比如页面语言、导包、编码、错误页等作用于当前整个 JSP 页面一个页面可以写多个page指令所有属性会合并生效。1以% page开头%结尾2多个属性可以写在一个指令里也可以拆分多个指令page 指令可以设置的属性有 import 、 contentType 、 isThreadSafe 、 session 、 buffer 、 autoFlush 、 extends 、 info 、 errorPage 、 isErrorPage 、 language 、 pageEncoding 、 isELIgnoredlanguage定义页面使用的脚本语言默认值就是javacontentType设置响应给浏览器的内容类型 页面编码解决中文乱码核心属性。pageEncoding设置JSP 文件本身的编码推荐和charset保持一致。import唯一可以重复使用的属性用于导入 Java 类 / 包errorPageisErrorPage配套使用实现JSP 统一错误处理。errorPage当前页面报错时跳转到的错误页面isErrorPage标记当前页面是错误处理页buffer设置 JSP 输出缓冲区大小默认 8KBautoFlush缓冲区满时是否自动刷新默认 trueisThreadSafe是否线程安全已废弃isELIgnored是否忽略 EL 表达式默认 false不忽略info给当前 JSP 页面设置一段描述性文字备注、说明、作者、版本等。它不会显示在浏览器上只是给程序内部用的一段注释 / 说明。此示例为errorpage的属性处理异常在myjsp2中创建两个jsp,一个名为errorpage,一个名为error在errorpage中使用page指令中的errorpage属性设置异常处理页面。代码如下在error中获取异常设置isErrorpage的值为true 代码如下本人增加了样式设计部署运行得到2、include指令是 JSP 三大指令之一作用是把另一个文件的内容直接插入到当前 JSP 页面中实现页面复用。必须写% include小写file是唯一属性指定包含的文件可以是 jsp、html、txt 等常用场景头部导航header.jsp底部版权footer.jsp侧边栏sidebar.jsp示例在myjsp2中创建两个jsp,一个名为includepage,一个名为include在include中 代码如下在includepage中 把include嵌入进来代码如下部署运行得到taglib是 JSP三大指令最后一个page、include、taglib专门用来在 JSP 页面中引入自定义标签库 / JSTL 标签库让你能用简洁的标签代替繁琐的 Java 代码。prefix自定义前缀比如c、fn、fmturi标签库唯一标识不是网址是标识符jsp动作元素include 动作标签include 动作标签用来在 JSP 页面中动态包含一个文件这样包含页面的程序与被包含页面的程序是彼此独立且互不影响的。被包含的页面可以是一个动态文件如 JSP 文件也可以是一个静态文件如文本文件。如果包含的是一个静态文件就直接输出给客户端由客户端的浏览器负责显示如果包含的是一个动态文件则由 Web 服务器负责执行把执行后的结果返回给客户端显示出来。注意include 动作标签与 include 指令不同前者是动态包含如果被包含的页面是动态文件将会把执行后的结果返回给客户端后者是静态包含包含文件与被包含文件组合形成一个文件再由 Web 服务器执行。和% include %区别% include %静态包含编译时合并jsp:include动态包含运行时包含% include复制粘贴合为一体编译时做jsp:include调用执行各自独立运行时做格式jsp:include page文件路径/另一种格式jsp:include page文件路径jsp:param name参数名1 value参数1的值/jsp:param name参数名n value参数n的值//jsp:include这里的page属性表示被包含文件的路径。不需要传递参数时这两种格式使用的效果是一样的如果要传递参数就使用第二种格式。示例本人在webapp下创建名为jps3的目录在jps3下创建名为include.jsp和TestInclude.jsp文件在include.jsp中代码如下在TestInclude的代码如下部署运行得到forward标签forward 动作标签用来重定向网页即从当前网页的 forward 动作标签处转向执行另一个网页程序。. 怎么选要传参数、保持地址、登录拦截→ 用forward要跳外网、要让地址变、不想重复提交表单→ 用重定向跳转范围forward只能跳本项目内部重定向可以跳任意外网地址百度、淘宝都行格式jsp:forward page文件路径/另一种格式jsp:forward page文件路径jsp:param name参数名1 value参数1的值/jsp:param name参数名n value参数n的值//jsp:include示例本人在webapp下创建名为jps3的目录在jps3下创建名为TestForward.jsp和small.jsp、big.jsp文件(目的随机生成一个整数判断其值若大于5则跳转big.jsp页面若小于5则跳转到small.jsp页面)TestInclude.jsp代码如下small.jsp代码如下big.jsp代码如下部署运行得到jsp内置对象JSP 内置对象可以直接在 JSP 页面中调用而不需要事先定义这使得 JSP 编程更加方便、快捷。本质上这些内置对象都对应着某个 Servlet 类在 JSP 被翻译成 Servlet 后内置对象会相应转换成对应的类实例。常用的内置对象request javax.servlet.ServletRequest 的子类 请求信息 requestresponse javax.servlet.ServletResponse 的子类响应信息 —pageContext javax.servlet.jsp.PageContext 当前 JSP 页面的上下文信息 pagesession javax.servlet.http.HttpSession HTTP 联机会话信息 sessionapplication javax.servlet.ServletContext 服务器端 Servlet 上下文信息 applicationout javax.servlet.jsp.JspWriter HTML 标准输出 pageconfig javax.servlet.ServletConfig JSP 页面的 Servlet 配置信息 pagepage java.lang.Object 如同 Java 中的 this 关键字 pageexception java.lang.Throwable 异常处理信息 page里面有些之前已经接触过接下来把剩余的解析下out对象out 对象管理应用服务器上的输出缓冲区代表 JSP 页面的输出流主要用来向客户端输出各种格式的数据它是 javax.servlet.jsp.JspWriter 的实例。out JSP 页面的输出对象用来往网页上打印内容。示例使用out对象显示时间本人在webapp下创建名为jps3的目录在jps3下创建名为outtest.jsp 代码如下注册页面本人在webapp下创建名为moniregister的目录在目录下创建名为register.jsp和dore.jsp、login.jsp、userinfo.jsp、main.jsp文件在register.jsp中表单中使用了文本框和密码框供用户输入用户名和密码数据使用单选框进行性别选择使用复选框进行兴趣爱好的多选使用下拉列表进行学历的选择。最后将收集的数据提交到 doreg.jsp 页面。代码如下(加了些样式创建 doreg.jsp 页面此页面主要用来接收数据并输出到页面进行显示代码如下。先使用请求对象 request 设置编码格式再通过 getParameter () 方法获取表单传输的单个值使用 getParameterValues () 方法接收表单传输的多个值最后将获取的值使用 out 对象输出到页面进行显示。注册成功后一般会自动跳转到登录页面这里使用了 response 对象的 setHeader () 方法设置 3 秒后自动跳转到登录页面 login.jsp。login.jsp 代码如下(加了些样式):用户输入登录的用户名和密码数据后提交到userinfo.jsp页面进行登录数据的判断。将接收的用户名和密码数据跟预设的数据进行比较若是用户名和密码都匹配则跳转到首页并通过 Session 对象保存用户名在首页main.jsp中展示若用户名和密码不匹配则返回到登录页面。创建userinfo.jsp页面代码如下创建main.jsp页面 代码如下(加了些样式)首页中使用 Session 对象存储用户名数据通过表达式在页面输出用户名。部署运行后首先浏览用户注册页面运行结果如图 所示在此页面输入用户的相关信息。pageContext对象pageContext 是 JSPJavaServer Pages技术中的核心内置对象javax.servlet.jsp.PageContext 实例它是整个 JSP 页面的上下文管理器提供了对页面内所有对象、作用域及请求响应的统一访问入口域对象代理自身是 PAGE_SCOPE页面作用域同时可统一操作 4 大作用域页面 / 请求 / 会话 / 应用。pageContext 是干什么的它就是 JSP 页面里的万能管家。主要干两件事1. 存数据、取数据在四个范围里存东西2. 拿到其他内置对象request、session、application、out 等pageContext 最核心的特点默认情况下它只对当前这一个 JSP 页面有效。跳转到别的页面、转发到别的页面就拿不到了。示例pageContext存储及获取数据本人在webapp目录下创建jsp3,在jsp3下创建PageContext.jsp 代码如下代码中先在指定范围内存储了数据再从这些范围把数据取出来通过 findAttribute ()方法按范围查找绑定的值运行结果如图 所示exception对象exception 对象表示的是 JSP 引擎在执行代码时抛出的异常它是java.lang.Throwable类的实例。exception 对象只有在错误页面才可以使用即要使用 exception 对象必须在 page 指令中指定isErrorPagetrue。exception 对象是异常类的对象其常用方法与java.lang.Throwable类中的方法一致主要有以下几个String getMessage()获取错误信息。void printStackTrace()该方法以标准错误流的形式输出一个错误和错误的堆栈跟踪。String toString()以字符串的形式返回一个对异常的描述。示例如下在jsp3下创建 exception.jsp 和 ErrorPage.jsp 在exception页面中会有异常抛出使用exception对象完成异常的处理代码如下在ErrorPage.jsp 显示异常信息代码如下exception.jsp 页面中数组下标越界抛出异常跳转到 error.jsp 页面通过 exception 对象获取异常信息并输出。运行结果如图 所示。EL表达式和JSTLJAVABEAN介绍一个专门用来装数据的 Java 小类。专门用来存数据、传数据就像一个标准化的数据盒子。JavaBean 必须遵守的 4 个简单规则1.类是公共的public2. 有一个无参的公共构造方法3. 所有属性都是私有的private4. 给每个属性提供 public 的 getXxx () 和 setXxx () 方法示例在com.example下新建一个目录名字叫javabean,在此目录下新建Student类代码如下在JavaBean目录下创建Main.java,调用它代码如下javabean也可以在jsp中使用也可以在servlet或其他类中若要在jsp页面中使用JavaBean则必须借助jsp的动作元素创建jsp:useBean id对象名 class类名 /• 存值jsp:setProperty name对象名 property属性名 value值 /• 取值jsp:getProperty name对象名 property属性名 /示例在javabean目录下创建User.java,在webapp下创建目录JavaBean在目录下创建first.jspUser.java代码如下在first.jsp中代码如下定义的 User 类。在 JSP 页面中先使用jsp:useBean动作标签表示在页面中引入此 JavaBean名字为 user范围为当前页面表示只在当前页面使用此 user。使用jsp:setProperty设置用户名和密码的值再使用jsp:getProperty获取用户名信息在页面进行显示。嵌入的 Java 代码判断用户名和密码信息模拟用户登录的处理部署运行EL表达式EL 是 JSP 里专门用来简化代码、取数据的表达式核心作用就是用超简单的写法从各种地方拿数据替代复杂的 Java 脚本EL 就是 JSP 里的「数据提取神器」让你不用写% %这种 Java 代码就能直接拿到对象、域里的数据语法简单到像说话一样别忽略 EL 表达式让 ${} 生效,属性值为true则表示不开启El表达式表达式原样输出用来计算示例el表达式的常用内置对象创建login.jsp代码如下创建unit44.jsp页面代码如下本示例的 login.jsp 页面中表单的 action 属性值中的${pageContext.request.contextPath}是一个 EL 表达式这是获取当前项目名称常用的一种做法等价于 JSP 表达式语句%request.getContextPath()%。在 unit44.jsp 页面中通过 EL 的内置对象 param获取请求域中提交的用户名和密码数据。

更多文章