Java Web开发技术 课件 夏永波 单元4-7 JSP 技术-综合应用_第1页
Java Web开发技术 课件 夏永波 单元4-7 JSP 技术-综合应用_第2页
Java Web开发技术 课件 夏永波 单元4-7 JSP 技术-综合应用_第3页
Java Web开发技术 课件 夏永波 单元4-7 JSP 技术-综合应用_第4页
Java Web开发技术 课件 夏永波 单元4-7 JSP 技术-综合应用_第5页
已阅读5页,还剩298页未读 继续免费阅读

下载本文档

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

文档简介

JavaWeb开发技术4.1JSP概述1

本讲介绍JSP技术,包括其动态网页本质、与HTML结合嵌入Java代码的特性,具备动态性、可重用性、跨平台等特点。分析其优缺点,阐述在动态生成页面、实现业务逻辑等场景的作用。对比JSP与Servlet的区别与联系,解析JSP请求后经编译为Servlet运行的工作原理。主要内容4.1JSP概述JSP即JavaServerPages,是由SunMicrosystems公司主导创建的一种动态网页技术标准。它允许将Java代码嵌入到HTML页面中,以实现在服务器端生成动态内容的目的。JSP文件后缀名为.jsp,部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。例如,一个简单的JSP页面可能包含显示当前时间的Java代码,当用户访问该JSP页面时,就能看到实时更新的时间。JSP的概念4.1JSP概述1动态性允许在HTML页面中嵌入Java代码,实现动态生成Web页面的功能。比如根据用户的不同登录状态显示不同的欢迎信息。2

可重用性JSP中的Java代码可以使用Java类库和框架,提高代码的复用性。如使用已有的JavaBean组件来处理业务逻辑。3安全性Java代码运行在服务器端,客户端无法直接访问,安全性较高。像用户的敏感信息处理都在服务器端进行,避免在客户端暴露。4跨平台性基于Java语言,具有跨平台特性,可以应用在不同的系统中,如Windows、Linux、Mac等。5业务代码分离通常使用HTML设计静态页面内容,用JSP标签和Java代码片段实现动态部分,可将业务处理代码放到JavaBean或其他业务控制层,实现业务代码与视图层分离。6组件重用可以使用JavaBean编写业务组件,在JSP页面甚至整个项目中重复使用。例如一个用户信息管理的JavaBean可以在多个JSP页面中用于处理用户相关业务。7预编译用户第一次访问JSP页面时,服务器对JSP页面代码进行编译,且仅编译一次,编译好的代码保存后,后续访问直接执行,节约服务器CPU资源,提升客户端访问速度。JSP的特点4.1JSP概述JSP的优点02JSP与JavaEE(JavaPlatform,EnterpriseEdition)紧密集成,这使得开发人员能够利用JavaEE提供的丰富功能与JavaEE集成04JSP支持自定义标签库(TagLibraries),这使得开发人员可以创建可重用的页面组件,提高开发效率。标签库支持06通过与Servlet的结合使用,JSP可以实现页面逻辑与业务逻辑的分离。这有助于提高代码的可维护性和可扩展性。分离关注点01JSP是基于Java的,因此具有Java的跨平台特性。这意味着JSP应用可以在任何支持Java的服务器和操作系统上运行,无需进行额外的修改跨平台性03JSP允许在HTML中嵌入Java代码,简化了Web页面的开发过程。开发人员可以直接在JSP页面中编写业务逻辑和显示逻辑,而无需在HTML和Java代码之间进行频繁的切换。简化开发05JSP提供了一组内置对象(如request、response、session、application等),这些对象简化了与客户端的交互和服务器端资源的访问。内置对象支持4.1JSP概述JSP的缺点

