• JSP六大动作


    JSP 动作是一组 JSP 内置的标签,只书写少量的标记代码就能够使用 JSP 提供丰富的功能, JSP 行为动态是对常用的 JSP 功能的抽象和封装。
    JSP Actions 是使用 xml 语法写的,是 jsp 规定的一些列标准动作,在容器处理 jsp 时,当容器遇到动作元 素时,就执行相应的操作。
    JSP 共有以下 6 种基本动作
    • jsp:include:在页面被请求的时候引入一个文件。
    • jsp:useBean:寻找或者实例化一个JavaBean
    • jsp:setProperty:设置JavaBean的属性。
    • jsp:getProperty:输出某个JavaBean的属性。
    • jsp:forward:把请求转到一个新的页面。
    • jsp:plugin:根据浏览器类型为Java插件生成OBJECTEMBED标记。

    动态包含

    动态包含 动态引入另一
    个文件,其中动态包含会把包含的 jsp 页面单独翻译成 servlet 文件,然后在执行到时候再调用翻译的 servlet 程序。并把计算的结果返回。动态包含是在执行的时候才会加载。所以叫动态包含。
    • 静态包含是包含源代码
    • 动态包含是包含执行结果
    1. request.getRequestDispatcher("dd.jsp").include(request,response)
    page 参数
    • 可以使用变量
    • 只能包含当前应用中的资源
    page = "err.jsp" >
    value = "99" name = "id" />
    http://localhost:8080/20221122/index.jsp?id=100 &name =zhangsan
    注意在被包含页面中可以通过 parameter 接收参数

    重点:静态包含和动态包含的区别

    静态包含
    动态包含
    是否生成 java 文件
    不生成
    生成
    service 方法中的区
    把包含的内容原封拷贝到 service
    JspRuntimeLibrary.include 方法
    是否可以传递参数
    没有必要,因为就是同一个文件
    可以
    编译次数
    1
    包含的文件 +1 ,可以包含需要传递参
    实际工作中几乎都是使用静态包含。因为 jsp 页面虽然可以写 java 代码做其他的功能操作。但是由于 jsp在开发过程中被定位为专门用来展示页面的技术。也就是说 jsp 页面中,基本上只有 html css js 。还 有一些简单 EL 表达式脚本等输出语句。所以都使用静态包含 。

    请求转发

    请求转发 转发功能相当于 request.getRequestDispatcher("").forward(request,
    response); 的功能。
    基础语法 跳转的 jsp 页面 "> [] [
    name="" value=""/>]
    重定向 response.sendRedirect
    是否共享 request
    是否客户端参与
    html 转发
    2 秒后刷新页面 :
    http-equiv = "Refresh" content = "3" />

    3秒之后跳转页面:

    javaBean的使用

    JavaBean 是一个遵循特定写法的 Java 类,它通常具有特点:
    • 这个Java类必须具有一个无参的构造函数
    • 属性必须私有化
    • 私有化的属性必须通过public类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范
    1. public class Student{
    2. public Student(){} 自定义无参构造器和系统默认提供的都可以
    3. private String name;
    4. public String getName(){return this.name;} //名称必须正确,注意大小写
    5. public void setName(String name){this.name=name; }
    6. }
    用于在指定的域范围内查找指定名称的 JavaBean 对象。
    • 如果在指定的范围已经存在该 bean 实例,那么将使用这个实例,而不会重新创建。
    • 如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。
    相关属性
    • id命名引用该Bean的变量。如果能够找到idscope相同的Bean实例,jsp:useBean动作将使用已有的Bean实例而不是创建新的实例
    • class指定Bean的完整包名,如果存在则复用,如果不存在则InstantiationException
    • scope指定Bean在哪种上下文内可用,可以取下面的四个值之一:pagerequestsessionapplication。默认值是page,表示该Bean只在当前页面内可用(保存在当前页面的PageContext内)。request表示该Bean在当前的客户请求内有效(保存在ServletRequest对象内)。session表示该Bean对当前HttpSession内的所有页面都有效。最后,如果取值application,则表示该Bean对所有具有相同ServletContext的页面都有效
    因为 jsp:useBean 只有在不存在具有相同 id scope 的对象时才会实例化新的对象;如果已有
    id scope 都相同的对象则直接使用已有的对象,此时 jsp:useBean 开始标记和结束标记之间
    的任何内容都将被忽略
    • type 指定引用该对象的变量的类型,它必须是Bean类的名字、超类名字、该类所实现的接口名字之一。请记住变量的名字是由id属性指定的
    • beanName指定Bean的名字。如果提供了type属性和beanName属性,允许省略class属性
    首先在 request 中查找名称
    dd 的日期类型变量,就是 request.getAttribute("dd"), 如果获取不到,则新建 Date 变量,并存放在
    request 中,名称就是 id 的值

    设置bean属性

    对象 " property=" 属性 " value=" 属性值 "/> 给一个 javaBean 实例属性赋
    典型应用 1
    1. <form action="bb.jsp" method="post">
    2. <input name="username"/><input name="password"/><input name="age"/>
    3. <input type="submit" value="提交数据"/>
    4. form>
    定义值 bean DTO DAO BO VO
    1. public class Student{
    2. private String usenrame;
    3. private String password;
    4. private Integer age;
    5. //对应的get/set方法,注意命名规则
    6. }
    bb.jsp 页面中接收数据,注意 * 的用法
    1. <jsp:useBean id="student" class="com.yan.entity.Student" scope="request">
    2. <jsp:setProperty name="student" property="*"/> 可以直接从request的
    3. parameter中接收请求参数,按照名称对应的方法设置到student对象中,如果需要则自动进行数据类型
    4. 转换。
    5. jsp:useBean>
    如果名称不一致可以使用 setProperty 进行设置
    1. <jsp:setProperty name="student" property="usenrame" param="username"/>
    允许给值 bean 属性设置具体的数据
    1. <% int ss=18; %>
    2. <jsp:setProperty name="student" property="age" value="<%=ss%>"/>

    获取bean属性值

    取得一个 javaBean 实例的成员变量,在当前位置输出
    指定对象的某个属性值

    使用中的注意事项

    1. <% request.setCharacterEncoding("UTF-8");
    2. Student student=new Student();
    3. session.setAttribute("student",student);
    4. %>
    5. <jsp:useBean id="student" class="com.yan.entity.Student"> 语法报错,因为临时变量
    6. student和useBean的id值相同
    7. <jsp:setProperty name="student" property="*"/>
    8. jsp:useBean>
    使用 useBean 创建的对象可以当作临时变量使用
    1. <jsp:useBean id="student" class="com.yan.entity.Student">
    2. <jsp:setProperty name="student" property="*"/>
    3. jsp:useBean>
    4. <%=student%>

  • 相关阅读:
    一般香港服务器带宽选多大够用?(带宽计算方法)
    批量插入通话记录
    基于FPGA的误码检测
    商务之理解项目目标
    5G RedCap工业智能网关
    EuroVis2022论文—2—FP-长论文
    你犯过程序员容易犯的这些错误吗?快来看看!
    Netty源码分析:服务器启动跟踪,nioeventloop 剖析,accept、read 事件跟踪
    neo4j数据库导出
    市场上ios签名公司做什么的?
  • 原文地址:https://blog.csdn.net/m0_59749255/article/details/128158651