JSP,JavaBean

概述:

  Java Server Pages:java服务端页面,也和Servlet一样,用于动态Web技术

  特点:与html相似

  区别:

    HTML只给用户提供静态的数据

    jsp页面中可以嵌入java代码,为用户提供动态数据

 

JSP原理

  jsp如何执行的

    代码层面没有任何问题

    服务器内部工作

    jsp最终会转换成一个java类

 

Jsp本质上就是一个servlet(因为它是继承的HttpServlet)

//初始化
    public void _jspInit(){

}

//销毁
    public void _jspDestory(){

}

//JSPService
    public void _jspService(HttpServletRequest request,HttpServletResponse response)

 

内置的一些对象

    final javax.servlet.jsp.PageContext pageContext;//页面上下文
    final javax.servlet.ServletContext application; //applicationContext
    final javax.servlet.ServletConfig config; //config 配置
    javax.servlet.jsp.JspWriter out = null; //输出对象
    final java.lang.Object page = this;//page:当前页

 

jsp文件编译过程

 

8.5,九大内置对象

  PageContext  存东西

  Request  存东西

  Response

  Session  存东西

  Application  [ServletContext],存东西

  config  [ServletConfig]

  out

  page

  exception

    pageContext.setAttribute("name","king一号"); //保存的数据只在一个页面有效
    request.setAttribute("name2","king二号"); //保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","king三号"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","king四号");//保存的数据只在服务器有效,从打开服务器到关闭服务器


<%--脚本片段中的代码,会被原封不动的生成到.jsp.java
    要求:这里面的代码必须保证java语法的重要性
--%>
<%
   //从pageContext取出,通过寻找方式找
    //从底层到高层(作用域):
    String name = (String) pageContext.findAttribute("name");
    String name2 = (String) pageContext.findAttribute("name2");
    String name3= (String) pageContext.findAttribute("name3");
    String name4= (String) pageContext.findAttribute("name4");
    String name5= (String) pageContext.findAttribute("name5");


%>

<%--推荐使用el表达式输出 ${}--%>
<h1>取出的值为:</h1>
<h3>${name}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>

</body>
</html>

 request:客户端向服务器发送请求,产生的数据 ,用户看完就没用了,比如:新闻

session::客户端向服务器发送请求,产生的数据 ,用户用完一会还用,比如:购物车

application::客户端向服务器发送请求,产生的数据 ,一个用户用完了,其他用户还可以使用,比如聊天数据

 

 

扩展:双亲委派机制,RT.jar

          扩展类

          应用

  向上寻找,向下使用,因此当创建那你与系统中某一方法名字相同的时候,调用时永远也不会调用到用户这里

 

JSP标签,JSTL标签,EL表达式

注意:需要导包,才能使用

        <!--jstl表达式的依赖-->
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api -->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
        </dependency>

        <!--jstl需要用到标签的依赖库-->
        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

EL表达式:${}

  获取数据

  执行运算

  获取web开发的常用对象

 

JSTL表达式

  JSTL标签库的使用就是为了弥补HTML标签的不足;

  他自定义的许多标签,可以供我们使用,标签的功能和java代码一样

  

  核心标签:使用前必须引用的库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

  

 

 

 JavaBean

  实体类

  javaBean有特定的写法:

    必须要有一个无参构造

    属性必须私有化

    必须要有get/set方法

   一般用来和数据库的字段做映射 ORM;

   ORM:对象关系映射

    表-->类

    字段-->属性

    行记录-->对象

过程:

创建实体类

package com.king.pojo;

//实体类,一般时和数据库的表结构一一对应
public class People {

    private int id;
    private String name;
    private int age;
    private String address;

    public People() {
    }

    public People(int id, String name, int age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }

    public void setId(int id) {
        this.id = id;
    }

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

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

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

 

创建与实体类相对应的表

    表-->类

    字段-->属性

    行记录-->对象

 

    

 

 

  

  

posted @ 2020-10-07 10:50  凸然猿  阅读(152)  评论(0编辑  收藏  举报