小工具知识网

当前位置: 首页 > 行业知识 > JSP期末要点复习

行业知识

JSP期末要点复习

2026-10-27 17:04:17 来源:互联网转载

一、JSP工作原理

    1.客户端请求JSP页面:用户通过浏览器发送一个请求到服务器,请求一个特定的JSP页面。这个请求被服务器上的Web容器(如Apache Tomcat)接收。

    2.JSP转换为Servlet:当JSP页面第一次被请求时,Web容器将JSP文件转换成一个Java Servlet。这个过程涉及到将JSP页面中的标记、脚本和JSP指令转换成Java代码。如果JSP页面已经被转换并编译成Servlet,且自上次修改以来没有变化,Web容器将重用已有的Servlet。

    3.编译Servlet:转换生成的Java Servlet代码被编译成字节码(.class文件)。这使得Web容器可以像处理任何其他Servlet一样来处理JSP页面。

    4.Servlet处理请求:一旦JSP页面对应的Servlet被编译,Web容器就会加载并执行该Servlet。Servlet执行过程中,会执行其中的Java代码,并且根据代码逻辑生成动态内容。这包括从数据库检索数据、执行业务逻辑等。

    5.生成响应:Servlet执行完毕后,将生成的HTML内容(可能还包括CSS、JavaScript等)作为响应返回给客户端。这个响应是通过Servlet的response对象生成的。

    6.客户端显示响应:最后,浏览器接收到从Servlet返回的响应,并渲染HTML内容,用户便可以看到生成的页面。

二、锚点链接实现

目录使用href="#xxx"

跳转目标使用

    锚点链接示例跳转到第一节 |跳转到第二节

第一节

这是第一节的内容。

第二节

这是第二节的内容。

三、JSP注释

1.普通注释

 

2.隐式注释

 

    普通注释用户可以通过网页源码查看到注释,而隐式注释用户不可查看。当JSP页面被转换和编译成Servlet时,这些隐式注释会被完全忽略,不会出现在生成的HTML中,客户端不可见。

四、 JSP指令元素

1.include指令

    include指令的作用是在一个页面中导入其他JSP页面。

 

2.page指令

    page指令用于定义有关JSP页面的各种属性。

    language:声明用于JSP页面的脚本语言。默认值为"java"。

    extends:指定JSP页面应继承的类。通常不需要用到,因为JSP页面默认继承自javax.servlet.jsp.HttpJspPage。

    import:导入JSP页面中使用的Java类或包。多个包或类之间用逗号分隔。

    session:指定JSP页面是否可以访问HTTP会话(session)。默认值为"true"。

    contentType:设置响应的MIME类型和字符编码。默认值为"text/html; charset=ISO-8859-1"。

    ......

 

3.taglib指令

    taglib指令用于引入一些特定的标记库以简化JSP页面的开发。

 

     例如从JSP标准标记库的core库引入前缀为c的标记:

 

综合案例:

       Sample Page with Directives

The current date and time:

五、JSP动作元素

1.动作

    动作允许在请求的时间内,在JSP页面中包含静态或动态的资源。

 

2.动作

    将一个JSP的内容传到page指定的另一个JSP中。

 

3.动作

    在JSP页面中嵌入JavaBean或脚本。

                                        

type:指定插件的类型,可以是applet或bean。

code:applet的类名或bean的对象序列化表示。

codebase:applet类文件或bean对象存放的基本URL。

archive:包含applet或bean的JAR文件名称。

width和height:指定插件在页面上的显示尺寸。

align:插件在页面中的对齐方式。

jreversion:指定运行applet或bean所需的Java插件版本。

和:用于传递参数到applet或bean。

:当插件不可用(如浏览器不支持插件或未安装相应的Java插件)时,在页面上显示的备用内容。 

4.动作

    元素用于向其他JSP元素(如、和)传递参数,通过这种方法可以将数据从一个JSP页面传递到另一个页面或组件。

  

六、JSP脚本元素

1.变量声明

   

2.方法声明

    Method Declaration in JSP

