Day33_servlet和jsp

1.servlet使用注解

@WebServlet(“上下文路径”)
在这里插入图片描述
注意:
使用注解前,配置web.xml false表示启动注解
在这里插入图片描述

2.servlet-请求转发

  • 地址栏没有变化【因为只发送了一次请求(多个Servlet用的是同一个请求对象)】
  • 请求数据相同(同一个请求对象,所以请求信息相同)
  • 转发到最后的响应对象,才会生效(除非include包含方式转发)
  • forward(转发)不可以跨域(项目)访问【现在访问的是自己的网站,不能从自己网站的内部,直接跳到别的网站】
  • 可以访问到 WEB-INF中的资源(因为在项目里)
    ①WEB-INF里面的资源是安全的,不能直接从外部(浏览器)直接访问
    ②通过内部程序来访问WEB-INF中的资源
    req.getRequestDispatcher("/WEB-INF/inf.html").forward(req, resp);
    /代表 了webapp项目根路径,必须写

3.servlet-重定向

  • 地址会发生变化(请求先到a,之后重定向,出去项目外边,重新进来,发送了第2次请求)
  • 不是同一个请求对象:请求信息不一样(请求头不共享)
  • 响应依然是最后一个BServlet
  • 可以跨域访问,因为重定向是去了项目外面,重新发了一个请求,不在项目内部
  • 重定向不能访问WEB_INF的资源文件 (因为已经出去了项目外,不能直接访问WEB-INF内的资源)

4.请求转发和重定向的区别

请求转发重定向
同一个请求对象不是同一个对象
地址不会变化地址会变化
请求信息相同重定向后请求信息不用(另外一个请求对象)
不可以跨域访问(网站内)可以跨域访问(网站外)
可以直接访问WEB-INF下的资源不可以直接访问WEB-INF下的资源

5.请求包含(了解)

req.getRequestDispatcher("/include/b").include(req, resp);
两个Servlet都会响应

6.作用域对象

作用域对象的作用:通过作用域对象让不同Servlet共享数据
4大作用域对象:

  • pageContext 不会用 当前页面存在

  • Request : service方法传递的请求对象 http无状态,每次请求相互独立存在

  • Session session = Req.getSession(); 同一次回话时存在,除非浏览器断开连接

  • Application ->其实是ServletContext对象 同一次应用时存在,除非服务器关闭

ServletContext(上下文路径对象)获取4种获取方式:
在这里插入图片描述
作用域对象存取数据
作用域对象.setAttributer(“list”,list)

使用Request对象时:
请求转发方式可以实现数据不同servlet数据共享
重定向时,下一个servlet取不到上一个servlet存取的数据(可通过Session和ServletContext实现)
在这里插入图片描述

7.ServletContext对象的介绍

表示上下文对象,也是Application-ServletContext
获取方式四种:
在这里插入图片描述
ServletContext常用方法
getContextPath()//拿到上下文路径 如:/xx
getRealPath(“/”);拿到真实路径–(以后做上传下载可以使用) 项目真实(绝对路径)
getInitParameter(“encoding”);//拿到初始化参数(只能拿到全局里面的参数信息)

8.Jsp

Servlet:接收数据,获取数据,
Jsp:展示数据

jsp是一种类似html的文件,本身也是一个servlet
Html可以拖到浏览器直接运行
Jsp必须开启服务器才能在浏览器执行,服务器会对jsp进行编译

Jsp原理
jsp继承了HttpServlet的一个子类
Jsp其实也是一个servlet,他会将jsp页面生成一个Java文件,里面有一个类似service的方法_jspService方法
Jsp语法
Jsp注释
<%-- 注释内容–%>页面源代码看不见

页面源代码能看见

<%在_jspService内部的java代码%>
<%= java代码获取值的表达式 %>
<%! 在_jspService外面,用于定义成员变量和成员方法 %>

JSP三大指令
Page : 页面指令
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
errorPage="/myerror.jsp" :如果当前页面出错,就跳转到对应的页面
isErrorPage=“true” :这个页面是否是错误页面(当我们要在页面上直接使用exception的时候就可以加上它)在错误页面写

Include : 包含指令

当每个页面都有导航的时候,我们只需要使用一个,这个时候就可以使用包含指令:
在这里插入图片描述
在这里插入图片描述
Taglib:标签指令

九大内置对象

  • Request
  • Response
  • pageContext
  • Session
  • Application
  • Config
  • Out
  • Page

这9个对象在_jspServlet方法内可直接使用,也就是在jsp中可通过<%%>和<%=%>访问
其中包含了四大作用域对象在里面
Request
pageContext
Session
Application–>ServletContext

Jsp动作元素
只了解包含include

静态包含<%@ include file="/include/b.jsp" %>
动态包含<jsp:include page="/include2/b.jsp"></jsp:include>

包含的时机不同!!
静态包含先把页面包含进来,再翻译成java代码!!(只有一个文件)
动态包含先都编译成java代码,再将内容进行包含!!(有多个文件)

什么时候使用静态包含,什么时候使用动态包含?
如果包含的是静态页面(html),那么使用静态包含
如果包含的是动态网页(jsp),那么使用动态包含

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值