在某些情况下,JSP页面的性能可能不如纯Servlet。这是因为JSP页面在首次请求时需要编译成Servlet,这可能会引入额外的延迟。此外,如果JSP页面包含大量复杂的业务逻辑,可能会导致性能下降。(1)性能问题由于JSP页面通常包含HTML和Java代码的混合体,这使得调试过程变得相对复杂。开发人员需要仔细分析页面中的Java代码和HTML结构,以确定问题的根源。(2)调试困难如果JSP页面中的Java代码过于复杂或冗长,可能会增加维护成本。此外,随着业务需求的变化,JSP页面可能需要频繁更新,这进一步增加了维护难度。(3)维护成本高对于不熟悉Java或JSP的开发人员来说,学习JSP技术可能需要一定的时间。他们需要掌握Java语言、JSP语法以及相关的Web开发技术。(4)学习曲线如果开发人员不遵循最佳实践,JSP页面可能会暴露安全性风险。例如,不安全的输入验证、不适当的会话管理等都可能导致安全漏洞。(5)安全性风险4.1JSP概述JSP主要用于创建动态Web内容,像交互式表单、在线购物、论坛等。在MVC(Model-View-Controller,模型-视图-控制器)体系结构中,JSP通常用作显示输出的视图,负责将模型层的数据展示给用户。例如在一个新闻网站中,JSP页面负责将从数据库中获取的新闻内容按照一定的格式展示在网页上。JSP的作用4.1JSP概述JSP的作用JSP允许在HTML页面中嵌入Java代码,这样Web服务器就可以根据用户请求生成动态的HTML页面。这种动态生成页面的能力使得JSP成为创建交互式Web应用的重要工具。例如,一个在线购物网站可以根据用户的选购情况动态生成购物车页面和订单确认页面。1.动态生成HTML页面通过在JSP页面中嵌入Java代码,可以实现Web应用程序的业务逻辑。这包括但不限于验证用户输入、处理表单数据、从数据库中读取和写入数据等。这些业务逻辑的实现使得JSP能够支持复杂的Web应用程序开发。2.提供Web应用程序的业务逻辑相比于纯Java代码编写,JSP可以更方便地处理Web页面的布局和样式。JSP页面可以直接包含HTML代码,同时嵌入Java代码来处理业务逻辑,这使得开发人员能够更直观地设计和实现Web页面。此外,JSP还支持标签库(TagLibrary),可以将常用的页面元素封装成标签,方便在不同的页面中复用,进一步提高开发效率。3.简化Web应用程序的开发JSP技术以Java语言作为脚本语言,能够与服务器上的其他Java程序共同处理复杂的业务需求。例如,JSP可以与JavaBeans、Servlets等技术结合使用,实现更复杂的业务逻辑和数据处理。4.支持复杂的业务需求JSP技术通过验证表单的参数来保证数据的有效性,从而提高Web应用程序的安全性。同时,JSP具有高度的可扩展性,能够支持企业级Web应用程序的开发。随着业务需求的增长,JSP应用程序可以方便地扩展和升级,以满足新的业务需求。5.提高Web应用程序的安全性和可扩展性JSP技术广泛应用于企业级Web应用程序的开发中,如人力资源管理、客户关系管理、供应链管理等。此外,JSP还可以很好地应用于电子商务网站的开发,帮助用户实现产品展示、购物车、订单管理、支付等功能。在教育领域,JSP也可以用于开发课程管理、学生管理、教师管理等功能的网站。6.广泛的应用场景4.1JSP概述JSP是Servlet技术的扩展,本质上就是Servlet的简易方式,每个JSP页面最终都会被翻译成一个Servlet。JSP编译后是“类servlet”。JSP与Servlet的关系2.二者联系二者都是Sun公司推出的动态网页技术,先有Servlet,针对Servlet在生成HTML内容方面的不便等缺点推出JSP。JSP页面由系统翻译成Servlet,Servlet再负责响应用户请求。1.二者区别(1)接受请求:Servlet可以接受所有协议请求,包括HTTP,而JSP只能接受HTTP请求。(2)用处:在MVC体系结构中,Servlet用作控制器,处理业务逻辑和流程控制;JSP用作显示输出的视图,更擅长页面显示。比如在一个用户登录功能中,Servlet负责处理用户提交的登录信息、验证用户身份等逻辑,而JSP负责展示登录页面以及登录结果提示页面。(3)运行速度:Servlet的运行速度比JSP快,因为JSP需要编译程序和转换为Servlet,这个过程会花费一定时间。(4)service()方法:可以在Servlet中重写service()方法,但在JSP中,不能重写service()方法。(5)业务逻辑和表示逻辑:在Servlet中,业务逻辑和表示逻辑都在单个文件中实现;而在JSP中,业务逻辑可以使用JavaBeans从表示逻辑中分离出来。(6)内置对象:Servlet中没有内置对象,JSP中的内置对象(如request、response、session等)都可以直接使用,无需通过其他对象获取。4.1JSP概述JSP的工作原理单击此处输入你的正文,请尽量言简意赅的阐述观点,以便观者可以准确理解您所传达的信息关键字1.服务器根据接收到的请求加载相应的JSP文件。2.Web服务器中的JSP引擎将JSP文件转化为Servlet(Java源文件)。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息。3.JSP引擎用javac把生成的Java源文件编译成.class字节码文件。4.服务器加载并执行这个.class文件。5.服务器将执行结果发送给浏览器进行显示。如果JSP文件被修改了,服务器将根据设置决定是否对该文件进行重新编译。如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。例如,当用户访问一个显示商品列表的JSP页面时,服务器按照上述步骤将JSP页面转换为Servlet并执行,从数据库中获取商品数据,然后将包含商品数据的HTML页面返回给用户浏览器进行展示。图4-1jsp页面请求示意图如图4-1所示,当客户端通过浏览器向服务器发出一个JSP页面请求时会完成以下操作。说明:深蓝色框为处理流程,橙色框为判断节点,灰色框为终端节点,箭头上的文字标注交互协议,子流程框突出显示核心处理阶段。JSP通过将Java代码与HTML结合,简化了动态网页开发流程,尤其在视图展示层具有明显优势。其预编译机制和内置对象提升了开发效率,但过度混合代码可能导致维护困难。与Servlet的分工(JSP为视图,Servlet为控制器)形成了经典的MVC模式,是JavaWeb开发的重要组成部分。小结再见!JavaWeb开发技术4.2JSP基础入门1

本讲讲解JSP基础语法,包括脚本元素(声明、表达式、脚本小程序、指令、注释)、JSP指令(page、include、taglib)、9个隐式对象(out、request、response等)和动作元素(include、forward、useBean等)。通过案例演示如何综合使用这些元素实现动态页面、会话管理和页面跳转,解决中文编码问题并引入JSTL标签库。主要内容4.2JSP基础入门2.表达式(Expression)用于将程序数据输出到客户端,格式为<%=表达式%>。表达式会被计算并转换为字符串插入到输出流中。例如:1.声明(Declaration)用于声明变量、方法和类,格式为<%!声明内容%>。声明的变量和方法在整个JSP页面中有效

