ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSP入门基础汇总

2019-06-05 13:49:38  阅读:250  来源: 互联网

标签:java 入门 xxx 汇总 指定 JSP jsp pageContext 页面


一、jsp的作用

Servlet:

缺点:不适合设置HTML响应体,需要大量的response.getWrite().print("");
优点:动态资源,可以编程
HTML:
缺点:HTML是静态资源,不能包含静态信息
优点:对HTML标签输出方便
jsp(java server pages):
优点:在原有的HTML基础上添加java脚本(jsp 2.0以后只能使用EL表达式)
jsp与Servlet分工
jsp作为请求发起页面,例如显示表单、超链接
jsp作为请求结束页面,例如显示数据
Servlet作为请求中处理数据的环节

二、jsp的组成

jsp = html +java脚本 + jsp标签(指令)
jsp有无需创建就可使用的内置对象
3中java脚本
** <% … %> java代码片段,用于定义0-N条java语句,相当于java中方法内的代码。
** <%= … %> java表达式,常用于输出表达式或变量的结果,相当于:response.getWriter().print(…),这里面能放的东西她都能放。
** <%! … %> 声明,用来创建类的成员变量和成员方法(基本不用,易考)

class Myclass{
    //成员
    //方法
    //构造器
    //构造代码块
    //静态块
    //内部类
}

三、jsp原理(理解)

jsp是一种特殊的Servlet

当jsp第一次被访问时,服务器会把jsp翻译成java文件(这个java代码实际是一个Servlet类)
再把Servlet类编译成.class文件
第二次请求同意jsp页面是,直接调用service方法,不用再编译(速度提升明显)
Tomcat的work目录下可找到jsp对应源码(去看看吧!!!)
<%-- … --%>:注释,当服务器吧jsp编译成java问件事已经忽略了注释部分。

四、jsp三大指令

jsp中可以有0—nN个指令定义
page指令:

<%@page language=“java” info=“xxx” …%>
1.pageEncoding和contentType:
pageEncoding:当前页面的编码,服务器把jsp编译成.java时需要编码
添加响应头:Content-Type <==>response.setContentType(“text/html;charset=utf-8”);
如果两个值只设置一个,另一个与设置值相同
如果两个都没有设置,默认值为ISO
2.import导包
3.errorPage和isErrorPage
errorPage如果当前页面抛出异常,由errorPage指定将异常转发至哪个页面
指定当前页面是否为处理异常页面!true,本页面状态码500,而且这个页面可以使用9大内置对象中的exception!
代码演示:

<error-page>
//发送404错误到/error/errorPage.jsp页面
    <error-page>404</error-page>
    <location>/error/errorPage.jsp</location>
</error-page>
<error-page>
//为/error/errorPage.jsp页面设置错误
    <exception>java.lang.RuntimeExceotion</exception>
    <location>/error/errorPage.jsp</location>
</error-page>

4.autoFlush 和 buffer
autoFlush:指定jsp输出流满时,是否自动刷新,默认true,如果是false,缓冲区满时抛异常
buffer:指定缓冲区大小,默认8kb
5.isELIgnored:是否忽略el表达式,默认false(支持el表达式)
6.基本没有(不管吧)
language:jsp编译后的语言,默认java
info:
isThreadSafe:是否线程安全
session:
extends:
include指令 ------>静态包含
** 与RequestDispatcher的include()方法功能相似
** <%@include%> 在jsp被编译成java文件时完成,它们共同生成一个java(Servlet)文件,然后生成一个class文件。
** RequestDispatcher 的include()是一个方法,包含和被包含的是两个Servlet,即两个class,它们把响应内容在运行时合并了。
** 作用:把页面分解,使用包含的方式组合在一起,这样,一个页面不变的部分就是一个独立jsp,我们只需要处理变化的jsp页面。
使用:<%@include file = " … “%>(…代表另一个jsp路径)
taglib指令 ----->导入标签库
** 两个属性
prefix:指定标签库在本页面的前缀,由我们自己来起名!
uri:指定标签库的位置!
<%@taglib prefix = “s” uri = " /struts-tags” %>

五、jsp九大内置对象

out ====》jsp的输出流
page ====》当前页面,Object page = this;
config ====》对应真身中的ServletConfig对象
pageContext ====》一个顶9个
request
response
exception
session
application

** pageContext
servlet中有3大域,jsp中有四大域(这是第四个)

ServletContext:用于整个应用程序
Session:用于整个会话
request:一个请求链
pageContext:
**代理其他域:pageContext.setAttribute(“key” , “value” , pageContext.SESSION_SCOPE);
**全域查找:pageContext.findAttribute(“key”);从小到大查找(pageContext < request < session < ServletContext)

六、javaBean规范

**

七、EL表达式

