jsp周末总结

jsp  java   server  page做动态页面
    是j2ee的一套规范
    jsp=java+jsp+html+css
JSP的作用是来替换servlet显示信息的功能
    jsp本质上讲就是servlet只不过jsp擅长控制跳转 业务处理
    jsp擅长前台展示
    javaBean、jsp组成
        jsp除了做界面还要做控制层
MVC模式:将控制层与视图层分离
    1、M(Model模型)---JavaBean,java类包含三层架构
    2、V View 视图层  jsp,html显示
    3、C Controller控制器 servlet控制和转发请求

first.jsp---显示当前时间
    1、翻译阶段  jsp--.java
    当容器接受客户端的第一次对jsp请求后 先判断jsp是否存在,不存在则返回404,存在则先编译为一个servlet
    2、编译阶段
    将编译后的servlet的源文件编译成一个字节码文件 然后由容器将其装载进虚拟机并实例化
    3、执行阶段
    调用翻译后的servlet的对应init()、service方法、destory()
    补充:
    ①如果被请请求的jsp源文件内容发生变化,那么要重新将jsp翻译成servlet,再编译,再装载和实例化,最后运行servlet
    ②如果第二次请求jsp时 此时若被请求的jsp已经有对应的servlet实例,那么久直接运行该servlet
script.jsp
    jsp中的元素:脚本元素、指令元素、动作元素
    1、脚本元素:嵌套java代码
    a、声明、语法:<%声明中的内容%>
    作用:在servlet中声明一些成员变量、成员方法和内部类
    注意:不能使用表达式和隐含对象
    b、表达式
    <%=expression%>
    作用:将pression输出到out流中
    expression可以是算数逻辑 常量 关系表达式 变量 有返回值的方法。

    注意expression都一律被转换为字符串后再写到out输出流中
    expression中不能有分号

jsp中的9种隐含对象
    page当前的jsp页面,
    pageContext 当前jsp页面的上下文
    request 封装请求的信息
    response 封装响应
    session 会话
    application 指web应用就是servletContext
    out 输出流
    config 配置信息
    exception 异常信息


    当isErrorPage=true 时  才可以使用该对象
    特点:表达式翻译进servlet后变成了out.print(exception)
    该代码处于-jspservice方法中

脚本(Scriptlet)
    语法<%java code%>
    作用:在jsp中嵌入任何java代码  不能嵌入成员变量 成员方法 所以在此模块声明的变量为局部变量 
    任何逻辑的代码都可以放在脚本标签中

    如for循环、匿名内部类 连接数据库 创建对象等
    特点:脚本被编译进servlet的jspservice方法中

    指令元素:指令用来提供整个jsp网页相关的信息
    并且用来设定jsp页面的相关属性

    page指令
        可以写多个page标签 多个import
        语法<%@page attributeName=""%>
        作用:利用page指令中的属性可以和容器进行通信,这些属性的设置,对整个jsp都有影响。
        page指令中的属性:
            language=java  定义编程语言 目前只能是java
            contentType="text/html,charset=UTF-8"
        定义response中的内容类型和编码格式 和jsp页面的编码格式 
        isErrorPage="true|false" 默认为false

    import=""导包
    session="true|false"规定是否可以使用session
    默认为false

    buffer="none|8kb|sizekb"默认8kb
    指定到客户端输出流的缓冲模式
    如果是none则不缓冲,如果指定数值
    那么输出就用不小于这个值得缓冲区进行缓冲

    autoflush=“true|false” 默认为true true:当缓冲区满时到客户端的输出被刷新false
    false:当缓冲区满时出现异常 表示缓冲溢出

    isThreadSafe="true|false"
    用来设置jsp文件是否能支持多线程的使用
    如果为true 那么一个jsp能够处理多个用户的请求
    反之则一次只能处理一个请求

    info=“text”
    关于jsp页面的信息 定义一个字符串 可以使用getServletinfo获得

    extends=“。。。。”
    继承某个父类

    isELIgnored="true|false"
    指定EL表达式语言是否可以忽略 如果true则忽略 反之可以使用EL

    include指令
        <%@include file="url"%>称之为静态导入(静态包含)
    作用在一个页面中导入另一个页面的内容 
    特点:jsp翻译为servlet后就将被导入的页面内容嵌入到servlet中 导入时间发生在翻译阶段

    被导入的资源  html  xml jsp等
    优点执行效率高 之翻译一次
    缺点 如果导入多个页面 当其中一个页面内容发生变化 就需要将所有页面都翻译一次

    teglib指令
    <%@ taglib uri="" prefix=""%>
    指定在jsp中要使用的标签库描述文件 *.tld 的路径

    动作元素 jsp自带的标准标签
    语法<jsp:tagName/>
    动态导入 动态包含
        语法<jsp:include page="url" fluse="true|false"/>或者<jsp:include page="url" flush="true|false">{<jsp:param,,/>}
        </jsp:include>
    特点:动态导入发生在执行阶段
        也就是运行servlet的时候才动态生成被导入的页面内容,然后嵌入到调用页面,最后将两个页面一起,返回给客户端 
        注意:在翻译阶段并没有生成被导入的页面的内容。没有跳转 请求还是同一个
        缺点:执行效率没有静态导入高
        优点:如果没有导入页面内容发生变化 调用页面不必重新编译

    foward(服务器内部跳转)
        语法<jsp:foward page="url"/>或者
        <jsp:foward page="url">{<jsp:param\\\>}*
        </jsp:forward>

    jsp中的注释
    <!---->
    只能注释html和xml中的静态内容 不能注释脚本元素 指令元素 和动作元素 如果注释 他们还是会被编译执行
     隐藏注释
     <%-- --%>
     可以注释jsp中的所有内容
     脚本注释
     <%    
