69期-Java SE-044_JSP-1

### JSP

JSP:Java Server Page,在 Java Web 开发中负责视图层的展示,HTML 中无法直接嵌入 Java 代码,JSP 就是为了解决这一问题,JSP 就是将 HTML 代码与 Java 代码进行整合的一个中间层组件。

JSP 本质上就是一个 Servlet,当客户端第一次访问一个 JSP 资源时,服务器接收到一个后缀为 jsp 的 URL 请求,将这个请求交给 JSP 引擎处理,每一个 JSP 资源第一次被访问时,JSP 引擎会将它翻译成一个 Servlet,并且进行编译,生成 class 文件,Web 容器就可以像调用 Servlet 一样来访问 JSP。

JSP 就是在 HTML 中嵌入 Java 代码,如何嵌入?

1、JSP 脚本

```jsp
<%Java代码%>
```

2、JSP 声明

```jsp
<%!
声明一个全局方法
%>
```

3、JSP 表达式

```jsp
<%=Java变量%>
```

### JSP内置对象

request、response、pageContext、session、application、config、out、page、exception

1、request:HttpServletRequest 类的实例化对象,接收客户端请求。

2、response:HttpServletResponse 类的实例化对象,为客户端作出响应。

3、pageContext:PageContext 类的实例化对象,页面上下文,获取页面信息。

4、session:HttpSession 类的实例化对象,表示浏览器和服务器之间的一次会话,保持一个用户信息。

5、application:ServletContext 类的实例化对象,表示当前 Web 应用,全局对象,保存所有用户的共享数据。

6、config:当前 JSP 对应的 Servlet 的 ServletConfig 对象,表示当前 Servlet。

7、out:JspWriter 类的实例化对象,向客户端输出信息。

8、page:指当前 JSP 对应的 Servlet 对象。

9、exception:表示 JSP 页面发送的异常。

实际开发中常用的内置对象:pageContext、request、response、session、application

request 的常用方法:

1、String getParameter(String name) //获取客户端传来的参数

2、void setAttribute(String key,Object value) //通过键值对的形式来保存数据

3、Object getAttribute(String key) //通过键取出数据

4、String[] getParameters(String name) //获取客户端传来的多个参数

5、void setCharacterEncoding(String charset) //指定每个请求的编码

6、RequestDispatcher getRequestDispatcher(String path) //返回一个 RequestDispatcher 对象,该对象的 forward 方法用于转发请求。

```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <%
      String name = "Hello World";
      request.setAttribute("name",name);
      request.getRequestDispatcher("test.jsp").forward(request,response);
    %>
  </body>
</html>
```

```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        String name = (String)request.getAttribute("name");
    %>
    <h1>test</h1>
    <h2><%=name%></h2>
</body>
</html>
```

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: southwind
  Date: 2019-07-06
  Time: 20:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
    <%
      String name = "Hello World";
      request.setAttribute("name",name);
      request.getRequestDispatcher("test.jsp").forward(request,response);
    %>
  </body>
</html>

test.jsp

<%--
  Created by IntelliJ IDEA.
  User: southwind
  Date: 2019-07-06
  Time: 21:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        String name = (String)request.getAttribute("name");
    %>
    <h1>test</h1>
    <h2><%=name%></h2>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
</web-app>

原文地址:https://www.cnblogs.com/HiJackykun/p/11182674.html

时间: 2024-08-30 17:39:29

69期-Java SE-044_JSP-1的相关文章

69期-Java SE-035_MySQL-6 存储过程、SQL练习 -doing

### 存储过程 存储过程是一组为了完成特定功能的 SQL 语句集合,经过编译后存储在数据库中,用户通过指定存储过程的名称以及参数来执行相应的存储过程. 一次编写,多次调用,避免开发人员重复编写相同的 SQL 语句,存储过程是在数据库中存储和执行的,可以减少客户端和服务端之间的数据传输,从而提高效率. ### 优点 - 模块化的程序设计,只需要创建一次存储过程,以后就可以在程序中调用该存储过程任意次. - 执行速度更快,如果某个操作需要执行大量的 SQL 语句或者需要重复执行 SQL 语句,存储