**
使用:java2.0 以后,不再使用java脚本,用el表达式和动态标签代替java脚本
el代替的是<%= … %>,el只做输出
el读取四大域
** ${xxx}, 全域查找名为xxx的属性,如果不存在,输出空字符串,不是null
** 指定域获取属性 pageScope.xxx{pageScope.xxx} 、pageScope.xxx、{requestScope.xxx} 、sessionScope.xxx{sessionScope.xxx} 、sessionScope.xxx、{applicationScope.xxx}
输出内容:EL 11个内置中对象的内容
pageScope
requestScope
sessionScope
applicationScope
param(“key”):单个参数,Map类型,key为参数名
paramValues:上同,适用多个参数
header(“key”):单个响应头,map类型,key代表响应头名称
headerValue:上同,对应多个响应头
initParam:过去 中的参数
对应web.xml中的代码如下:

<context-param>
    <param-name>xxx</param-name>
    <param-value>XXX</param-value>
</context-param>

el获取参数:${initParam.xxx} = XXX;

cookie:Map<String , Cookie>类型,其中string是cookie的name,Cookie是cookie对象。
${cookie.username.value}
pageContext:一个顶九,pageCon类型,获取当前页面路径 —> ${pageContext.request.contextPath}

八、EL函数库(由JSTL提供)

myeclipse中当项目在Tomcat发布时自动导入项目下的lib包内,不在myeclipse时需要自动导入 jstl-1.2.jar
在这里插入图片描述
在这里插入图片描述

九、EL自定义函数库

写一个java类,类中可定义0—N个方法,但必须是静态的,由返回值。
在WEB-INF下创建tld文件

fun
//自定义函数路径
cn.itcast.fn.MyFunction
//重新为自定义函数取别名,(带上返回值类型)
java.lang.String fun()

在jsp页面导入标签库
<%@taglib prefix = “it” uri = " /WEB-INF/tlds/itcast.tld" %>
在jsp页面使用自定义函数:${it:fun()}

十、JSTL标签库

jatl的概述
** apache的东西,依赖EL
** 使用jstl需要导入 jstl1.2.jar
** 四大库:

core:核心库,重点
fmt:格式化,例如日期、数字
sql:已过时
xml:已过时
core ---->C标签
out和set
** <c:out> 输出
属性:
value : 输出的内容,(字符串常量、EL表达式)
default : 当输出内容为null是,会输出default指定的值
escapXml : 默认值为true,表示支持转义(value中的特殊字符或被转义)
** <c:set>设置(创建域的属性)
属性:
var : 变量名
value : 变量值,可以是EL表达式
scope :域,默认为page,可选值:page,request,session,application

remove -->删除域变量
属性:

var : 变量名
scope :如果不给scope,表示删除所有域中的变量,给出删除指定域

url
属性:

value :指定一个路径,会在路径前自动添加项目名
<c:url value = “index.jsp” > ==> /day13_02/index.jsp
子标签 :<c:param>,用于给url后添加参数,例:
<c:url value = “index.jsp”>

<c:param name = “username” value = “张三”>
</c:url>
//输出 /day13_02/index.jsp?username = %ED%2C%GG%SD%TY%WE

var : 指定变量名,一旦添加这个属性,那么url标签就不会再输出到页面,而是把生成的url保存到域中
socpe:它与var一起使用,用来保存url

choose:对应 java语言中的if条件语句
使用:
<c:choose>
<c:when test="">执行语句1</c:when> //if(){}
<c:when test="">执行语句2</c:when> //else if(){}
<c:when test="">执行语句3</c:when> //else if(){}

<c:otherwise>执行语句4</c:otherwise> //else{}
</c:choose>

forEach
<c:forEach var=“i” gegin=“1” end=“10” stept=“2” >
${i}
</c:forEach>
//for(int i=1;i<=10;i+2)

属性:

var : 循环变量
begin :设置循环变量初始值
end:设置循环变量结束值
step :设置步长,类似i++
<c:forEach item="${strs}" var=“str”>
#{str }

</c:forEach>
//for(String str : strs){

}

item : 指定要循环的的数组(集合)
var :把集合或数组中的每个元素复制给var指定的变量

fmt库
格式化时间
<fmt:formatDate value="" pattern="">
value:指定一个Date类型的变量
pattern:用来指定输出的模板,例:yyyy-MM-dd hh
格式化数字
<fmt:formatNumber value=" ${num1}" pattern = “0.00”>//保留两位,不足两位补位
<fmt:formatNumber value=" ${num1}" pattern = “#.##”>//保留两位,不足两位不补位

标签:java,入门,xxx,汇总,指定,JSP,jsp,pageContext,页面
来源: https://blog.csdn.net/weixin_44333583/article/details/90900888

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有