脚本元素<%!intcount=0;publicvoidincrement(){count++;}%><%="当前时间是:"+newjava.util.Date()%>3.脚本小程序(Scriptlet)用于在JSP页面中嵌入Java代码,格式为<%Java代码%>。可以包含多个Java语句,这些语句会按照顺序执行。<%for(inti=0;i<5;i++){out.println("第"+(i+1)+"次循环<br>");}%>4.指令(Directive)用于设置整个页面的属性,告诉JSP引擎如何处理该页面,格式为:例如:<%@指令名

属性1="值1"属性2="值2"%>。<%@pagecontentType="text/html;charset=UTF-8"%>4.2JSP基础入门格式为:这种注释会在客户端的HTML源代码中显示。例如:(1)HTML注释脚本元素5.注释(Comment)<!--注释内容--><!--这是一个HTML注释,用户查看网页源代码时可以看到-->格式为:这种注释不会在客户端显示,主要用于在JSP页面中注释代码。例如:(2)JSP注释<%--注释内容--%><%--这是一个JSP注释,客户端无法看到,用于开发者注释代码逻辑--%>包括单行注释【<%//注释内容%>】和【多行注释<%/*注释内容*/%>】,用于注释JSP页面中的Java代码。例如:(3)Java注释<%//这是一个单行Java注释%><%/*这是一个多行Java注释可以跨越多行*/%>4.2JSP基础入门JSP指令1.page指令:定义了一组与页面相关的属性,一个页面可以包含多个page指令,常用属性如下:(1)language:设置JSP页面所使用的语言,目前只支持Java,默认为java。例如:<%@pagelanguage="java"%>(2)extends:自定义继承的超类,一般很少使用,默认JSP继承JspBase类。(3)import:设置JSP导入的类包,如果需要导入多个类包,各类包之间用逗号分隔。例如:<%@pageimport="java.util.*,java.io.*"%>(4)pageEncoding:指定页面编码格式,通常设置为utf-8。例如:<%@pagepageEncoding="utf-8"%>。(5)contentType:设置页面的MIME类型和编码,浏览器会根据MIME类型选择响应的方式来处理收到的信息。例如:<%@pagecontentType="text/html;charset=UTF-8"%>(6)session:指定页面是否使用HTTP的session对象,默认值为true。例如:<%@pagesession="false"%>这里表示该页面不使用session对象。(7)buffer:设置页面out对象的缓冲区大小,默认为8kb,单位只能使用kb,建议使用8的倍数作为属性值。例如:<%@pagebuffer="16kb"%>4.2JSP基础入门JSP指令(8)

