从asp.net到jsp:3分钟看透Jsp&Servlet
零: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 遍历
从asp.net到jsp:3分钟看透Jsp&Servlet的更多相关文章
- JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署
接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...
- JSP(include指令与<jsp:include>动作的区别)
<%@ page language= "java" contentType="text/html;charset=UTF-8" %><html ...
- 11、Jsp加强/EL表达式/jsp标签
1 Jsp基础回顾 Jsp基础 1)Jsp的执行过程 tomcat服务器完成:jsp文件->翻译成java文件->编译成class字节码文件-> 构造类对象-> 调用方法 to ...
- JSTL的全称:JSP Standard Tag Library, jsp 标准标签库
JSTL的全称:JSP Standard Tag Library, jsp 标准标签库 JSTL的作用 提供给Java web开发人员一个标准通过的标签函数库和EL来取代传统直接在页面上嵌入j ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
- JSP 最佳实践: 用 jsp:include 控制动态内容
在新的 JSP 最佳实践系列的前一篇文章中,您了解了如何使用 JSP include 伪指令将诸如页眉.页脚和导航组件之类的静态内容包含到 Web 页面中.和服务器端包含一样,JSP include ...
- JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
- 如何打开JSP文件/JS和JSP的区别/Servlet的本质是什么,是如何工作的?
一:如何打开JSP文件 1.安装JAVA 2.安装TOMCAT——免费开源的JAVAWEB服务器 3.安装ECLIPSE 二:JS和JSP区别 名字: JS:JavaScript JSP:Java S ...
随机推荐
- SQL Server列属性修改
0.创建表 create table Users(Id int,Name nvarchar(32) not null,Phone nvarchar(16),Email nvarchar(128)) 1 ...
- 转发:php解决高并发
php解决高并发(转发:https://www.cnblogs.com/walblog/articles/8476579.html) 我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Pe ...
- C#中参数值传递和址传递
概论 我认为的形参和实参是这样的,形参是形式上的参量,和"抽象类"的概念差不多,不是实际存在的.不用的时候不占用内存,被调用的时候分配内存,调用结束,释放内存.类似于"抽 ...
- CF622F The Sum of the k-th Powers(拉格朗日插值)
题意 给出 \(n,k\) , \(n\le10^9,k\le10^6\) ,求 \(\sum_{i=1}^n i^k(mod\;10^9+7)\) 题解 自然数幂次和,是一个\(k+1\)次多项式, ...
- tp5分页注意,分页生成的ul class是pagination,有些模板可能将pagination定义为display:none
今天在调用分页时总是无法显示,查看网页源代码是正常的,后来发现是在css文件里将pagination定义为display:none,所以无法显示
- PAT甲级——1097 Deduplication on a Linked List (链表)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/91157982 1097 Deduplication on a L ...
- Scala_Load csv data to hive via spark2.1_via pass parameters_HiveAllType
prepare CSV data NT,col_SMALLINT,col_BIGINT,col_INT,col_FLOAT,col_DOUBLE,col_DECIMAL,col_TIMESTAMP,c ...
- Silverlight Telerik 学习之主题的设置
Telerik控件版本:RadControls for Silverlight Q1 2013 当前的Telerik Silverlight 控件支持以下主题 Office Black - 这是默认主 ...
- (转)SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开?
SELinux是什么意思,如何关闭?Linux下的防火墙用什么命令打开? 原文:http://blog.csdn.net/hhcccchh/article/details/12995539 SELin ...
- 一般的linux系统默认安装的vim是精简版
一般的linux系统默认安装的vim是精简版(vim-tiny),所以不能配置语法检查等属性或获取在线帮助.需要安装vim-x:x.x.x,vim-common,vim-runtime. :synta ...