JSP标签与JavaBean总结

一、JSP标签

1、JSP标签的简单介绍

     JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。

2、常用的JSP标签

   动态的包含页面

   进行资源的转换

     参数的赋值

3、 标签

用于在JSP页面把另一个资源的输出内容,插入到该jsp的输出内容中,这种插入方式叫做动态引入。

语法:

page属性的值,可以自己指定一个值,也可以根据一个表达式来获得。


flush属性指定在插入其它资源前,是否将当前jsp的内容刷新到客户端。
       默认为false,在include另一个jsp文件时,默认情况下,服务器会等待该文件被读到底端,然后才输出到客户端,并且销毁该次访问的request和response。而当把flush属性赋为真值 时,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容 。

代码实例:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    request.setAttribute("end","End.jsp");
%>

//记得转型



JSP标签与JavaBean总结_第1张图片

3.1与include指令的区别

是动态引入,假设涉及到两个jsp页面会把两个jsp页面翻译为两个servlet页面。这两个servlet在执行的时候,会进行合并。

include指令为静态引入,就是把两个jsp页面合并到一起,然后翻译成一个servlet的页面。

使用incude指令合并:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    String name="demo2";
%>

demo2中的name值为<%= name%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    String name="demo1";
%>

demo1中的name值为:<%= name%>

<%@include file="demo2.jsp"%>

JSP标签与JavaBean总结_第2张图片

这里发生的错误,可以看出include的标签,实在源文件的基础上进行了,何不,所以出现了重复定义局部变量的错误。

修改为引入

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


<%
    String name="demo1";
%>

demo1中的name值为:<%= name%>

<%--<%@include file="demo2.jsp"%>--%>

这样就没有问题了。

3.2解决引入.jspf文件出现异常的问题

  一般按照标准,我们需要引入的jsp资源文件的后缀面应该是.jspf,在总结的时候,发现当使用include标签合并两个.jspf文件时,没有出现问题,但是使用标签引入的时候,出现了异常.

JSP标签与JavaBean总结_第3张图片

我们发现浏览器把.jspf文件当作纯文本来解决了,解决方法是在Tomcat服务器下web.xml文件下添加,如下的配置

JSP标签与JavaBean总结_第4张图片

4、标签

标签用于把请求转发给另外一个资源。
语法:
       
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    Title


这是我们的网页开头哦

//也可以用表达式来获取

JSP标签与JavaBean总结_第5张图片

5、标签

当使用标签时,可以使用标签来进行一些数值的传递.

代码实例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    Title


这是我们的网页开头哦

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


这是我们的网页结尾哦

name:<%=request.getParameter("name")%>
age:<%=request.getParameter("age")%>

JSP标签与JavaBean总结_第6张图片

二、JavaBean总结

 

1、什么是JavaBean。

     JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性(成员属性要是私有的),set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。

2、JavaBean的属性的要求

  JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。
  属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。 
  属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。 
  一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。

3、jsp中访问JavaBean的jsp标签。

标签:用于在JSP页面中查找或实例化一个JavaBean组件。
标签:用于在JSP页面中设置一个JavaBean组件的属性。
标签:用于在JSP页面中获取一个JavaBean组件的属性。

3.1

标签用来在指定的域范围内来寻找JavaBean对象,如果存在则直接返回一个指向JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象,以指定的名称存放到指定的域中。

语法:
   

id:指定指向JavaBean对象实例和存放在域中的名称
class:指定JavaBean完整的类名(包名+类名)
scope:指定JavaBean实例对象存储的域,默认为page

使用实例:

JavaBean:

package com.luther.TestWeb;

public class PersonBean {
    private String name;
    private String sex;
    private int age;
    public PersonBean(){}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    如何使用JavaBean


<%
    String sex="male";
    person.setName("哈哈哈");
    person.setAge(18);
    person.setSex("male");
%>

<%=person.getName()%>

<%=person.getAge()%>

<%=person.getSex()%>

JSP标签与JavaBean总结_第7张图片

3.1.1 的实现原理

如何实例话一个对象呢。由于jsp会被jsp引擎翻译成一个servlet文件,所以我们可以找到生成的.java文件来查看。

查找的位置(IDEA例):

C:\Users\bang\.IntelliJIdea2018.2\system\tomcat\Tomcat_9_0_12_项目名\work\Catalina\localhost\ROOT\org\apache\jsp下寻找.

//初始化对象为null
 com.luther.TestWeb.PersonBean person = null;
//加同步,防止线程问题
      synchronized (session) {
//获取存储在session作用域中的对象
        person = (com.luther.TestWeb.PersonBean) _jspx_page_context.getAttribute("person", javax.servlet.jsp.PageContext.SESSION_SCOPE);
//如果没有就重新new一个对象
        if (person == null){
          person = new com.luther.TestWeb.PersonBean();
//存储到session对象中
          _jspx_page_context.setAttribute("person", person, javax.servlet.jsp.PageContext.SESSION_SCOPE);
        }
}

3.1.2、带标签体的标签

语法:
     
        Body 
    
 
功能:
    Body部分的内容只在标签创建JavaBean的实例对象时才执行。

3.2

我们在jsp文件如果使用像上面代码那样的赋值与取值方法,这样不利于我们的维护,可以阅读性也较差,所以这里提供了两个标签里供我们使用。


语法一:

name:用于指定实例对象的名称,中的id属性值
property:要赋值的参数名,一定要和JavaBean中的属性名一致
value:赋值的值

语法二:


param:用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。

语法三:

用所有请求参数来赋值。

语法三代码实例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    如何使用JavaBean






<%
    String sex="male";

%>

<%=person.getName()%>

<%=person.getAge()%>

<%=person.getSex()%>

JSP标签与JavaBean总结_第8张图片

语法:


name:实例化对象引用的名称
property:JavaBean的属性名


总结实例代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    如何使用JavaBean


<%
    String sex="male";
%>





姓名:

年龄:

性别:

JSP标签与JavaBean总结_第9张图片

你可能感兴趣的:(Jsp/Servlet学习总结)