autoFlush:设置页面缓存满时是否自动刷新缓存,默认为true。如果设置为false,则缓存满时会抛出异常。例如:<%@pageautoFlush="false"%>(9)isErrorPage:可以将当前页面设置成错误处理页面来处理另一个JSP页面的错误,也就是作为异常处理页面。例如:<%@pageisErrorPage="true"%>(10)errorPage:指定当前页面的异常处理页面,对应的异常处理页面isErrorPage必须设置为true。例如:<%@pageerrorPage="error.jsp"%>这里表示当前页面出现异常时跳转到error.jsp页面。(11)isThreadSafe:用来设置当前JSP页面是否能够同时响应超过一个以上的用户请求。例如:表示允许多个线程同时访问该页面,可能存在线程安全问题:<%@pageisThreadSafe="true"%>表示同一时间只能有一个线程访问该页面:<%@pageisThreadSafe="false"%>(12)info:定义一个字符串,作为页面的说明文字,通过servelt.getServletInfo可以获取定义的信息。例如:<%@pageinfo="这是一个用户登录页面"%>4.2JSP基础入门JSP指令2.include指令:用来引用外部文件,可以放在JSP文件的任意位置,文件可以是HTML文件、JSP文件、文本文件或一段Java代码。该指令表示静态引用,在JSP页面翻译成Servlt前,将引用的文件内容插入到当前位置(合并两个文件)。格式为:<%@includefile="URL"%>例如:<%@includefile="header.jsp"%>这里表示将header.jsp的内容包含到当前页面中。3.taglib指令:声明此JSP文件使用了自定义的标签,同时指定所引用的标签库并设置前缀。格式为:<%@tagliburi="taglibrary’suri"prefix="tagPrefix"%>其中uri属性指定标签库的存放位置,prefix指定该标签库的前缀。例如:<%@taglibprefix="c"uri="/jsp/jstl/core"%>这时表示引入JSTL核心标签库,前缀为c,之后就可以在JSP页面中使用<c:forEach>等标签。4.1JSP概述<%out.println("欢迎访问本网站!");%>01out:用于向客户端发送文本数据,类型为JspWriter,相当于一种带缓存功能的PrintWriter。例如:<%Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");%>02request:代表客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据,包括头信息、系统信息、请求方式以及请求参数等。例如获取表单提交的参数:<%response.setContentType("text/html;charset=UTF-8");response.setHeader("refresh","5;url=index.jsp");//5秒后跳转到index.jsp页面%>03response:代表对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。例如设置响应头信息:JSP隐式对象4.1JSP概述<%session.setAttribute("user","张三");Stringuser=(String)session.getAttribute("user");%>04session:由服务器自动创建的与用户请求相关的对象,用于保存该用户的信息,跟踪用户的操作状态,内部使用Map类来保存数据,保存数据的格式为“Key/value”,value可以是复杂的对象类型。例如:<%Integercount=(Integer)application.getAttribute("count");if(count==null){count=1;}else{count++;}application.setAttribute("count",count);%>05application:可将信息保存在服务器中,直到服务器关闭,在整个应用中都有效,类似于系统的“全局变量”。例如统计网站的访问量:当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet,开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。06config:主要作用是取得服务器的配置信息,通过pageConext对象的getServletConfig()方法可以获取一个config对象。JSP隐式对象4.1JSP概述<%javax.servlet.http.HttpServletRequestreq=pageContext.getRequest();%>07pageContext:代表JSP页面的运行环境,不仅封装了对其它8大隐式对象的引用,自身还是一个域对象,可以用来保存数据,还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。例如通过pageContext获取request对象:08page:代表JSP本身,只有在JSP页面内才是合法的,本质上包含当前Servlet接口引用的变量,类似于Java编程中的this指针。<%@pageisErrorPage="true"%><%Exceptionex=exception;out.println("错误信息:"+ex.getMessage());%>09page:代表JSP本身,只有在JSP页面内才是合法的,本质上包含当前Servlet接口引用的变量,类似于Java编程中的this指针。JSP隐式对象4.2JSP基础入门JSP动作元素JSP动作利用XML语法格式的标记来控制JSP容器的行为,在请求处理阶段起作用。1.<jsp:include>:用来在当前JSP页面动态包含一个HTML文件或JSP文件。该动作可以自动区分被包含的页面是静止的还是动态的。如果被包含页面是静态页面,则将内容包含进来处理;如果被包含的是动态页面,页面会被JSP容器编译,在请求处理期间,JSP页面向被请求动态页面发送请求,然后将请求结果插入到JSP页面的响应流中。语法格式为:<jsp:includepage="URL"flush="true|false"/>或:<jsp:includepage="URL"flush="true|false"><jsp:paramname="key_name"value="value_name"/></jsp:include>其中page属性指定被包含文件的相对路径,flush属性表示是否实时输出缓冲区,true表示实时输出;<jsp:param>子元素用于在包含文件时传递参数。例如:<jsp:includepage="footer.jsp"flush="true"><jsp:paramname="info"value="版权所有"/></jsp:include>4.2JSP基础入门JSP动作元素JSP动作利用XML语法格式的标记来控制JSP容器的行为,在请求处理阶段起作用。2.<jsp:forward>:告诉JSP容器停止当前JSP页面的执行,把请求转向另一个资源,可以是一个HTML文件、JSP页面或Servlet,但请求转向的资源必须与该JSP页面在同一个Javaweb应用程序。语法格式为:<jsp:forwardpage="URL"/>或<jsp:forwardpage="URL"><jsp:paramname="attributeName"value="attributeValue"/></jsp:param>例如,用户登录验证成功后跳转到欢迎页面:<%Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");if("admin".equals(username)&&"123456".equals(password)){%><jsp:forwardpage="welcome.jsp"><jsp:paramname="user"value="<%=username%>"/></jsp:forward><%}else{%><jsp:forwardpage="login.jsp"/><%}%>4.2JSP基础入门JSP动作元素JSP动作利用XML语法格式的标记来控制JSP容器的行为,在请求处理阶段起作用。3.<jsp:useBean>:用于在JSP页面中使用JavaBean组件,语法格式为:<jsp:useBeanid="name"class="classname"scope="page|request|session|application"/>或<jsp:useBeanid="name"type="typename"scope="page|request|session|application"/>其中id是JavaBean实例的变量名,class指定JavaBean的类名,scope指定JavaBean的作用范围(page:仅在当前页面有效;request:在一次请求内有效;session:在用户会话期间有效;application:在整个应用程序中有效),type指定JavaBean对象的类型,通常在查找已存在的JavaBean时使用,这时使用type将不会产生新对象。例如:<jsp:useBeanid="user"class="com.example.User"scope="session"/>4.2JSP基础入门JSP动作元素JSP动作利用XML语法格式的标记来控制JSP容器的行为,在请求处理阶段起作用。4.<jsp:setProperty>:用于向一个JavaBean的属性赋值,语法格式为:<jsp:setPropertyname="beanname"property="propertyname"value="propertyvalue"/>或<jsp:setPropertyname="beanname"property="propertyname"param="parametername"/>其中name指定JavaBean对象名,property指定要赋值的属性名,value指定要为属性设置的值,param指定请求中的参数名,并将该参数的值赋给property所指定的属性。例如:<jsp:setPropertyname="user"property="username"value="张三"/>或<jsp:setPropertyname="user"property="password"param="password"/>5.<jsp:getProperty>:用于获取一个JavaBean的属性值,语法格式为:<jsp:getPropertyname="beanname"property="propertyname"/>例如:用户名:<jsp:getPropertyname="user"property="username"/>

本讲聚焦JSP基础语法,涵盖脚本元素(声明/表达式/脚本段/指令/注释)、三大指令(page/include/taglib)、九大隐式对象(out/request/session等)及动作元素(include/forward/useBean等)。通过案例演示动态内容生成、会话管理及页面跳转,强调中文编码处理和JavaBean的合理使用,为后续JSTL与EL表达式学习奠定基础。小结再见!JavaWeb开发技术4.3JSP基础应用案例1