69期-Java SE-031_MySQL-001-002 创建表、MySQL数据类型、数据的管理(数据库结构、数据表、数据)、SQL 函数

### 创建表 1.创建数据库 ```sql create database mstest default character set utf8 collate utf8_general_ci ``` 2.创建数据表 ```sql create table user( id int, name varchar(11) ) ``` Java 数据类型:基本数据类型 byte short int long double float boolean char ? 引用类型 MySQL 数据类型 - 整

69期-Java SE-002_变量、运算符-001-002

- 声明变量的数据类型和变量名. - 给内存空间赋值,该值就是变量值. - 通过变量名使用变量. ```java public class Hello { public static void main(String[] args) { //1.开辟内存空间,定义变量名 int num1; //2.赋值 num1 = 10; //3.使用变量 System.out.println(num1); } } ``` ```java public class Hello { public static

69期-Java SE-003_流程控制、循环-001-002

### 位运算符 十进制和二进制的转换. - 十进制转二进制:目标数除以二,如果能除尽,则该位计作零,如果除不尽,则该位计作一,再对商继续除以二,以此类推,直到商为零,然后将每一位的结果进行反序组合就是对应的二进制结果,10 转为二进制 1010,17 转为二进制 10001 - 二进制转十进制:从目标数最右侧算起,本位的数值乘以本位的权重,权重就是2的第几位的位数减一次方,如果第1位就是2的(1-1)次方,第2位就是2的(2-1)次方,第3位就是2的(3-1)次方…,将每一位的数值和本位权重相

69期-Java SE-004_循环、数组-001-002

Hello.java import java.util.Scanner; public class Hello { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = "yes"; int num; while(str.equals("yes")) { System.out.print("请输入学生编号:")

69期-Java SE-036_MySQL-7 SQL练习 -doing

第一道: 现有图书管理数据库的三个关系模式,他们的字段分别如下: 图书表:总编号, 分类号, 书名, 作者, 出版单位, 单价 读者表:借书证号, 单位, 姓名, 性别, 职称, 地址 借阅表:借书证号, 总编号, 借书日期 以上表对应的字段明细如下: book : b_no ,b_type ,b_name , b_author ,b_publish ,b_price reader : r_no , r_unit , r_name ,r_sex ,r_pro ,r_address borrow

69期-Java SE-005_二维数组、综合练习-001-002

Test.java public class Test { public static void main(String[] args) { int[] array = {73,80,62,93,96,87}; //求最大值 int max = array[0]; for(int i=1;i<array.length;i++) { if(array[i]>max) { max = array[i]; } } System.out.println("数组中的最大值是"+max

69期-Java SE-007_面向对象-1-001-002

Student.java public class Student { //定义属性 int id; String name; int age; int userFirstName; double myScore; //定义方法 public static int add(int num1,int num2) { return num1+num2; } public static void add2(int num1,int num2) { System.out.println(num1+num

69期-Java SE-009_面向对象-3-001-002

### 多态 一个事物有多种表现形态. - 定义方法时形参为父类,调用方法时传入的参数为子类对象. - 定义方法时返回值数据类型为父类,调用方法时返回子类对象. 具有继承关系的两个对象可以相互转换,子类转父类即父类引用指向子类对象,可以自动完成,无需强制转换,也叫做向上转型. 父类转子类即子类引用指向父类对象,不能自动完成转换,需要强制转换,也叫做向下转型. ### 抽象方法和抽象类型 如果一个方法只有方法声明而没有具体的方法实现,那么该方法就是抽象方法,在方法定义处使用 abstract 关键

69期-Java SE-008_面向对象-2-001-002

User.java public class User { public static String name; public static int num; static { num++; System.out.println("执行了静态代码块"); } static { System.out.println("static2"); } } Cashier.java package entity; public class Cashier { private M