文章目录

  • 一、 JavaWeb 概述
  • 二、 Web服务器
  • 三、 Tomcat服务器的安装配置
    • 1 Tomcat的下载
    • 2 Tomcat服务器需要JDK的支持
    • 3 介绍一下Tomcat的目录结构
  • 四、 servlet技术
    • 1 Servlet是sun公司提供的一门用于开发动态web资源的技术。
    • 2 使用开发工具开发一个HelloServlet
    • 3 servlet的调用过程
    • 4 servlet的配置细节
    • 5 HttpServletRequest对象
    • 6 HttpServletResponse对象
    • 7 ServletConfig和ServletContext对象
    • 8 会话技术
  • 五、 JSP技术
    • 1 JSP介绍
    • 2 编写JSP以及JSP的文档结构
    • 3 JSP页面中的java代码
    • 4 JSP页面中的指令
    • 5 JSP页面中的注释
    • 6 基于MVC的设计模式,使用Servlet+JSP完成ems项目
    • 7 JSP中的隐含对象(隐式对象)
    • 8 四大域对象
    • 9 EL表达式和JSTL标准标签库
    • 10 Servlet过滤器
    • 11 监听器
  • 六、 当当网项目
    • 1 代码架构
    • 2 功能实现

一、 JavaWeb 概述

(客户端) Client /Server架构: qq 微信

(浏览器端) Browser/Sever架构:

二、 Web服务器

学习Web开发服务器是必不可少的,Web开发需要使用的服务器软件:

\1. Weblogic 是BEA公司的产品,也是目前web开发使用最广泛的服务器

\2. WebSphere 是IBM公司的产品

\3. Tomcat 是中小型的应用系统中使用的比较广泛,开源免费的

三、 Tomcat服务器的安装配置

1 Tomcat的下载

下载地址:http://tomcat.apache.org/

(1) Tar.gz文件是linux操作系统的版本

(2) Zip文件是windows操作系统下的压缩文件,是Tomcat的免安装版本

64-bit Windows zip 是windows操作系统的压缩版本

(3) 32-bit/64-bit Windows Service Installer 是操作系统的安装版

2 Tomcat服务器需要JDK的支持

Tomcat5 JDK4以上

Tomcat6 jdk5以上

Tomcat7 jdk6以上

3 介绍一下Tomcat的目录结构

(1) Bin目录- 存放Tomcat启动的文件命令

(2) Conf 目录- tomcat的配置文件,最重要的是sever.xml

(3) Webapps 目录 -存储web项目

四、 servlet技术

1 Servlet是sun公司提供的一门用于开发动态web资源的技术。

Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

1、编写一个Java类,实现servlet接口。

2、把开发好的Java类部署到web服务器中。

按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

3.使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2 使用开发工具开发一个HelloServlet

(1) 新建一个web项目

(2) 新建包,在包下创建HelloServlet类

(3) 让Helloservlet去继承Httpservlet,调出service方法,然后在service方法中完成服务器要完成的功能 (HttpServelt是java提供的,具有接受请求和相应的功能,HelloServlet继承以后,作为子类也具有这些功能了)

(4) 在Web.xml文件中配置HelloServelt

(5) 将Tomcat服务器部署到myeclipse开发工具中,如果部署成功以后,会在weapps中发现部署的web项目

(6) 打开浏览器访问

http://localhost:8080/web项目/url地址http://localhost:8080/servlet/hello

3 servlet的调用过程

(1) 在浏览器地址栏输入地址回车的时候,会向服务器发送请求

(2) 服务器端先检查web应用中的web.xml文件,会根据配置(url)找到哪个servlet来执行(根据url找到servlet-name,根据这个找到相应的包内,执行)

(3) Servlet执行,service方法就会执行

浏览器->服务器->浏览器

B->S->DB->S->B

4 servlet的配置细节

(1) 基本配置

一对可以对应多对

(2) 星号通配符的使用

可以使用*配置

在输入时*可以用其他的任何字符代替

① *.+内容 的配置

*.do</url=pattern> 路径最后以.do结尾