//
/**/
/** 
*/
     %>

    三种注释的区别 
    servlet源文件  客户端页面源文件    浏览器显示
html/xml 出现     出现              不显示
隐藏注释  不出现     不出现           不显示 
脚本注释   出现      不出现              不显示

EL:通过el标签来取数据和输出数据
    简化代码,尽量在jsp中不适用java代码
语法:${输出数据或对象 }
    webContent/WebRoot
        文件夹:el
            jsp:el.jsp
一、el中的表达式
    a、算数表达式
        +、-、*、/
    b、关系运算符
        ==或eq、!=或ne、<或lt、> 或gt、<=或le、>= ge
    c、逻辑运算符
        &&或and、||或or、!或not
    d、判空运算符
        empty
        <%empty name>
二、表达式可以使用的隐含对象
    a、pageContext  jsp页面的上下文,唯一一个jsp和el都有的隐含对象
        ${pageContext.servletContext/session/getrequest }
    b、param 把请求中的参数和单个值 进行映射
        ${param.name }
    c、paramValues把请求中的参数和一个array值进行映射 获取多选框的值
        ${paramValues.hobby }
    d、cookie 把请求中的cookie和单个值进行映射
        ${cookie.name }
    e、initParam把web应用上下文的初始化参数和单个值进行映射
        ${initParam.name }
    f、pageScope把page范围中的key和value进行映射
        ${pageScope.name }
    g、把request范围内的key和value映射
        ${requestScope.name}
    h、sessionScope  session范围内key、value映射   
        ${sessionScope.name}
    i、applicationScope  application范围内key value映射   
        ${applicationScope.name}
    如果没有指出范围,默认从page request session application开始查找,若找不到就往更大的范围找

jsp中使用javabean 创建和使用javabean对象的时候尽量不使用java代码
    javaBean 提供属性 构造器
        set  get方法 实现序列化
    1、语法
    jsp中获得或者创建javaBean对象
    <jsp:useBean id="user" class="包名+类名" scope="page|request|session|application"/>
    id user的对象引用
    class 包+类名
    scope scope默认为page
        user对象的存放范围
    作为该对象放置在scope中的属性名
    scope.setAttribute("",);
    2、执行流程
    user!=null可以使用该对象 在页面上输出其属性值
        简化jsp代码,且JAvaBean永远不会为null

    设置javaBean对象中的属性值
    (1) 方式一
语法: <jsp:setProperty name="对象引用" 
property="propertyName" value="">
例如: <jsp:setProperty name="user"
property="name" value="jack"/>
执行流程: user.setName("jack");

(2) 方式二
语法: <jsp:setProperty name="对象引用" 
    property="propertyName"/>    
例如: <jsp:setProperty name="user" 
    property="name"/>
    name: 它的值和标签useBean中id的值对应,
          表示User对象的引用。
        property: 它的值和setName()有关。
执行流程:
a) String value = 
request.getParameter("name");
b) 若value != null, user.setName(value);
c) 若value == null,不调用setName()。
用途: 将表单中提交的字段信息封装到
JavaBean对象的属性中。

(3) 方式三
语法: <jsp:setProperty name="对象引用"
    property="propertyName" 
    param="">                       param="paramName"/>
例如: <jsp:setProperty name="user" 
    property="name"
    param="username"/>
执行流程: 
a) String value = 
  request.getParameter("username");
b) 若value != null, user.setName(value);
c) 若value == null, 不调用user.setName();

(4) 方式四
语法: <jsp:setProperty name="对象引用" 
property="propertyName" 
value="<%=\"zhangsan\" %>">
   或者value='<%="中国" %>'
例如: <jsp:setProperty name="user" 
property="age" value="<%=30%>"/>
执行流程: user.setAge(30);

(5) 方式五
语法: <jsp:setProperty name="对象引用" 
    property="*"/>
例如: <jsp:setProperty name="user" 
           property="*"/>
"*"匹配了id name password age gender address
(根据User中所有set方法的property进行匹配)
(6) 方式六
语法: <jsp:setProperty name="对象引用" 
    property="name" value="${}"/>
例如: <jsp:setProperty name="user"
        property="address"
    value="${address}"/>
  使用el表达式来获取address的值,从四大范围中
  查找address对象,如果找到调用user.setAddress(address);

  输出javaBean对象中的属性值
    <jsp:getProperty name="对象引用" property=“propertyName”/>
    <jsp:getProperty name="user" property="name"/>

    执行流程
    1、Object o = user.getName();
    2、将0全部换位s
    3、out.print(s);

4、使用标签<jsp:useBean>的四种方式
1) <jsp:useBean id="对象引用"
    class="包名+类名" 
    scope="">                                   scope="page|request|session|application"/>
特点: 通过new来创建一个对象

2) <jsp:useBean id="对象引用"
    type="JavaBean实现的接口或继承的父类" 
    scope="page|request|session|application"/>
特点: 如果scope中所引用的对象不存在,
不会去自动构造一个对象
例如: List list = new ArrayList();
session.setAttribute("list",list);
<jsp:useBean id="list"
type="java.util.List" scope="session"/>或者
<jsp:useBean id="list"
class="java.util.ArrayList" 
scope="session"/>

3) <jsp:useBean id="对象引用" 
class="包名+类名" 
type="JavaBean实现的接口或继承的父类" 
scope="page|request|session|application"/>
特点: 通过new来创建一个对象

4) <jsp:useBean id="对象引用" 
beanName="包名+类名" >
type="JavaBean实现的接口或继承的父类" 
scope="page|request|session|application"/> 
特点: 通过反射构造一个对象





























  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值