JavaWeb基础二

普通用户登录:
使用JSP重构:
重定向与转发
JSP简介、JSP页面元素、DHTM;静态内容声明,脚本段,表达式,注释,内置对象,指令
Web层共享数据基本思想、请求对象会话对象工作原理、会话对象创建及常用方法 1.使用JSP重构
1.跳转的实现
2.使用JSP重构主页面、登录页面
3.在登录页面中显示失败信息
4.在主页面中显示用户信息

1.1跳转的实现
Web资源跳转的两种方式
1.1.1重定向(站外跳转)
1.1.2请求转发(站内跳转)

重定向:接受到客户的请求后,返回给客户一个URL,使客户按照提供的URL重新发出HTTP请求,请求的方法为GET方法
在这里插入图片描述
在这里插入图片描述
注意:
重定向的Web资源可以是不同Web应用的资源
URL以/开始,相对于服务器域名

在这里插入图片描述
1.1.2:如何进行请求转发
-获取请求转发对象,使用HttpServletRequest的方法
RequestDispatcher getRequestDispatcher(String url)
-转发请求,使用RequestDi spatcher的方法
void forward(ServletRequest request, ServletResponse response)
注意:
getRequestDispatcher的参数用于定位转发后的Web资源,建议使用”/”开始,相对于上下文(Context Root)。转发的Web资源必须是同—Web应用下的资源

1.1.3重定向和请求转发的比较
相同点:
接收客户请求的是WebA,生成响应页面的是WebB
不同点:
请求与响应的次数
性能.
客户端地址栏URL变化
可以跳转的资源的位置

2.使用JSP重构
JSP:Java Server Page的缩写
JSP的好处:
-JSP中HTML的编写与维护更为简单
-能够使用标准的网站开发工具
-明确开发人员的职责分工:
●表示逻辑: Web开发人员不需掌握Java
●业务逻辑:Java开发人员不需使用Web页面
JSP的理想:
不包含业务逻辑
不包含Java代码

如何编写、执行JSP
JSP文件放到Web应用的目录下
不需要在web.xml文件中编写任何内容
部署时,需要将JSP正确的部署到服务器某一个应用当中
访问时,Web应用目录结构体系必须完整,至少要描述出根目录

JSP的翻译
在JSP处理请求之前,JSP页面被翻译为Servlet源文件:
{tomcat_ home} \work\Cata | ina\ | oca lhost\项目名\org\apache\jsp\hello_ jsp. java

JSP生命周期:
翻译
编译
加载类
实例化类
_jsplnit()调用
_jspService()调用
_jspDestroy()调用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.1JSP页面元素
脚本元素:
JSP页面:
静态内容:DHTML静态文本
指令:以<%@开始,以%>结束。比如:<%@ include file = “Filename” %>
表达式:<%=Java表达式%>
脚本段:<% Java代码%>
声明:<%!函数或方法%>
动作:以jsp:动作名开始,购jsp:动作侣>结束,比如: <jsp:include page- “Filename” />
EL表达式:${ expression }
自定义标签:<c:if test="*true" >Hello Custom Tag</c:if+>
在这里插入图片描述
2.2DHTML静态内容
-DHTML静态内容的语法格式:
HTML的语法
处理:原封不动地被写入响应的主体中
翻译:被翻译成输出流的语句形式,插入到_jspService()方法中,静态html内容作为输出的参数,执行与JSP代码的顺序相关
在这里插入图片描述
2.3JSP脚本元素语法
<%scripting element%>
脚本元素的分类:
JSP声明:<%! declaration%>
JSP脚本段<& javacode%>
JSP表达式<%= expression%>
JSP注释<&–comment–%>

2.3.1
JSP声明基本语法
<%! Java代码%>
处理:
1.按照Java的规范执行Java代码
2.翻译:Java声明在翻译时被直接接入到类中

JSP脚本段基本语法
<% Java代码%>
处理
被直接插入到_jspService()方法中

JSP表达式基本语法
<%=“Hello” %>
处理
Java表达式的值被写入响应的主体中
翻译:被翻译成输出流的语句形式,插入到_jspService()方法中,Java表达式的值作为输出参数