Original Message:

Upper Case Message:

 3.表达式元素

    JSP表达式元素用于直接在JSP页面中输出Java表达式的值。表达式元素由 结束。

    表达式使用案例

Current time:

10 + 20 =

七、JSP隐含对象和有效范围

request:代表客户端的请求信息。通过这个对象可以获取到客户端的请求参数、头信息等。

response:代表对客户端的响应。可以通过这个对象设置响应头、发送错误等。

pageContext:包含了与JSP页面相关的上下文信息。可以用来获取其他隐含对象、分享数据等。

session:代表用户会话,可以用来在不同的请求之间保持信息。

application:代表整个Web应用的上下文环境,可以用来在整个应用范围内共享信息。

config:代表Servlet配置的信息,可以用来获取初始化参数。

out:代表输出流,用于将内容输出到客户端。

page:代表当前的JSP页面本身,相当于在Servlet中的this关键字。

exception:代表JSP页面在执行过程中抛出的异常对象(仅在错误页面中可用)。

1.隐含对象的有效范围

    页内有效(pageContext):对象创建后只能在当前JSP页面内被访问。所有页内有效对象的引用存储在页面上下文对象(pageContext)中,使用pageContext的setAttribute()和getAttribute()方法传递数据。

    页面有效案例        

    请求有效(request) ,请求有效的对象在同一请求不同JSP页面内都可以访问。如果请求转向到同一运行时的其他资源,这些对象依然有效。请求有效的对象在请求处理结束时就会失效。

    请求有效案例    

Welcome,

    会话有效(session),会话是指客户端和服务器之间持续连接的一段时间。在这段时间内,当需要多次和服务器交互信息时,可以将有关信息存入session对象中,这些信息是会话有效的。在与服务器断线后,就会失效。 

    会话有效案例    

Welcome,

    应用有效(application),应用的作用范围是从Web应用服务器一开始执行服务一直到结束服务为止。应用有效范围最大、影响最长。

    应用有效案例    

Page visits:

    在JSP页面中,作用范围的对象分别为page、request、session、application,它们之间的关系如图所示。

2.response、out隐含对象    

    response对象, response对象和request对象功能恰好相反,request 对象封装的是客户端提交的信息,而response对象封装的是返回客户端的信息。通过 response 对象,你可以控制向客户端发送的响应的各个方面,包括设置响应头、发送错误、重定向到另一个页面等。

    使用 response.setHeader(String name, String value) 方法来设置响应头,设置内容类型为JSON:

 

    使用 response.sendRedirect(String location) 方法可以将用户重定向到另一个URL:

 

    使用 response.sendError(int sc, String msg) 方法向客户端发送一个错误响应:

 

    out对象,用于向客户发送内容的输出,通过out对象可以在在JSP页面中动态生成HTML、文本或其他类型的内容。 

 

3.getAttribute()和getParameter()的区别

    getAttribute()是用于从请求(request)或会话(session)等作用域中通过setAttribute()设置的属性获取属性值。 

    getParameter()是获取客户端中由用户提供的,比如用户在表单中输入的数据。

八、JSP使用数据库

1.连接数据库步骤及主要代码

    (1)加载数据库驱动:这是连接数据库的第一步,需要加载相应的JDBC驱动。

    (2)建立连接:使用 DriverManager.getConnection() 方法建立数据库连接。

    (3)创建Statement:通过数据库连接对象创建 Statement 或 PreparedStatement 对象,用于执行SQL语句。

    (4)执行查询:使用 executeQuery() 方法执行SQL查询,或使用 executeUpdate() 方法执行更新(如INSERT、UPDATE或DELETE)操作。

    (5)处理结果:对于查询操作,处理返回的 ResultSet。

    (6)关闭连接:完成所有的数据库操作后,关闭 ResultSet,Statement 和 Connection 对象。

 

 2.PreparedStatement连接数据库并操作