② /开头 以/*结尾的路径写法

/test/*</url=pattern>

http>//localhost:8080/servlet/test/xx

web名/url路径

(3) 缺省/默认 servlet

当没有对应的url-pattern时,可以执行缺省servlet,如果不配置缺省servlet,就报404错误。

/

5 HttpServletRequest对象

获取浏览器端发送过来的请求包含的信息/数据

(1) 通过request对象来获取客户端相关的信息

(2) 通过request对象获取请求参数

1)request.getParameter(name) à value

​ localhost:8080/servlet/registe?username=a&pwd=b

​ name=value方式传值

2)request.getParameterValues(name) 返回一个String[]数组

​ 根据name获取多个value的值

3)request.getParameterNames() 返回Enumeration[]枚举类型

​ 获取所有参数中name的值

(3) 通过request对象设置参数中的中文乱码问题(RequestDemo2.java)

出现乱码的原因:

​ 从浏览器端提交表单的数据到服务器端,浏览器端的页面设置的编码格式一般是utf-8编码。Tomcat服务器默认的编码格式是ISO8859-1编码,该编码中没有中文

1)get请求处理中文乱码的方式

getBytes(“iso8859-1”) 解码

String(bs,“utf-8”) 编码

​ //先将字符串以ISO8859-1解码获得字节,再将字节重新以utf-8进行编码

​ //解码获取字节:

byte[] bs=strName.getBytes(“iso8859-1”);

​ //以utf-8重新编码

​ /*

​ * new String(参数1,参数2)

​ * 参数1:将哪些字节生成新的字符串

​ * 参数2:以什么编码格式生成新的字符串

​ */

String ss=new String(bs,“utf-8”);

2)post请求处理中文乱码的方式

request.setCharacterEncoding(“utf-8”)

(4) 请求转发(不带有请求包含)

1)概念:服务器端的servlet可以将未完成的工作交给下一个组件(servlet或者jsp)继续完成

2)特点:转发为了实现资源的跳转,浏览器地址栏的内容不会发生变化。不管转发给几个组件完成,浏览器地址栏看到的始终是第一个组件的地址

3)代码执行

① 获取转发器

RequestDispatcher rd=request.getRequestDispatcher(“url-pattern地址”);

② 转发

rd.forward(request, response);

(5) 请求转发 – 实现请求包含

1)概念:访问ServletA,由Servlet请求转发给ServletB,如果是实现的请求包含的转发,ServletA会将ServletB包含进来,由A和B共同处理这个请求

2)代码执行

① 获取转发器

RequestDispatcher rd=request.getRequestDispatcher(“url-pattern地址”)

② 转发 – 请求包含

rd.include(request, response);

(6) request对象可以作为域对象来使用

1)域对象:一个对象具有可以被看见的范围,可以在域对象中存储资源,实现资源的共享

2)域:指的是作用域范围,request作为域对象的作用域范围是一次请求。一次请求中可以使用request实现资源共享

3)代码实现:

request.setAttribute(String name, Object obj);

往request域对象中存储数据,把obj存储到request中,命名为name

request.getAttribute(String name);

返回Object obj

6 HttpServletResponse对象

HttpServletRequest对象接收浏览器发送过来的请求

HTTPServletResponse对象向浏览器端响应

(1) 获取输出流,向浏览器端(网页)输出内容

PrintWriter pw=Response.getWriter();

pw.println(“”);

(2) 设置响应头

response.setHeader(String name, String value);

1)设置浏览器显示中文的编码

2)定时刷新–实现一段时间后页面的自动跳转

(3) 设置中文显示在页面中的编码

response.setCharacterEncoding(“编码”);

指定服务器向浏览器端发送数据时使用的编码

response.setContentType(“text/html;charset=编码”);

设置浏览器端(页面)显示中文的编码

(4) 重定向

response.sendRedirect(“路径”);

  1. 重定向概念:

用于服务器内部的资源跳转,也可以用于不同应用和不同服务器之间的跳转;

浏览器地址栏会发生变化,两次请求;

当一个组件已经完成了,只是单纯的跳转到下一个组件,选择使用重定向

  1. 转发概念:

用于服务器内部的资源跳转,但是只能是同一web应用中的资源跳转;

浏览器地址栏不会发生变化;

一个组件还没有完成,需要交给下一个组件继续完成,还需要传参数,选择使用转发

7 ServletConfig和ServletContext对象

(1) ServletConfig对象 config:配置

代表当前Servlet在web.xml文件中配置信息对象

  1. 获得ServletConfig对象

