欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP基础概要

程序员文章站 2022-03-25 07:52:37
jsp简介">一、jsp简介 jsp全名为java server pages,中文名叫java服务器页面。是一种用于开发动态web资源的技术。允许用户嵌套html和java代码。jsp实际上就是se...

jsp简介">一、jsp简介

jsp全名为java server pages,中文名叫java服务器页面。是一种用于开发动态web资源的技术。允许用户嵌套html和java代码。jsp实际上就是servlet。

jsp技术使用java语言编写类xml的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。jsp将网页逻辑与的显示分离,支持可重用的基于的设计,使基于web的应用程序的开发变得迅速和容易。 jsp(javaserver pages)是一种动态页面技术,它的主要目的是将表示逻辑从servlet中分离出来。

重点在于显示数据。

二、jsp的原理

jsp页面中的java代码服务器是如何执行的?

1、从输入地址, 2、浏览器拿到这个地址然后去tomach中进行查找,找到demo1.jsp, 3、到work/catalina/localhost/jsp中招demo1.class文件, 4、如果没有找到,就把demo1.jsp翻译为demo1.java文件 5、把demo1.java编译为demo1.class文件 6、执行servlet。

web服务器在执行jsp页面时,是如何把jsp页面中的html标签发送到客户端的?
通过标签中的等部分。out.write方法写(如下图)。
jsp输出模板内容:把html内容翻译到对应servlet的service方法中,由一个jspwriter的对象进行输出。
在tomach中经过转换的demo1.java文件中的内容。
JSP基础概要

web服务器在调用jsp时,会提供jsp一些什么java对象?
pagecontext、httpsession、servletcontext、servletconfig等

三、jsp基本语法

3.1 脚本表达式

3.2 jsp脚本

3.3 jsp声明

语法:
<%!
java代码

%>
作用:定义jsp对应类的成员。

3.4 jsp注释

语法:<%– 这是注释 –%>
作用:注释jsp中的代码

注意:它的作用和html注释的作用是完全不同的。jsp注释根本不会被翻译到servlet中,而html注释是把代码运行后的结果注释掉,运行效率低。

四、jsp的指令

4.1 page

<% @指令名称  属性1="值1"  属性2="值2"  %>

page指令无论出现在jsp页面中什么地方,它的作用都是整个jsp页面。

作用:
import:导入jsp中的java类,默认导入lang.*,servlet.*jar包。

<%@page import="java.util.date,java.util.list" %>

buffer:jsp页面中有一个字符输出流java.servlet.jsp.jspwriter,它的缓存大小默认为8kb.

errorpage:当当前jsp页面发生异常时转向(转发)的一个地址,如果地址以”/”开头,/代表当前应用,绝对路径。不以/开头,表示相对路径。

 
   java.lang.exception
    /error.jsp
  
  
    404
    /404.jsp
  

iserrorpage:是否产生throwable对象,默认是false.
<%=exception.getmessage() %>

contenttype:指示响应正文的mime类型和编码.

pageencoding:jsp引擎读取jsp文件时使用的编码。

iselignored:是否忽略el表达式。默认值是false,不忽略.

4.2 include

静态包含:

<%@include  file="/index.jsp" %>

动态包含:


4.3 taglib

导入外部标签库,替换jsp中的java片段。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

五、jsp的九大隐式对象

5.1 分类

指在jsp的<%=%>和<% %>可以直接使用的对象。

request、response、session、exception、application、config、page、out、pagecontext

JSP基础概要

5.2 pagecontext

本身是一个域对象,还能操作其他三个域对象(servletrequest、httpservlet、servletcontext)中的数据。

操作其他三个域对象:

pagecontext.page_scope|pagecontext.request_scope|pagecontext.session_scope|pagecontext.application_scope

void setattribute(string name,object v,int scope); object getattribute(string name,int scope); void removeattribute(string name,int scope);

pagecontext对象提供了对jsp页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pagecontext。

六、jsp的四大域对象

pagecontext:存放的数据只能当前页面使用。 servletrequest:存放的数据可以通过转发传递给下一个转发目标。 httpservlet:存放的数据可以同一次会话中取出。例如:登陆,购物车信息等 servletcontext:存放的数据被整个应用所共享。

七、内置标签

jsp:include:动态包含

jsp:forward:请求转发
jsp:param:结合以上标签使用。

    
    
    

八、jsp与javabean的使用

jsp中操作javabean

jsp:usebean

先查找再创建。


jsp:setproperty

    

JSP基础概要

九、el表达式

不是单独的语言,而是jsp规范中获取数据的一种方式。可以获取数据、运算、访问普通静态方法等功能。
不支持字符串连接操作。

9.1 获取数据

只能获取存在于四个域对象中的数据。
el对于null这样的数据,显示在页面上表现为一个空字符串。

${s} pagecontext.findattribute(“s”);
无空指针问题。

运算符:
.
[]


<%
  student student=new student();
  student.setaddress(new address());
    pagecontext.setattribute("s",student);
 %>

 ${s.name}==${s['name']}

${s.address.province }


<%

list  list=new arraylist();
list.add("a");
list.add("b");
list.add("c");

pagecontext.setattribute("list",list);

 %>

${list[1] }



<%
    map  map=new hashmap();
    map.put("a","1111");
    map.put("b","2222");
    map.put("c","3333");

    pagecontext.setattribute("map",map);
 %>
${map.b}

JSP基础概要

9.2 运算

empty:判断null、空字符串和没有元素的集合(

${empty p }

三元运算符:
${布尔表达式?true:false}

<%
        list list=new arraylist();
        list.add("a");
        pagecontext.setattribute("list",list);
     %>
     ${empty list }  

     ${empty list ?'您未购买任何东西':'您购买的物品如下'} 

     <%
        session.setattribute("user","张三"); 

      %>

       ${empty user? '您还未登陆':'欢迎您' } ${user }

9.3 隐式对象(11个)

JSP基础概要

9.4 自定义el表达式

1、编写一个类

public class function {

public static string touppercase(string data){
    return data.touppercase();  
}

}

2、在web-inf目录下建一个扩展名为tld的xml文件。



    1.0
    my
    http://www.tianfang1314.cn/myfunctions
    
touppercase
cn.tf.functions.function
java.lang.string touppercase( java.lang.string )


3、在jsp中使用
引入taglib文件:

<%@ taglib uri="http://www.tianfang1314.cn/functions"   prefix="my" %>

使用自定义的el表达式“data”,将小写的a转换为大写的a。

<%
            pagecontext.setattribute("data","aaaaaaa");
         %>
         ${my:touppercase(data) }

实际项目中很多都是使用jstl来进行操作的。

地址:https://github.com/sdksdk0/jsp