从asp.net到jsp:3分钟看透Jsp&Servlet
lipiwang 2024-11-24 18:32 9 浏览 0 评论
零:JSP是谁?
话说故事的开头是这样的:JSP全名为Java Server Pages,其根本是一个简化的Servlet设计;后来的详细事情有请各位自便。美女→找→谷哥 or 帅哥→找→度娘
插播:如果还想精简继续提速;只需在目录导航中找点击实心五角星★标记的3个部分(内置对象和作用域、JavaBean、EL表达式)
一、Jsp凉菜
1、page 指令
Language : 用来定义要使用的脚本语言;在这里java是惟一默认合法的值,记住就行。
contentType:定义JSP字符的编码和页面响应的MIME 类型;
pageEncoding:Jsp页面的字符编码;
import:定义此JSP网页要使用哪些Java API或类;
示例:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
2、scriptlet 标签
通过scriptlet标签我们可以在Jsp里嵌入Java代码,主要以下三种:
① <%! %> 可以在里面定义全局变量、方法、类;
② <% %> 可以在里面定义局部变量、编写语句;
③ <%= %> 可以在里面输出一个变量或一个具体内容;
3、Jsp 注释
主要以下4种方式:
① <!-- Html 注释客户端可见 -->
② <%-- Jsp 注释客户端不可见 --%>
③ // java 单行注释
④ /* java 多行注释 */
4、Jsp 包含指令
① <%@ include file=”要包含的文件”%> 静态包含先包含,后编译处理;② <jsp:include page=”要包含的文件”> 动态包含先编译处理,后包含;
实际开发中一般都采用第二种动态包含的方式。
5、Jsp 跳转指令
<jsp:forward> <jsp:param value=”” name=””> </jsp:forward>
服务器内部跳转,可带参数。
二、★JSP内置对象和作用域
2.1 九大内置对象
在Jsp开发中,Jsp提供了9个内置对象,这些内置对象将由容器为用户进行实例化,用户直接使用即可。分别是:pageContext,request,response,session,application,config,out,page,exception;常用的是前面5个,需要熟练掌握;
Response内置对象和request 内置对象是相对应的,response 内置对象用于响应客户请求,向客户端输出信息;
javax.servlet.HttpServletResponse 接口
① 自动刷新应用;
② 页面重定向应用:客户端跳转;
③ 操作cookie应用:post/get方法比较:post放数据包里,get放url后面;get数据量小,而且不安全;
④ cookie和session 的比较:cookie信息存在客户端,session信息存在服务器;
pageContext内置对象是一个比较特殊的对象。它相当于页面中所有对象功能的集合,即使用它可以访问到本页面中所有对象。pageContext 内置对象由Jsp 容器创建并初始化,pageContext 对象提供了对JSP 页面所有对象及控件的访问。
Config内置对象是JSP 页面通过JSP 容器进行初始化时被传递的对象。javax.servlet.ServletConfig 。在Servlet初始化的时候,JPS 引擎通过config 向它传递信息。这种信息可以是属性名和属性值匹配的参数,也可以是通过ServletContext 对象传递的服务器的有关信息;
Out内置对象主要用来向客户端输出各种类型的数据,同时还可以管理应用服务器上的输出缓冲区。所以out 内置对象的方法是向客户端输出数据和管理缓冲区; 底层javax.servlet.jsp.JspWriter 抽象类。
Exception内置对象用来处理JSP 文件在执行时发生的所有异常,它是java.lang.Throwable 类的一个对象。
2.2 四大作用域
此外,在Jsp 开发中为了可以保存数据,Jsp提供了四种数据保存范围;分别是:page,request,session,application。
Page:只在一个页面中保存数据; javax.servlet.jsp.PageContext(抽象类)
Request:只在一个请求中保存数据; javax.servlet.http.HttpServletRequest(接口)
Session:在一次会话范围中保存数据,仅供单个用户使用;javax.servlet.http.HttpSession(接口)
Application:在整个服务器上保存数据,所有用户共享;javax.servlet.ServletContext(接口)
三、★JavaBean
JavaBean是使用Java语言开发的一个可重用的组件,在JSP 开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。
创建javabean
<jsp:useBean id="实例化对象名称" scope="保存范围" class="类完整名称"/>
Scope有page,request,session和application 4个属性范围,默认是page;
设置javabean属性值
<jsp:setProperty property="属性名称" name="实例化对象的名称" value="属性值" param="参数名称"/>
Property=”*” 自动匹配所有
获取javabean属性值
<jsp:getProperty property="属性名称" name="实例化对象的名称"/>
javabean保存范围
Javabean 的保存范围有page,request,session,application;默认是page;
删除javabean
Page 范围:pageContext.removeAttribute(“javaBean Name”);
request 范围:request.removeAttribute(“javaBean Name”);
session 范围:session.removeAttribute(“javaBean Name”);
application 范围:application.removeAttribute(“javaBean Name”);
四、☆Servlet
Servlet生命周期:简单分为四步:servlet 类加载→实例化→服务→销毁。
客户端/服务器端 跳转:
① 在Servlet 中获取session,application
② 客户端跳转response.sendRedirect("目标地址");
③ 服务器跳转:RequestDispatcher rd=request.getRequestDispatcher("目标地址"); rd.forward(request, response);
五、★EL表达式
表达式内置对象 | 说明 | |
1 | pageContext | 表示javax.servlet.jsp.PageContext对象 |
2 | pageScope | 表示从page属性范围查找输出属性 |
3 | requestScope | 表示从request属性范围查找输出属性 |
4 | sessionScope | 表示从session属性范围查找输出属性 |
5 | applicationScope | 表示从application属性范围查找输出属性 |
6 | param | 接收传递到本页面的参数 |
7 | paramValues | 接收传递到本页面的一组参数 |
8 | header | 取得一个头信息数据 |
9 | headerValues | 取出一组头信息数据 |
10 | cookie | 取出cookie中的数据 |
11 | initParam | 取得配置的初始化参数 |
寻找值的顺序:page→request→session→application
EL表达式运算符操作还包括:算数运算符,关系运算符,逻辑运算符;三目运算符;Empty关键字;
六、Jsp标准标签库
JSTL核心标签库
c:out 内容输出标签;
c:set 用来设置4 中属性范围值的标签;
c:remove 用来删除指定范围中的属性;
c:catch 用来处理程序中产生的异常;
c:if 用来条件判断;
c:choose、c:when、c:otherwise 用来多条件判断;
c:forEach 用来遍历数组或者集合;
c:fortokens 分隔输出;
c:import 导入页面;
c:url 生成一个url 地址;
c:redirect 客户端跳转
JSTL SQL标签库
Sql:setDataDource 设置JDBC 连接;
sql:query 数据库查询操作;
Sql:update 数据库添加,修改,删除操作;
Sql:transaction 数据库事务;
JSTL XML标签库
x:parse 解析xml;
x:out 输出xml 文件的内容;
x:set 把xml 读取的内容保存到指定的属性范围;
x:if 判断指定路径的内容是否符合判断的条件;
x:choose x:when x:otherwise 多条件判断;
x:forEach 遍历
- 上一篇:jsp原理详解
- 下一篇:2022 Java 企业面试题汇总
相关推荐
- 前端入门——css 网格轨道详细介绍
-
上篇前端入门——cssGrid网格基础知识整体大概介绍了cssgrid的基本概念及使用方法,本文将介绍创建网格容器时会发生什么?以及在网格容器上使用行、列属性如何定位元素。在本文中,将介绍:...
- Islands Architecture(孤岛架构)在携程新版首页的实践
-
一、项目背景2022,携程PC版首页终于迎来了首次改版,完成了用户体验与技术栈的全面升级。作为与用户连接的重要入口,旧版PC首页已经陪伴携程走过了22年,承担着重要使命的同时,也遇到了很多问题:维护/...
- HTML中script标签中的那些属性
-
HTML中的<script>标签详解在HTML中,<script>标签用于包含或引用JavaScript代码,是前端开发中不可或缺的一部分。通过合理使用<scrip...
- CSS 中各种居中你真的玩明白了么
-
页面布局中最常见的需求就是元素或者文字居中了,但是根据场景的不同,居中也有简单到复杂各种不同的实现方式,本篇就带大家一起了解下,各种场景下,该如何使用CSS实现居中前言页面布局中最常见的需求就是元...
- CSS样式更改——列表、表格和轮廓
-
上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。1.列表List1).列表的类型<ulstyle='list-...
- 一文吃透 CSS Flex 布局
-
原文链接:一文吃透CSSFlex布局教学游戏这里有两个小游戏,可用来练习flex布局。塔防游戏送小青蛙回家Flexbox概述Flexbox布局也叫Flex布局,弹性盒子布局。它决定了...
- css实现多行文本的展开收起
-
背景在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景:那么,如何通过纯css实现这样的效果呢?实现的难点(1)位于多行文本右下角的展开收起按钮。(2)展开和收起两种状态的切换。(3)文本...
- css 垂直居中的几种实现方式
-
前言设计是带有主观色彩的,同样网页设计中的css一样让人摸不头脑。网上列举的实现方式一大把,或许在这里你都看到过,但既然来到这里我希望这篇能让你看有所收获,毕竟这也是前端面试的基础。实现方式备注:...
- WordPress固定链接设置
-
WordPress设置里的最后一项就是固定链接设置,固定链接设置是决定WordPress文章及静态页面URL的重要步骤,从站点的SEO角度来讲也是。固定链接设置决定网站URL,当页面数少的时候,可以一...
- 面试发愁!吃透 20 道 CSS 核心题,大厂 Offer 轻松拿
-
前端小伙伴们,是不是一想到面试里的CSS布局题就发愁?写代码时布局总是对不齐,面试官追问兼容性就卡壳,想跳槽却总被“多列等高”“响应式布局”这些问题难住——别担心!从今天起,咱们每天拆解一...
- 3种CSS清除浮动的方法
-
今天这篇文章给大家介绍3种CSS清除浮动的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。首先,这里就不讲为什么我们要清楚浮动,反正不清除浮动事多多。下面我就讲3种常用清除浮动的...
- 2025 年 CSS 终于要支持强大的自定义函数了?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1.什么是CSS自定义属性CSS自...
- css3属性(transform)的一个css3动画小应用
-
闲言碎语不多讲,咱们说说css3的transform属性:先上效果:效果说明:当鼠标移到a标签的时候,从右上角滑出二维码。实现方法:HTML代码如下:需要说明的一点是,a链接的跳转需要用javasc...
- CSS基础知识(七)CSS背景
-
一、CSS背景属性1.背景颜色(background-color)属性值:transparent(透明的)或color(颜色)2.背景图片(background-image)属性值:none(没有)...
- CSS 水平居中方式二
-
<divid="parent"><!--定义子级元素--><divid="child">居中布局</div>...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)