在这里插入图片描述
2.4JSP内置对象
request:当前的请求对象
javax.servlet.http.HttpServletRequest
response:当前响应对象
javax.servlet.http.HttpServletResponse
session:对应当前请求的客户会话对象
javax.servlet.http.HttpSession
out:对应当前响应对象的输出流
javax.servlet.jsp.JspWriter
application:Web应用对象
javax.servlet.ServletContext
pageContext:封装当前请求内此JSP页面信息的对象
javax.servlet.jsp.PageContext
page:指向页面自身的方式,相当于this关键字
java.lang.Object
config:与当前JSP页面的servlet对应的ServletConfig对象
javax.servlet. ServletConfig
exception:其他地方抛出的Throwable对象,仅当<%@ page is ErrorPage=“True”%>时有效
java.lang. Throwable

JSP指令:
用来设置和整个JSP网页相关的属性,控制JSP/Servlet的总体结构
JSP指令的语法格式:
<% DirectiveNmae[attr=“value”]*%>
三种JSP指令:
page:<%@ page session=“false” %>
include:<%@ include file=“menu/banner.jsp” %>
taglib:<%@ taglib prefix=“training” uri=’ www.neusoft.com" %>

page指令:
用于定义JSP页面的某些属性,翻译时起作用,作用在整个JSP文件,与放置的位置无关
说明:
在翻译时起作用,作用在整个JSP文件
位置无关,最好写在JSP的最前面
一个页面可以有多个page指令,但每个属性只允许出现一次

在这里插入图片描述
在这里插入图片描述
include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件,HTEM文件或者文本文件
<%@ include file= “login.jsp” %>

3.在登录页面中显示失败信息
3.1Web层共享数据的范围
应用对象:ServletContext
会话对象:HttpSession
请求对象:HttpServletRequest

共享数据的基本方法:
setAttribute()
getAttribute()
removeAttribute()

3.1.1请求对象:HttpServletRequest
在服务器截获请求后创建HttpServletRequest请求对象,在响应结束后销毁
获得HttpServletRequest对象
JSP的内置对象:request
在Servlet中doGet或dopost方法的参数
在这里插入图片描述
在这里插入图片描述
4.在主页面中显示用户信息
会话对象—HttpSession
session指的是在一段时间内,单个客户端与Web服务器的一连串相关的交互过程
会话对象的作用
保持同一个客户多次请求之间的联系
一个HttpSession对象唯一地属于一个用户
同一客户的多次连接共享同一个会话对象
在这里插入图片描述
4.2保持会话的方法
每个会话保持一个会话ID
使用Cookie
URL重写:在URL中保持会话ID

4.2.1URL重写管理会话
在参与同一个session操作的每个HTML页面和表单的URL中都保持会话ID信息
通过调用HttpServletRespone的encodeRedirectURL(String)方法对UR;追加jsessionid信息
URL重写示例
http:/ /host/ path/ file;jsessionid= 123

4.2.2会话对象的创建,获得
JSP的内置对象:session
在Servlet中,调用HttpServletRequest的方法
HttpSession getSession()
HttpSession getSession(boolean create)

void setAttribute(String key ,Object,value)
方法
说明
void setAttribute(String key ,Object
在session作用域中保存数据,键为value)
key,值为value
Object getAttribute (String key):
在session作用域查找键值为key的数
据对象的值
void removeAttribute (String key):
删除session作用域内键值为key的数
据对象
Enumeration getAttributeNames ():
返回session作用域内保存的所有数据对象的键值的集合
String getId():
返回HttpSession对象的JSessionID

4.3Cookie:
Cookie是Web服务器端发送到浏览器的简短文本信息,以后在访问同一个Web站点或域时,浏览器会豪无更改的地返回该文本信息
Cookie的问题(不可靠的存储):
隐私 安全
Cookie的作用:
保持,传递数据
Cookie的有效期:
临时Cookie 保存在磁盘
在这里插入图片描述
向客户端发送Cookie
创建Cookie对象
Cookie(String name,String value)
设置Cookie的最大时效,使用Cookie的setMaxAge方法
public void set MaxAge(int expiry)
将Cookie放入到HTTP响应报头,调用HttpServletResponse对象的addCookie方法
public void addCookie(Cookie cookie)

从客户端读取Cookie
调用HttpServletRequest的getCookies方法,直到找到感兴趣的cookie为止
public String getName()
调用cookie的getValue方法获取每个cookie的值
public String getValue()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值