WEB-02

1.JSP

1.1 JSP的概述

1.1.1 什么是JSP

在这里插入图片描述
JSP:Java Server Pages(Java服务器端页面),其实就是在HTML中嵌入Java代码

1.1.2 为什么学习JSP

SUN公司提供了动态网页开发技术:Servlet。Servlet本身有一些缺点,SUN公司发现了这些问题,推出了一个新的动态网页开发技术JSP。

Serlvet的缺点:

  • Servlet需要配置,不方便维护
  • Servlet很难向页面中输出HTML页面内容

1.1.3 JSP的运行原理分析

在这里插入图片描述
JSP文件翻译成Java文件(Servlet文件),将这个Java文件编译生成class文件,运行class文件。

1.2 JSP的脚本元素

1.2.1 JSP的脚本元素概述

JSP = HTML + Java代码 + JSP自身

JSP的脚本元素就是再JSP中嵌入Java代码

1.2.2 JSP的脚本元素的分类

1.2.2.1 声明标签
  • 语法:<%! 变量或方法声明 %>
    写在这个脚本中的代码,翻译成Servlet内部的成员变量或成员方法。
  • 用法:
    在这里插入图片描述
1.2.2.2 表达式标签
  • 语法:<%= 表达式 %>
    写在这个脚本中的代码,翻译成方法内部的out.print();当中的内容。
  • 用法
    在这里插入图片描述
1.2.2.3 程序代码标签
  • 语法:<% 程序代码 %>
    写在这个脚本中的代码,翻译成方法内部的局部变量或方法内部的代码片段。
    经常使用
  • 用法:
    在这里插入图片描述

之所以这种经常使用而声明变量很少使用是因为Servlet线程很不安全的,所以定义了全局变量容易导致线程不安全。

1.3 JSP的开发模式之MVC模式

1.3.1 JSP开发模式

1.3.1.1 动态网页开发模式的发展

在这里插入图片描述

1.4 开发中的路径问题

1.4.1 路径问题概述

提供一些页面,在页面中会提供连接或者表单,当点击链接或者表单的时候需要进行提交,提交的Serlvert中。从页面向Servlet发送请求的地址(路径)应该如何编写。

1.4.2 路径的分类

相对路径

  • 相对路径的写法:
    相对路径不是以 / 开头的。
    在这里插入图片描述
    直接写ServletDemo1或者是./ServletDemo1意思是在但当前目录下进行查找访问

在这里插入图片描述
在上一级目录下进行查找访问

绝对路径(通常使用)

  • 绝对路径的写法:
    通常以 / 开始的路径
    在这里插入图片描述

使用绝对路径,不需要关心当前文件和要请求的文件的相对位置的关系!!

  • 注意:
    ① 绝对路径分成服务器端路径和客户端路径
    ② 客户端路径 需要带工程名
    ③ 服务器端路径 不需要带工程名

1.5 案例

1.5.1 案例需求

提供登陆页面,用于用户登录(用户名和密码需要查询数据库)。如果登陆失败,需要回到登录页面(给出提示信息)。如果登陆成功,页面进行跳转,在成功页面上显示登录成功的总人数。

在这里插入图片描述

1.5.2 Request作为域对象存取数据

在这里插入图片描述

1.5.2.1Request作为域对象的作用范围

Request对象其实就是从客户端浏览器向服务器发送的一次请求信息的封装。那么实质上向Request中所保存的数据有效期也是一次请求范围

一次请求范围:从客户端浏览器向服务器发送一次请求,服务器针对这次请求对浏览器做出响应。当服务器做出相应之后,请求对象就销毁了,保存在其中的数据就无效了。

1.5.3 页面跳转

请求转发 和 重定向 都可以完成页面的跳转

1.5.3.1 请求转发

写法:
通过ServletRequest对象获得RequestDispatcher对象。
在这里插入图片描述

再根据RequestDispatcher中的forward方法进行请求转发。
在这里插入图片描述
代码实现:
在这里插入图片描述
路径方面有些特殊,需要格外注意

1.5.3.2 重定向

通过HttpServletResponse对象中的以下方法

写法:

在这里插入图片描述
代码实现:
在这里插入图片描述

1.5.3.3 请求转发和重定向区别

原理
在这里插入图片描述
区别总结

  • 请求转发是一次请求一次响应,而重定向是两次请求两次响应。
  • 请求转发地址栏不会变化,重定向地址栏发生变化
  • 请求转发路径不带工程名,重定向需要带工程名路径。

在这里插入图片描述
在这里插入图片描述

  • 请求转发只能在本网站内部,重定向可以定向到任何网站。

由于Request域只作用于一次请求范围,所以若使用Request储存数据,就只能使用请求转发。

1.5.3.4 代码演示请求转发和重定向区别

在这里插入图片描述

  • 注意:
    如果需要使用request进行值传递,需要通过请求转发完成。如果页面需要调整到其他网站上必须使用重定向。

1.5.4 案例准备-MVC的准备

在这里插入图片描述

1.5.5 案例准备-创建数据库

1.5.6 案例准备-项目环境搭建

在这里插入图片描述

1.5.7 案例准备-引入相关资源

1.5.7.1 引入相关jar包
  • MySQL数据库驱动包
  • C3P0连接池所需jar包
  • DBUtils开发的jar包
    在这里插入图片描述
1.5.7.2 引入C3P0连接池配置文件

在这里插入图片描述
放到src下即可自动加载

1.5.7.3 引入JDBC开发的工具类

在这里插入图片描述
由于使用的是JDBC,其中自带释放资源方法,所以可以将release方法删除。

1.5.8 案例代码-登陆界面实现

在这里插入图片描述

1.5.9 案例代码-登陆代码实现

登录代码实现流程
登陆页面(login.jsp) → 登录的Servlet(LoginServlet),在这个Servlet中需要接收数据,将这个数据封装到一个JavaBean中,调用另一个JavaBean处理数据。根据处理结果进行页面跳转。

登录代码实现

  • 第一步:在controller包下创建LoginServlet
  • 第二步:在domain下创建一个User类,用于封装数据
  • 第三步:在model包下创建一个UserModel类,用于处理数据
  • 第四步:根据处理结果进行页面跳转

此处注意:
我们所使用的jar包一定要放在WEB-INF下的lib里然后再导包,不然会出现500错误org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

1.5.10 案例代码-错误信息回显

在这里插入图片描述

1.5.11 案例代码-记录登陆成功人数分析

服务器初始化的时候,初始一个总人数为0。将这个值保存到一个作用范围尽量大的域对象中。(ServletContext域中)
在这里插入图片描述
在登录成功之后,从域中将这个值获取到,进行+1的操作。将这个值存回到ServletContext域中。

在成功页面上从SerlvetContext域中获取值并且显示到页面上。

服务器初始化的时候: Servlet生命周期中有一个init方法,在Servlet被创建的时候执行(第一次访问)。但是可以配置启动时加载。这个init可以在登录的Servlet中写,也可以创建一个InitServlet来专门进行初始化。

1.5.12案例代码-记录登陆成功人数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意: 在最后的success.jsp界面中调用getServletContext()方法,会因服务器版本不同而调用方法不同:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值