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 + '\'' + '}'; } }
创建与实体类相对应的表
表-->类
字段-->属性
行记录-->对象