ServletConfig scf=this.getServletConfig();

ServletConfig scf=get.ServeletConfig();

  1. 功能

① 获取当前Servlet在web.xml文件中配置的初始化参数

​ xx

​ yy

通过getInitParameter(name)获得value

通过getInitParameterNames()获取所有的name

–> Enumeration容器

② 获得ServletContext对象

ServletContext sct=scf.getServletContext();

(2) ServletContext对象 context:上下文

代表当前web应用对象

在web应用被加载后,服务器会立刻创建当前web应用的ServletContext对象,该对象创建之后会一直留在内存中,直到服务器关闭或者web应用被移出服务器

ServletContext会随着web应用的销毁而销毁

  1. 如何获取ServletContext对象

ServletContext sct=this.getServletContext();

ServletContext sct=getServletContext();

  1. 功能:

① 获得web应用的初始化参数

在当前Servlet中配置的参数信息,只能在当前Servlet中通过ServletConfig对象来获取,在其他的Servlet中无法获取这些参数信息

需求:希望配置的初始化参数能被所有的Servlet共享访问,希望参数属于整个web应用,因此可以将初始化参数配置到web.xml的根目录下,可以使用ServletContext对象来获取

② ServletContext可以作为域对象来使用

可以作为域对象存储数据,实现数据的资源共享;

ServletContext的作用域范围是整个web应用;

ServletContext可以在整个web应用中实现资源共享,request只能在一次请求中实现资源共享

setAttribute(String name, Object obj)

getAttribute(String name) – > obj

③ 获得Web资源的路径

sct.getRealPath(“”) – > String path路径

根据所在的环境,拼接当前web应用和磁盘目录的一个完整路径。这种路径为动态获取,换个环境时也能够获取正确的路径

8 会话技术

(1) 什么是会话?

用户打开一个浏览器,访问服务器端多个web资源,然后关闭浏览器,整个过程称之为一个会话

(2) 如何保存会话过程中产生的数据?

每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,这些数据 有时候需要保存下来。比如用户登录过后,应该保存一个用户的状态,即会话结束前(关闭浏览器前),表示用户一直是登录状态,并且不同的用户之间的登录状态应该互不影响。

域对象:request ServletContext

request域太小,request是一次请求中实现资源共享(保存数据、获取数据)。在多次请求响应中都是新的request请求,之前存入request域中的数据在一次请求结束后也就被销毁了。

ServletContext域太大,所有的用户都可以操作这个域,太混乱了。

(3) Cookie技术

  1. Cookie概念:

Cookie的原理是通过Set-Cookie响应头和Cookie请求头将会话中产生的数据保存在浏览器端。

原理:

​ 浏览器请求服务器,服务器将需要保存的数据通过Set-Cookie响应头发送到浏览器端;浏览器端接收到这些数据会保存到浏览器的内部

​ 当浏览器再次请求服务器的时候,可以通过Cookie请求头将上次保存的数据再带给服务器,服务器通过Cookie头来获取数据。通过这种方式可以保存会话中产生的数据

​ Cookie技术是将需要保存的数据保存在了浏览器端,是一种浏览器端(客户端)技术,每个客户端各自保存自己的数据。再次访问服务器端的时候,客户端会各自带着各自的数据,这样就不会产生混乱的现象。

  1. Cookie的常用方法

① 创建Cookie

Cookie c=new Cookie(String name, String value);

② 添加Cookie

response.addCookie();

将name=value保存到Cookie中,Cookie保存到浏览器中

③ 获取Cookie

Cookie[] cs = request.getCookies();

④ 设置Cookie的存活时间

setMaxAge(秒);

如果不设置Cookie的存活时间,默认情况下:在关闭浏览器的时候,Cookie会将存储的数据销毁。

setMaxAge()可以设置Cookie的存活时间,在有效时间内,即使是关闭了浏览器,Cookie保存的信息还会一直存在

⑤ 设置Cookie的存储路径

set.path(String path)

如果没有设置路径,默认是当前发送Cookie的Servlet所在的路径(/servlet)

如果设置了路径,则在设置的路径及其子路径下可以正常使用Cookie

⑥ 删除Cookie

java中没有直接删除Cookie的方法

如果想删除一个Cookie,可以从服务器向浏览器发送一个同名、同path的Cookie,只需要将Cookie的maxAge设置为0即可