本讲内容将综合应用JSP脚本元素、JSP指令、JSP隐式对象、JSP动作元素的案例。该案例的主要功能是接收用户输入的姓名,将其存储在会话中,然后在另一个页面显示该姓名,同时会展示当前日期和时间。主要内容4.3JSP基础应用案例以下是一个综合应用JSP脚本元素、JSP指令、JSP隐式对象、JSP动作元素的案例。该案例的主要功能是接收用户输入的姓名,将其存储在会话中,然后在另一个页面显示该姓名,同时会展示当前日期和时间。1.接收用户输入的页面index.jsp创建webapp/ch04/ch0401/index.jsp,主要代码如下。001<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>016<%--脚本元素:输出当前日期和时间--%>017<%018java.util.DatecurrentDate=newjava.util.Date();019out.println("<p>当前日期和时间:"+currentDate+"</p>");020%>代码解释:JSP指令:第1行中的`<%@page%>`指令用于设置页面的基本属性,如使用的语言、内容类型和字符编码。注释:第16行中为注释,在查看源码中能看到。脚本元素:第17-20行`<%%>`中的Java代码用于获取当前日期和时间,并使用`out`隐式对象将其输出到页面。`out`是JSP的隐式对象,用于向客户端发送文本输出。4.3JSP基础应用案例2.显示欢迎信息的页面welcome.jsp创建webapp/ch04/ch0401/welcome.jsp,主要代码如下。001<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>002<%@tagliburi="/jsp/jstl/core"prefix="c"%>010<%--获取表单提交的姓名--%>011<%012Stringname=request.getParameter("name");013session.setAttribute("userName",name);014%>015016<%--使用JSP动作元素包含头部信息--%>017<jsp:includepage="header.jsp"></jsp:include>018019<h1>欢迎,<%=session.getAttribute("userName")%>!</h1>020021<%--使用JSTL标签检查会话是否存在--%>022<c:iftest="${notemptysessionScope.userName}">023<p>您的会话已激活。</p>024</c:if>025026<%--脚本元素:输出当前会话ID--%>027<%028out.println("<p>当前会话ID:"+session.getId()+"</p>");029%>代码解释:第1-2行除了<%@page%>指令外,还使用了<%@taglib%>指令引入JSTL标签库,用于后续的条件判断。第10-29行<%%>中的Java代码用于获取表单提交的姓名,并将其存储在会话中,同时输出当前会话ID。第17行<jsp:include>动作元素用于包含另一个JSP页面(header.jsp)的内容。第19行使用request隐式对象获取表单提交的数据,第22行使用session隐式对象管理用户会话。4.3JSP基础入门3.头部信息页面header.jsp创建webapp/ch04/ch0401/header.jsp,内容如下。<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><header><h2>欢迎来到JSP语法基础演示案例!</h2></header>4.注销页面logout.jsp创建webapp/ch04/ch0401/logout.jsp,主要代码如下。<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%session.invalidate();%>代码解释:脚本元素:<%%>中的Java代码使用session隐式对象的invalidate()方法销毁当前会话。4.3JSP基础应用案例5.项目依赖信息由于这里要使用JSTL,故在项目pom.xml中添加如下依赖信息:<dependencies><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency></dependencies>然后刷新maven项目,在依赖信息中要能够看到对应的jar包依赖信息,如图4-2所示。图4-2Maven项目的刷新4.2JSP基础入门6.运行步骤1.运行项目,在地址栏中输入http://localhost:8080/ch04/ch0401,可以看到图4-3中结果①。2.输入姓名(故意测试中文)并提交,可以看到图4-3中结果②③。此时页面中有乱码出现,这是页面请示与响应时中文编码的问题。在welcome.jsp第9行后添加如下内容再进行测试,可以看到图4-3中结果④。<%//设置请求编码request.setCharacterEncoding("UTF-8");//设置响应编码response.setCharacterEncoding("UTF-8");%>3.点击“注销”链接,将销毁会话并显示注销信息,结果为图4-3中⑤所示。通过这个案例,可以看到JSP脚本元素、JSP指令、JSP隐式对象和JSP动作元素的一般用法。图4-3案例测试

本讲讲解了综合应用JSP脚本元素、JSP指令、JSP隐式对象、JSP动作元素的案例。通过这个案例,可以看到JSP脚本元素、JSP指令、JSP隐式对象和JSP动作元素的一般用法。小结再见!JavaWeb开发技术4.4JavaBean的应用1