try {    // 加载JDBC驱动    Class.forName("com.mysql.jdbc.Driver");    // 使用 DriverManager 建立连接。    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "pass");        // 编写sql语句    String sql = "INSERT INTO Users (username, password, email) VALUES (?, ?, ?)";    //创建 PreparedStatement对象    PreparedStatement pstmt = conn.prepareStatement(sql);        // 执行sql语句    pstmt.setString(1, "testUser");    pstmt.setString(2, "password123");    pstmt.setString(3, "test@example.com");        // 输出结果    int affectedRows = pstmt.executeUpdate();    System.out.println("Inserted rows: " + affectedRows);        pstmt.close();    conn.close();} catch (Exception e) {    e.printStackTrace();}

3. sql标签连接数据库并操作

    SQL Tag Example    INSERT INTO users (id, name) VALUES (1, 'John Doe')    SELECT * FROM users    ID: ${row.id}, Name: ${row.name}

九、在JSP中使用JavaBean

public class ManagerForm {    private int id = 0;  //定义int类型的简单属性id    private String manager = "";  //定义String类型的简单属性manager    private String pwd = "";  //定义String类型的简单属性pwd    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getManager() {        return manager;    }    public void setManager(String manager) {        this.manager = manager;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }}

编写一个关于图书的JavaBean,假设包名为Books,类名为book,该类含有两个属性bnum和bname,包含一个方法,该方法实现:输出“我是一本图书”。(15分)

import java.io.Serializable;public class Book implements Serializable {    // 定义属性    private String bnum;    private String bname;    // 无参构造器    public Book() {    }    // bnum的getter和setter方法    public String getBnum() {        return bnum;    }    public void setBnum(String bnum) {        this.bnum = bnum;    }    // bname的getter和setter方法    public String getBname() {        return bname;    }    public void setBname(String bname) {        this.bname = bname;    }    // 一个简单的方法,输出"I am a Book"    public void showBook() {        System.out.println("我是一本图书。");    }}
    User Info

User Information

Name:

Email:

十、Servlet

import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class SimpleServlet extends HttpServlet {    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // 设置响应内容类型为 HTML    response.setContentType("text/html");        // 获取响应的 PrintWriter 对象    PrintWriter out = response.getWriter();        try {      // 输出 HTML 页面的头部      out.println("");      out.println("");      out.println("");      out.println("Simple Servlet");      out.println("");      out.println("");            // 输出当前日期和时间      out.println("

The current date and time is: " + new Date() + "

"); // 输出 HTML 页面的尾部 out.println(""); out.println(""); } finally { // 关闭 PrintWriter out.close(); } }}
      SimpleServlet    SimpleServlet        SimpleServlet    /simple  

十一、EL表达式 

    1.JSP的EL(Expression Language)表达式主要用于简化对Java代码的访问,特别是在JSP页面中获取和显示数据时。

    2.基本语法:EL表达式开始与 ${ 并以 } 结束。例如:${expression}

    3.EL表达式可以访问以下范围的对象:

       pageScope:当前页面的属性

       requestScope:与请求相关的属性

       sessionScope:与会话相关的属性

       applicationScope:与整个应用程序相关的属性

例如,要访问存储在请求范围内的属性 user,可以使用:${requestScope.user}、${user}

    4.访问JavaBean的属性:

       如果 user 是一个包含属性 name 的JavaBean,可以使用点操作符来访问这个属性:${user.name}

    5.操作和表达式

       EL提供了一系列的操作符来进行逻辑、关系和算术操作:

       算术操作:+, -, *, / (或 p), % (或 mod)

       逻辑操作:and, &&, or, ||, not, !

       关系操作:==, !=, , =

       条件操作:? :

例如:

${num1 + num2}

${user.age >= 18}

${flag ? "Yes" : "No"}

下面是一个使用EL表达式的简单JSP页面案例:

    Quick Start JSP EL        

Name: ${user.name}

   

Age: ${user.age}

           

Status: ${user.age >= 18 ? 'Adult' : 'Minor'}

           
                   
  • ${user.name} - ${user.age}
  •        

上一篇:Mqtt服务器怎么重启?

下一篇:e地通怎么连接服务器?