(4) Session技术

  1. 概念:

Session技术是将会话中产生的数据保存在服务器端,是一种服务器端的技术,(Cookie是浏览器端的技术)

浏览器访问Web服务器端的时候,服务器会为每一个浏览器单独创建一个Session对象,该对象有一个唯一的ID属性,称为SessionID,并且服务器端会将SessionID发送给浏览器端,会话中产生的数据是保存在服务器端的Session中。当浏览器再次访问Web服务器时,会将SessionID发送给服务器端,服务器会根据SessionID来找Session对象

  1. Session的常用方法

① 获取Session对象

HttpSession session=request.getSession();

② 使用Session对象存值或者取值

session.setAttribute(name, value); //存值

注意:Session的默认有效时间是30分钟,即:当存入一个值后,30分钟之内有效

session.getAttribute(name); //根据name取出对应的value

③ 设置Session的时间

Session默认存活时间是30分钟

在web.xml根目录下配置

​ 1

④ 销毁Session

session.invalidate();

(5) Cookie和Session的比较

  1. Cookie是将会话中产生的数据保存在浏览器端,是浏览器端的会话技术;

Session是将会话中产生的数据保存在服务器端,是服务器端的会话技术

  1. Cookie所保存的信息的时间是比较长的,但是安全性不高。随着用户的操作,Cookie可能会被清空,Cookie中存的数据也就没有了;

Session通常保存信息的时间比较有限,但是安全性较高。因为Session是将数据保存在服务器端,不会随着用户的操作导致Session中存储的数据意外丢失。

JavaSE C/S结构 桌面级程序应用

​ java基础+java高级

JavaEE B/S结构 互联网程序应用

​ B:HTML CSS JS jQuery Ajax jsp

​ S:数据库 servlet技术 框架

五、 JSP技术

1 JSP介绍

Java Server Page == java服务器端的页面技术

JSP是由sun公司提供的动态Web资源的开发技术,看起来非常像HTML,但是可以在JSP中写java代码,而HTML不可以

JSP的出现主要是为了解决Servlet在响应到页面内容时不合适、繁琐的问题

HTML本质是文档,只能写标签,通过标签显示出来一个页面的内容

CSS写在HTML文档中,负责样式

JavaScript写在HTML文档中,负责交互

JSP包含HTML、CSS、JavaScript、Java代码等

2 编写JSP以及JSP的文档结构

step1:写一个以.jsp结尾的文件

step2:在.jsp结尾的文件中,包含如下内容:

​ (1)HTML(CSS、JavaScript、jQuery)

(2)java代码

(3)注释

(4)指令

(5)隐含对象 9个

3 JSP页面中的java代码

两种方式:

​ (1)jsp表达式写法

​ 语法:<%= 内容 %>

​ 内容:变量和运算符组合的表达式、常量值、有返回值的方法等

功能:将内容输出在页面上,“=”是输出的功能

(2)jsp脚本片段写法

​ 语法:<% 内容 %>

​ 内容:java代码块/代码片段

​ 功能:通过代码片段完成的一个功能

4 JSP页面中的指令

语法:<%@指令名 属性1=值1 属性2=值2 … %>

(1) page指令

pageEncoding=“编码” 设置jsp文件保存中文时的编码

import="" 在jsp页面中导包

(2) include指令

功能:

能够将其他页面包含进来,可以是jsp文件,也可以是HTML文件

语法:<%@include file=“xx文件” %>

(3) taglib指令

语法:<%@taglib url=" " prefix=" " %>

JSTL标准标签库

5 JSP页面中的注释

(1) <!—注释的内容 -->

​ html注释,注释中的内容包含java代码,这些java代码会被执行

(2) <%-- 注释的内容 -->

JSP注释,如果注释的内容中包含java代码,这些java代码会被忽略

6 基于MVC的设计模式,使用Servlet+JSP完成ems项目

MVC设计模式

M:Model模型层(com.ldu.dao) Dao工厂

(Dao方法:提供方法,这些方法完成相应的业务功能)

数据库的相关操作

V:View视图层(WebRoot) JSP技术(html css….)

C:Controller控制层(com.ldu.web) Servlet技术

7 JSP中的隐含对象(隐式对象)

可以不需要在JSP中预先定义就可以直接使用,共九个

(1) request 请求信息