本讲介绍JSP高级应用之JavaBean,讲解其特点(私有属性、公共访问方法、无参构造、可序列化)、JSP中使用步骤(创建类、useBean标签实例化、setProperty设置属性、getProperty获取属性),并通过案例演示数据封装与页面展示,实现逻辑分离。主要内容4.4JavaBean的应用JavaBean是一种可重用的Java组件,它是一个遵循特定写法的Java类,具有以下特点。1.所有属性为private,通过public类型的getter和setter方法来访问和修改这些属性,用于实现对属性的封装和数据的安全访问。例如:publicclassUser{privateStringusername;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}}2.提供默认构造方法(无参构造方法),方便在创建对象时进行初始化操作。例如:publicUser(){}3.通常实现Serializable接口,以支持对象的序列化和反序列化,便于在网络传输或存储到文件中。例如:importjava.io.Serializable;publicclassUserimplementsSerializable{//省略属性和方法}4.4JavaBean的应用JavaBean是一种可重用的Java组件,它是一个遵循特定写法的Java类,具有以下特点。4.在JSP中使用JavaBean可以提高代码的重用性、可维护性和安全性,实现业务逻辑和表示逻辑的分离。具体使用步骤如下:(1)创建JavaBean类:按照JavaBean的规范编写Java类,如上述的User类。(2)在JSP页面中使用<jsp:useBean>标签:用于查找或实例化一个JavaBean组件,语法为:<jsp:useBeanid="beanName"class="beanClass"scope="scopeFlag"/>。其中beanName为实例化的变量名,beanClass为设置从哪个类实例化的javabean对象,scopeFlag为设置javaBean的作用范围(默认是page,可设置page|request|session|application)。例如:<jsp:useBeanid="user"class="com.example.User"scope="session"/>(3)使用<jsp:setProperty>标签设置JavaBean的属性值,语法为:<jsp:setPropertyproperty="实例化的属性名"name="实例名"value="设置属性值"/>或<jsp:setPropertyproperty="实例化的属性名"name="实例名"param="请求参数名"/>。例如:<jsp:setPropertyproperty="username"name="user"value="张三"/>或根据表单提交的参数设置属性值:<jsp:setPropertyproperty="password"name="user"param="password"/>(4)使用<jsp:getProperty>标签获取JavaBean的属性值:语法为<jsp:getPropertyproperty="实例化对象名"name="实例化名"/>。例如:用户名:<jsp:getPropertyproperty="username"name="user"/>4.4JavaBean的应用创建一个名为user.jsp的JSP页面,主要代码如下:<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!--实例化User类的JavaBean--><jsp:useBeanid="userid"class="com.example.myjavaweb.ch04.User"scope="page"/><!--设置JavaBean的属性--><jsp:setPropertyproperty="username"name="userid"value="张三"/><jsp:setPropertyproperty="password"name="userid"value="123456"/><!--获取JavaBean的属性并显示--><p>用户名:<jsp:getPropertyproperty="username"name="userid"/></p><p>密码:<jsp:getPropertyproperty="password"name="userid"/></p>JavaBean是一种可重用的Java组件,它是一个遵循特定写法的Java类,具有以下特点。5.javabean应用案例在JSP中使用JavaBean是一种常见的做法,JavaBean可以用来封装数据和业务逻辑,使得JSP页面更加简洁和易于维护。以下案例展示了如何在JSP中使用JavaBean。(1)创建JavaBean类首先,我们需要创建一个JavaBean类。JavaBean类是一个普通的Java类,需要满足以下几个条件:①类必须是公共的(public);②类必须有一个无参的构造函数(默认自动生成);③类的属性必须使用私有(private)访问修饰符;④类必须提供公共的getter和setter方法来访问和修改属性。然后创建JavaBean类packagecom.example.myjavaweb.ch04.User.java,代码如前所述。(2)创建JSP页面来使用JavaBean接下来,我们创建一个JSP页面来使用这个JavaBean。在JSP页面中,我们可以使用<jsp:useBean>标签来实例化JavaBean,使用<jsp:setProperty>标签来设置JavaBean的属性,使用<jsp:getProperty>标签来获取JavaBean的属性。4.4JavaBean的应用(4)代码解释<jsp:useBean>标签:用于实例化JavaBean对象。id属性指定JavaBean对象的名称,class属性指定JavaBean类的全限定名,scope属性指定JavaBean对象的作用域,这里设置为page表示该对象只在当前JSP页面有效。<jsp:setProperty>标签:用于设置JavaBean对象的属性。property属性指定要设置的属性名,name属性指定JavaBean对象的名称,value属性指定要设置的属性值。<jsp:getProperty>标签:用于获取JavaBean对象的属性值。property属性指定要获取的属性名,name属性指定JavaBean对象的名称。JavaBean是一种可重用的Java组件,它是一个遵循特定写法的Java类,具有以下特点。图44javabean应用案例通过这种方式,我们可以在JSP页面中方便地使用JavaBean来封装和处理数据。(3)步骤3:部署和运行项目运行项目,在地址栏中给出测试地址localhost:8080/ch04/ch040201.jsp,输出结果如图4-4所示。JavaBean通过规范写法实现数据封装与逻辑分离,提升JSP代码复用性与可维护性。在JSP中借助标签可便捷操作JavaBean,完成属性设置与读取。案例展示了从创建Bean到页面集成的完整流程,体现其在简化开发、增强安全性方面的优势,为复杂应用开发奠定基础。小结再见!JavaWeb开发技术、4.5EL表达式1

本讲介绍EL表达式,其为JSP2.0特性,语法为${expression},可简化对象引用。内容涵盖访问对象属性、数组/集合元素,以及算术、比较、逻辑、条件运算符和empty运算符的用法,通过示例展示其在页面中的便捷应用。主要内容4.5EL表达式

是JSP2.0中引入的一个新特性,它可以简化在JSP开发中对对象的引用,规范页面代码,增加程序的可读性及维护性。EL表达式的语法很简单,以${开头,以}结束,中间为合法的表达式,即${expression}。例如:${"欢迎访问本网站"}EL表达式的常用操作符及示例如下:EL(ExpressionLanguage)表达式4.5EL表达式1.访问对象属性:可以使用点号(.)或方括号([])来访问JavaBean对象、Map、List等的属性。例如:<jsp:useBeanid="user"class="com.example.User"scope="session"/><jsp:setPropertyproperty="username"name="user"value="张三"/>用户名:${user.username}用户名:${user["username"]}2.访问数组和List集合元素:使用方括号来访问数组和List集合中的元素,索引从0开始。例如:<%String[]fruits={"苹果","香蕉","橘子"};pageContext.setAttribute("fruits",fruits);%>第一个水果:${fruits[0]}3.算术运算符:支持+(加)、-(减)、*(乘)、/(除,也可以用div表示)、%(取模,也可以用mod表示)。例如:3加4的结果:${3+4}3除4的结果:${3/4}3除4的结果(用div表示):${3div4}4.比较运算符:支持>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)。例如:3大于4吗?${3>4}3等于4吗?${3==4}4.5EL表达式5.逻辑运算符:支持&&(与,也可以用and表示)、||(或,也可以用or表示)、!(非,也可以用not表示)。例如:3大于4且3小于4吗?${3>4&&3<4}3大于4或3小于4吗?${3>4||3<4}6.条件运算符:即三元运算符${条件?值1:值2}。例如:<%intscore=85;pageContext.setAttribute("score",score);%>成绩等级:${score>=90?"优秀":(score>=60?"及格":"不及格")}7.empty运算符:用于判断字符串、集合、数组对象是否为null并且长度是否为0。例如:<%Stringstr="";pageContext.setAttribute("str",str);%>字符串是否为空:${emptystr}EL表达式通过简洁语法实现对JavaBean、集合等对象的快速访问,简化JSP代码逻辑。各类运算符使其可灵活处理数据判断与运算,empty运算符方便进行空值校验。合理使用EL表达式能提升页面可读性与开发效率,减少脚本代码混杂,是JSP开发的重要优化手段。小结再见!JavaWeb开发技术4.6JSTL1

本讲介绍JSTL(JSP标准标签库),其通过自定义标签简化JSP页面开发,涵盖条件判断、循环等功能。内容包括使用步骤(下载库、添加依赖、引入标签库)及核心标签库常用标签(<c:out>输出、<c:if>条件判断、<c:forEach>循环等),通过示例展示标签用法与场景。主要内容4.6JSTL

是JSP的标准标签库,提供了一组自定义标签,用于简化在JSP页面中执行常见的任务,如条件判断、循环、格式化输出等,使得在JSP页面中编写Java代码的需求降到最低,从而提高了页面的可读性和维护性。JSTL通常用于Web应用程序的前端开发。JSTL(JSPStandardTagLibrary)4.6JSTL使用JSTL的步骤1.下载JSTL库:可以从官方网站(/taglibs/standard/)或通过Maven等依赖管理工具获取JSTL库的JAR文件,如taglibs-standard-impl-1.2.5.jar和taglibs-standard-spec-1.2.5.jar。2.将JSTL库添加到项目中:将下载的JSTLJAR文件添加到Web应用程序的类路径中,例如复制到WEB-INF/lib目录下,或者在使用Maven构建项目时,在pom.xml文件中添加相关依赖:<dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-impl</artifactId><version>1.2.5</version></dependency><dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-spec</artifactId><version>1.2.5</version></dependency>3.在JSP页面中引入JSTL库:通过<%@taglib%>指令引入JSTL库,例如引入核心标签库:<%@taglibprefix="c"uri="/jsp/jstl/core"%>其中,prefix指定了标签库的前缀,在页面中使用标签时需要加上该前缀;uri指定了标签库的唯一标识符。4.6JSTLJSTL核心标签库的常用标签及示例1.<c:out>:用于输出文本或表达式的值,自动进行HTML转义,防止XSS攻击。例如:<c:outvalue="${username}"default="游客"/>2.<c:set>:用于设置一个变量,并将其绑定到一个值或表达式,还可以设置JavaBean的属性。例如:<c:setvar="message"value="欢迎来到JSTL的世界"scope="request"/>获取变量值:${requestScope.message}设置JavaBean属性:<jsp:useBeanid="user"class="com.example.User"scope="session"/><c:settarget="${user}"property="username"value="李四"/>3.<c:if>:用于执行条件判断,根据条件是否成立来渲染页面内容。例如:<c:iftest="${user.role=='admin'}"><p>欢迎管理员登录!</p></c:if>4.6JSTL4.<c:choose>、<c:when>、<c:otherwise>:用于执行多个条件判断,类似于Java中的switch语句。例如:<c:setvar="score"value="85"/><c:choose><c:whentest="${score>=90}"><p>成绩优秀</p></c:when><c:whentest="${score>=70&&score<90}"><p>成绩良好</p></c:when><c:otherwise><p>成绩有待提高</p></c:otherwise></c:choose>5.<c:forEach>:用于循环遍历集合或数组中的元素。例如遍历一个包含学生信息的List集合:<%List<Student>students=newArrayList<>();students.add(newStudent("张三",85));students.add(newStudent("李四",90));request.setAttribute("students",students);%><ul><c:forEachvar="student"items="${students}"><li>姓名:${},成绩:${student.score}</li></c:forEach></ul>JSTL核心标签库的常用标签及示例JSTL通过标准化标签替代JSP中的Java代码,提升页面可读性与维护性。核心标签库提供输出、变量设置、条件判断、循环遍历等功能,如<c:out>自动转义防攻击,<c:forEach>便捷处理集合数据。合理使用JSTL可减少脚本混合,规范开发流程,是实现MVC模式中视图层轻量化的关键技术。小结再见!JavaWeb开发技术4.7小结4.7小结在本章节的学习中,我们全面深入地探索了JSP技术。首先认识到JSP作为一种动态网页技术标准,能够将Java代码与HTML页面巧妙融合,实现动态内容的生成。其具有动态性、可重用性、安全性、跨平台性等显著特点,在MVC体系结构中,JSP常作为视图层,负责将模型层的数据展示给用户。JSP与Servlet关系紧密,JSP本质是Servlet的简易方式,最终会被翻译成Servlet来处理请求。