(2) response 相应信息

(3) out 输出的数据流

(4) session 会话

(5) application 全局的上下文对象

(6) pageContext JSP页面的上下文

(7) page JSP页面本事

(8) config Servlet的配置对象

(9) exception 捕获网页异常

(1) request隐含对象 (代码见jsp/MyJsp01-MyJsp05)

  1. 获得请求参数

  2. 作为域对象存取值

  3. 获取Cookie对象

(2) response隐含对象 (代码见jsp/MyJsp06-MyJsp07)

  1. 重定向

  2. 处理HTTP文件头

  3. 设置网页自刷新

response.setHeader(“refresh”, 时间);

response.setHeader(“refresh”, “1”); //每秒刷新一次

  1. 定时跳转页面

response.setHeader(“refresh”,“时间;URL=地址”);

response.setHeader(“refresh”,“5;URL=http://www.baidu.com”); //5秒后自动跳转到百度

(3) application隐含对象 (代码见jsp/ MyJsp08-MyJsp09)

application对象用于保存所有应用程序的共有数据,属于整个Web应用共享;

在服务器启动时自动创建,在服务器停止时自动销毁;

和ServletContext的功能是一样的

  1. 在web.xml文件配置全局参数,使用application对象获取

  2. 作为域对象存取值

application.setAttribute();

application.getAttribute();

(4) pageContext隐含对象 (代码见jsp/ MyJsp10-MyJsp11)

获取页面上下文对象,可以通过pageContext在JSP页面中获取request、response等对象。(在实际开发应用中使用较少,因为request、response本事也是隐含对象,直接使用就可以)

一般使用pageContext作为域对象来使用

pageContext.setAttribute();

pageContext.getAttribute();

pageContext域对象存取值只能在当前页面中获取,即作用域的范围是当前页面

域对象一定会有setAttribute和getAttribute

(5) session隐含对象 (代码见jsp/MyJsp10-MyJsp11)

域对象:存取值

作用域:一次会话中的范围(从打开浏览器开始到关闭浏览器结束,默认有效时间是30分钟)

session.setAttribute();

session.getAttribute();

作用域范围排序:application > session > request > pageContext

(6) page隐含对象 (代码见jsp/MyJsp12)

page对象代表JSP本身,只有在JSP页面内才是合法的。可以看作this关键字的别名。使用很少,了解即可

(7) config隐含对象

用于web.xml的配置信息,和ServletConfig功能一致

(8) exception隐含对象 (代码见jsp/MyJsp13-MyJsp14)

exception对象用来处理JSP文件执行时发生的所有异常。需要在page指令设置isErrorPage的属性值为true才可以使用exception对象

<%@page isErrorPage=“true” %> 使用exception对象

<%@page errorPage=“页面地址” %> 设置错误信息显示的页面

8 四大域对象

(1) pageContext、request、session、application是JSP页面的四大域对象。

(2) 作用域范围由大到小:

application > session > request > pageContext

​ application作用域:有效范围是整个Web应用(从应用启动到应用结束)

​ session作用域:有效范围是当前会话(从浏览器打开到浏览器关闭,默认有效时间是30分钟)

​ request作用域:有效范围是一次请求跨越的两个页面,一般是需要结合“转发”来实现

​ pageContext作用域:有效范围是仅限于用户请求的当前页面

(3) 什么时候用什么域对象?

如果数据只是在jsp页面中使用,就用pageContext

如果数据需要在转发时传递,就用request

如果数据现在需要用,过一会还需要用,就用session

如果数据现在是我需要用,过一会别人也需要用,就用application

9 EL表达式和JSTL标准标签库

(1) 为什么要用EL表达式和JSTL标准标签库

在JSP中嵌入了大量的java代码,增加了页面内容的复杂度,使页面不够简洁,不方便代码的维护,因此sun公司制定了JSP标签(类似于HTML标签)代替java代码。Apache组织开发了一套标签库,被sun公司整合后,称为标准标签库(JSTL)

JSTL标准标签库可以配合EL表达式一起使用,减轻JSP页面的复杂度,代替java代码,使JSP页面更方便维护

(2) 什么是EL表达式

EL表达式是一套简单的计算规则,用于给JSP标签(JSTL标准标签库)的属性赋值;也可以单独使用,用于计算输出

EL表达式可以单独用,也可以EL+JSTL一起用

语法:${….}

(3) EL表达式的功能 (代码见jsp/EL01)

  1. 输出简单的运算结果

算术运算 + - * /

逻辑运算 && || !

关系运算 > >= < <= != ==

empty运算:判断是否为空

  1. 获取请求参数 (代码见jsp/EL02)

EL表达式可以获得请求中的参数

语法:${param.key} 根据一个key获得一个value值

​ ${paramValues.key} 根据一个key获得多个value值

  1. EL表达式可以获得域对象中的数据 (代码见jsp/EL03)

JSP页面 el表达式

pageContext pageScope

request requestScope

session sessionScope

application applicationScope

setAttribute(key,value)

getAttribute(key) -->value

使用el表达式方式获取:

${key} --> value

${xxScope.key}–> value

  1. EL表达式获取JavaBean的属性

什么是JavaBean?

JavaBean是对一个类的叫法,该类需要符合一定的规范才叫JavaBean类

① 包含private修饰的私有属性

② 包含无参、有参构造方法

③ 包含对私有属性的get和set方法

(4) JSTL标准标签库

step1:导入standar.jar和jstl.jar

step2:使用taglib指令引入jstl标准标签库

  1.                                 <c:out>标签:用于输出内容到页面
    

输出常量

输出作用域中存储的数据

转义输出

输出默认值

  1.   <c:set>标签:设置标签
    

向四大域对象中增加域属性

向Map集合中增加、修改键值对

修改JavaBean的属性

  1.                                 <c:remove>标签:
    

用于删除Web域(四个域对象)中的属性

是单标签 <c:remove var="" scope=""/>

  1.                                 <c:if>标签:可以进行条件判断
    

执行后达到的效果和java的if语句比:

if(){}

if(){}else{}

  1.                                 <c:choose>标签:
    

实现多种分支情况的判断,类似于java代码中if….else if….else的语句结构

<c:choose>

<c:when></c:when>

<c:when></c:when>

<c:otherwise></c:otherwise>

</c: choose>

  1. <c:forEach>标签:循环

对集合中的数据进行循环迭代操作

指定循环次数反复执行的操作

  1. <c:forTokens>标签

用来浏览一字符串中所有的成员,其成员由定义符合所分隔

10 Servlet过滤器

(1) 什么是过滤器?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cn2nruVh-1621820159018)(file:///C:/Users/刘忠祥/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg)]

Servlet过滤器具有拦截客户端(浏览器端)请求的功能,Servlet过滤器可以改变请求中的内容来满足实际开发的需求。

实质上Servlet过滤器就是在Web应用服务器上的一个Web应用组件,用于拦截浏览器与目标资源(Servlet)的请求,并对这些请求进行一定的过滤处理后再发送给目标资源(Servlet)。

当Web服务器部署了过滤器之后,不仅浏览器端发送的请求会经过过滤器,并且请求发送到目标资源以后,请求的回应信息也同样会经过过滤器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4A6YMhf8-1621820159020)(file:///C:/Users/刘忠祥/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg)]

当一个过滤器不能满足实际业务需求的时候,可以配置部署多个过滤器进行处理,这样就组成了一个过滤器链

(2) 过滤器的创建与配置

  1. 写一个类实现Filter接口

这个类就变成了一个过滤器类

  1. 在web.xml文件中配置这个类

11 监听器

(1) 概念:

监听器是Servlet技术中的三大组件(Servlet、过滤器、监听器)之一

使用监听器来监听Web应用在执行过程中的相关事件,并进行对应的处理。

(2) 开发监听器的步骤

  1. 写一个类实现监听器接口

  2. 在web.xml文件中配置该类

(3) 监听三大作用域创建和销毁的监听器

JSP页面:pageContext request session application

Servlet: 无 request session ServletContext

  1. ServletContextListener监听器

负责监听ServletContext的创建和销毁

思路:写一个类实现这个监听器,在web.xml配置这个类

  1. HttpSessionListener监听器

负责监听session对象的创建和销毁

Servlet获取session:HttpSession session=request.getSession();

​ JSP:session隐含对象

  1. ServletRequestListener监听器

监听request对象的创建和销毁

  1. 监听三大作用域中属性增加、修改、删除的监听

ServletContextAttributeListener

HttpSessionAttributeListener

ServletRequestAttributeListener

六、 当当网项目

1 代码架构

M 模型层

com.ldu.dao – 业务(数据库)

​ com.ldu.entity – 存放JavaBean对象

V 视图层

WebRoot下 – 页面(jsp页面)

C 控制层

com.ldu.web – servlet

其他

com.ldu.test – 开发中测试用的

com.ldu.util – 工具包(DBUtil)

2 功能实现

(1) 首页

  1. 把所有的图书显示在首页上

① 数据库中用到的库、表和数据都准备好

② C 控制层 – Servlet

③ M 模型层 – Dao

④ V 视图层 – jsp页面

  1. 节省金额的小数位数处理一下,保留两位小数

//保留小数位数

DecimalFormat df=new DecimalFormat("#.##");

String s=df.format(23.564);

System.out.println(s);

  1. 实现分页查询的功能

BookListServlet类实现显示首页数据

BookListServlet1类实现上下页切换的功能

  1. 注册页面

验证码

邮箱、验证码的验证

  1. 登录页面

退出登录

  1. 购物车

  2. 正则表达式的语法:

① [abc] abc中任何一个字符

[^abc] 除了abc的任意字符

[a-z] 表示a到z中的任意一个字符

[a-zA-Z0-9] a-zA-Z0-9的任意一个字符

[0-9] 0-9任意一个数字

[\u4E00] 中文

[\u9FA5] 英文

② 预定义字符集

. 任意一个字符

\d 任意一个数字字符,相当于[0-9]

\w 单词字符,相当于[a-zA-Z0-9]

\s 空白字符

③ 数量(x表示字符)

X? 表示一个或0个

X* 表示0个或多个

X+ 表示1个或任意多个

X{n} 表示n个

X{n,} 表示n到任意多个(大于等于n个)

X{n,m} 表示n到m个

④ 邮政编码的验证

写法1:[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]

写法2:\d\d\d\d\d\d

写法3:\d{6} [0-9]{6}

⑤ 手机号的验证

+86 17860369321

0086 17860369321

(+86|0086)?(\s)?[0-9]{11}

即:+86或者0086出现0次或1次,加可有可无的空格,再加上手机号

⑥ Java中使用matches方法进行正则验证

matches(正则表达式); 返回Boolean类型的结果

把所有的图书显示在首页上

① 数据库中用到的库、表和数据都准备好

② C 控制层 – Servlet

③ M 模型层 – Dao

④ V 视图层 – jsp页面

  1. 节省金额的小数位数处理一下,保留两位小数

//保留小数位数

DecimalFormat df=new DecimalFormat("#.##");

String s=df.format(23.564);

System.out.println(s);

  1. 实现分页查询的功能

BookListServlet类实现显示首页数据

BookListServlet1类实现上下页切换的功能

  1. 注册页面

验证码

邮箱、验证码的验证

  1. 登录页面

退出登录

  1. 购物车

  2. 正则表达式的语法:

① [abc] abc中任何一个字符

[^abc] 除了abc的任意字符

[a-z] 表示a到z中的任意一个字符

[a-zA-Z0-9] a-zA-Z0-9的任意一个字符

[0-9] 0-9任意一个数字

[\u4E00] 中文

[\u9FA5] 英文

② 预定义字符集

. 任意一个字符

\d 任意一个数字字符,相当于[0-9]

\w 单词字符,相当于[a-zA-Z0-9]

\s 空白字符

③ 数量(x表示字符)

X? 表示一个或0个

X* 表示0个或多个

X+ 表示1个或任意多个

X{n} 表示n个

X{n,} 表示n到任意多个(大于等于n个)

X{n,m} 表示n到m个

④ 邮政编码的验证

写法1:[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]

写法2:\d\d\d\d\d\d

写法3:\d{6} [0-9]{6}

⑤ 手机号的验证

+86 17860369321

0086 17860369321

(+86|0086)?(\s)?[0-9]{11}

即:+86或者0086出现0次或1次,加可有可无的空格,再加上手机号

⑥ Java中使用matches方法进行正则验证

matches(正则表达式); 返回Boolean类型的结果

达内-JavaWeb考试复习相关推荐

  1. 西安邮电大学JavaWeb考试复习

    论述 MVC设计模式 MVC(model,view,controller),一种将业务逻辑.数据.界面分离的方法组织代码的框架.在改进界面及用户交互的同时,不用重写业务逻辑.MVC将传统的输入.处理和 ...

  2. 【Javaweb】【答卷】萌狼蓝天大二上学期期末Javaweb考试复习卷(一)

  3. JavaWeb 考试复习-简答题

    1.Servlet的功能主要有哪些? 创建并返回一个包含基于客户请求性质的动态内容的完整的HTML页面 创建可嵌入到现有HTML页面中的一部分HTML页面(片段) 与其他服务器资源进行通信,包括数据库 ...

  4. JavaWeb课程复习资料——用于突击考试总结

    环境使用: 系统:win10 开发工具:IntelliJ IDEA 2021以上版本 数据库:MySQL 需求jar包:mysql-connector-java-5.1.39.jar Tomcat版本 ...

  5. 计算机二级c语言复习计划,全国计算机等级考试二级C语言考试复习资料与复习计划以与考试要点.doc...

    -- ---- 全国计算机等级考试二级C语言考试复习资料及复习计划 一.C语言的特点 C语言是近年来非常流行的语言,很多人宁愿放弃已经熟悉的其他语言而改用C语言,其原因是C语言有优于其他语言的一系列特 ...

  6. 材料成型计算机模拟第三版,材料成型计算机模拟考试复习资料.doc

    材料成型计算机模拟考试复习资料 一.判断题(共5分)1. Anycasting是一款基于有限元原理的模拟铸造成型过程的数值分析软件. ( × ) 2. 相对于有限元法,有限差分法的弱项在于应力分析. ...

  7. 2018人工智能期末考试复习资料(一):学术篇

    机器之心知识委员会 机心通知函[2018]002号 2018 年人工智能专业期末考试复习资料:学术篇 各人工智能研究者.工程师.从业人: 2018 年是人工智能迅猛发展的一年,从技术研究到产业应用都取 ...

  8. 2014年全国计算机等级一级考试复习资料,2014年全国计算机等级一级考试复习资料..doc...

    2014年全国计算机等级一级考试复习资料 ?1.世界上第一台电子计算机是???ENIAC.??2.个人计算机属于?微型计算机.? ?3.计算机应用从大的方面来分,可以分为?数值处理?和?非数值处理?两 ...

  9. 计算机组成原理考试复习

    计算机组成原理考试复习 第一章(计算机系统概论) 第二章(运算方法和运算器) 第三章(存储系统) 第四章(指令系统) 第五章(中央处理器) 第六章(总线系统) 第七章(外围设备) 第八章(输入/输出系 ...

最新文章

  1. Windows Phone 7 Tips “.NET研究”(4)
  2. c++读取txt中每行的数据到数组中
  3. 杰出数据科学家的关键技能是什么?
  4. 二、1、怎么做都好做,没flag就抓包
  5. 折半查找的思想及源码_结构与算法(04):排序规则与查找算法
  6. qsort()函数详解
  7. keepalived+nginx实现高可用
  8. [Java in NetBeans] Lesson 06. Custom classes
  9. Linux x8664汇编,Linux Udis86 反汇编引擎使用
  10. 输入流与输出流的区别
  11. C++:VS2019调试dump文件
  12. 【.NET类库】通过SharpSocket进行TCP/UDP通信数据传输
  13. ubuntu 下的开发板的环境配置
  14. Teamviwer和向日葵使用
  15. 把PYTHON文件转换成exe的方法
  16. android sms 接收短信,Android SMS 短信操作
  17. Java小农养成记第二十三天
  18. https server
  19. VLAN的概念及配置
  20. 【MacOS】java环境配置

热门文章

  1. More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'
  2. SQL 保留2位小数的方法/四舍五入
  3. 企业数字化转型迫切,团队协同工具何以成为“杀手锏”?
  4. python BFS最短路径问题
  5. [待续]联想ThinkPadE420升级之路:英睿达(Crucial)MX500+XP开启AHCI模式+64位win10
  6. HIS(医院信息系统HospitalInformationSystem)
  7. 怎么给PDF文件进行压缩
  8. 编译原理—中间代码生成、布尔表达式翻译、短路计算、控制流语句翻译、条件语句、循环语句
  9. Android Http请求方法汇总
  10. linux SIGSEGV信号 内存访问错误 Segmentation fault