在基础入门部分,我们掌握了JSP开发环境的搭建,包括JDK、Tomcat服务器以及Eclipse或IntelliJIDEA等IDE的安装与配置。了解了JSP的语法基础,如脚本元素(声明、表达式、脚本小程序)、指令(page、include、taglib)和注释(HTML注释、JSP注释、Java注释)。还学习了JSP的9个隐式对象(out、request、response、session、application、config、pageContext、page、exception)以及JSP动作元素(<jsp:include>、<jsp:forward>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>),它们在JSP页面的开发中发挥着重要作用。0103024.7小结0203JSP在高级应用方面,我们学习了JSP与JavaBean的结合,通过JavaBean实现业务逻辑和数据的封装,提高代码的重用性和可维护性。利用JDBC技术实现了JSP对数据库的访问,包括加载驱动、建立连接、执行SQL语句和处理结果集等步骤。还掌握了EL表达式和JSTL的使用,EL表达式简化了在JSP中对对象的引用,JSTL提供了一组丰富的自定义标签,用于简化页面开发中的常见任务。此外,我们还学习了如何开发自定义标签,进一步扩展JSP的功能。在未来,JSP技术可能会朝着更加轻量化、高效化的方向发展,与云计算、大数据等新兴技术进一步融合。例如,在云计算环境中,JSP可以用于构建基于云平台的Web应用,充分利用云的弹性计算和存储能力,实现应用的快速部署和扩展。同时,随着移动互联网的普及,JSP也可能在移动应用的后端开发中找到新的应用场景,为移动应用提供稳定的数据支持和业务逻辑处理。4.7小结

对于同学们来说,JSP技术的学习只是一个开始。在今后的学习和工作中,要持续关注Web开发领域的新技术、新趋势,不断学习和掌握新的知识和技能。例如,学习Vue、React等前端框架,了解微服务架构、容器化技术等,拓宽自己的技术视野,提升自己的综合能力。只有不断学习和进步,才能在快速发展的技术浪潮中立于不败之地,成为一名优秀的Web开发者。

再见!1JavaWeb开发技术5JDBC及其应用15.0教学分析(目标、重难点、职业素养)1

本讲将对JDBC及其应用进行全面的教学分析,涵盖课程目标、重难点以及职业素养的培养。主要内容5.0教学分析在当今数字化时代,数据已成为企业和应用的核心资产。无论是大型企业的业务系统,还是小型创业公司的创新应用,都离不开对数据的存储、管理和访问。Java作为一种广泛应用于企业级开发的编程语言,具备强大的数据库交互知识,能够满足各种复杂的数据处理需求。在Java开发中,与数据库进行交互是一项至关重要的任务。通过数据库交互,Java应用程序可以实现数据的持久化存储,为用户提供稳定可靠的服务。例如,在电商系统中,需要将用户信息、商品信息、订单信息等存储在数据库中,以便随时查询和处理;在社交平台中,需要通过数据库交互来实现用户关系的管理、动态的发布与获取等功能。可以说,数据库交互是Java应用程序实现其业务逻辑的基础。而JDBC(JavaDatabaseConnectivity),作为Java语言与各种关系型数据库之间沟通的桥梁,为Java开发者提供了一套统一的接口,使得开发者可以使用相同的Java代码来操作不同类型的数据库,如MySQL、Oracle、SQLServer等。它极大地简化了Java与数据库的交互过程,提高了开发效率和代码的可移植性。掌握JDBC技术,对于每一位立志成为优秀Java开发者的同学来说,都是必不可少的。接下来,就让我们一起深入探索JDBC的世界,揭开它神秘的面纱。5.0教学分析全面熟悉JDBC的核心API,包括DriverManager、Connection、Statement、PreparedStatement、ResultSet等接口和类的功能、方法及使用场景。知识目标2统了解数据源的配置与应用,掌握使用数据源(如JNDI数据源)获取数据库连接的方法,理解其在提高数据库连接管理效率和可维护性方面的优势。知识目标5深入理解JDBC的概念、体系结构和工作原理,清晰掌握其在Java数据库编程中的核心地位。知识目标1深刻理解事务处理的概念、特性(ACID)以及在JDBC中的实现方式,同时掌握异常处理机制,能够准确捕获和处理数据库操作过程中可能出现的各种异常。知识目标401040205熟练掌握各种数据库操作的SQL语句,如数据的插入、查询、更新和删除(CRUD),以及数据库表的创建、修改和删除等。知识目标3统了解数据源的配置与应用,掌握使用数据源(如JNDI数据源)获取数据库连接的方法,理解其在提高数据库连接管理效率和可维护性方面的优势。知识目标603065.0教学分析能够独立编写完整的JDBC程序,实现与各种关系型数据库(如MySQL、Oracle、SQLServer等)的连接、数据操作和结果处理,确保程序的正确性和高效性。能力目标1熟练运用JDBC核心API解决实际数据库操作问题,如优化SQL查询性能、处理大数据量结果集、避免SQL注入等安全问题。能力目标2能够根据具体业务需求,合理设计和实现数据库事务,确保数据的完整性和一致性,同时具备处理事务失败和回滚的能力。能力目标3掌握数据源和数据连接池的配

温馨提示

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

评论

0/150

提交评论