JavaWeb基础 (三):JSP 基础与会话管理


JavaWeb基础 (三):JSP 基础与会话管理

JSP是构建在Java Web应用程序上的第二种技术,是Servlet技术的补充,而不是取代Servlet技术。

JSP本质即Servlet,本文通过介绍一些JSP基本的语法和使用还有JSP九大对象,来对HttpServletRquest,HttpServletResponse,HttpSession,Cookie对象的一些方法进行了补充介绍。

这篇文章也对会话管理简要介绍了什么是会话管理以及4种会话管理技术URL重写,隐藏域,以及最重要的Session和Cookie。

JSP 概述

JavaServer Pages(JSP)本质上就是一个Servlet

JSP在JSP容器中运行,一个Servlet容器通常也是JSP容器,例如,Tomcat就是一个Servlet/JSP容器。JSP主要负责与用户交互,将最终的界面呈现给用户。实际上就是在HTML中嵌入Java代码。

Tomcat在接收到一个Jsp请求时的流程:

  1. 转换JSP页面到JSP页面实现类,该实现类是一个实现 JspPage接口 或 HttpJspPage子接口的Java类。JspPage是 Servlet的子接口,这使得每一个JSP页面都是一个Servlet

    该实现类的类名由Servlet/JSP容器生成。如果出现转换错误,则相关错误信息将被发送到客户端。

  2. 如果转换成功,Servlet/JSP容器随后编译该Servlet类,并装载和实例化该类,像其他正常的Servlet一样执行生命周期操作。

  3. 对于同一个JSP页面的后续请求Servlet/JSP容器会先检查JSP页面是否被修改过。

    如果是,则该JSP页面会被重新翻译、编译并执行。

    如果不是,则执行已经在内存中的JSP Servlet。

JSP 基本语法

  1. JSP 脚本:执行Java逻辑代码

    <%
    	// Java 代码
    %>
    
  2. JSP 声明:定义Java方法

    <%!
    	public void method() {
        	...
    	}
    %>
    
  3. JSP 表达式:把Java对象直接输出到HTML页面

    <%=
    	// Java变量
    %>
    

示例:JSP 中使用for循环

<%
    List<User> users = new ArrayList<>();
    users.add(new User("张三", 20));
    users.add(new User("李四", 21));
    users.add(new User("王五", 22));
%>

<table>
    
    <tr>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    
    <%
    	for (int i = 0; i < users.size(); i++) {
    %>
    
    <tr>
        <td><%=users.get(i).getName()%></td>
        <td><%=users.get(i).getAge()%></td>
    </tr>
    
    <%
    	}
    %>
    
</table>

JSP 隐式对象 (九大内置对象)

在调用Servlet 时,Servlet 容器会传递几个对象给它运行的Servlet。

例如,可以通过Servlet的service方法拿到HttpServletRequestHttpServletResponse 对象

以及可以通过init方法访问到ServletConfig 对象

此外,可以通过调用HttpServletRequest 对象的getSession 方法访问到HttpSession 对象。

在JSP中,可以通过使用隐式对象来访问上述对象

  1. request:表示一次请求,HttpServletRequest
  2. response:表示一次响应,HttpServletResponse
  3. pageContext:页面上下文,获取页面信息,PageContext
  4. session:表示一次会话,保存用户信息,HttpSession
  5. application:表示当前Web应用,全局对象,保存所有用户的共享信息,SevletContext
  6. config:当前JSP 对应的Servlet的ServletConfig,获取当前Servlet的信息,ServletConfig
  7. out:向浏览器输出数据,JspWriter
  8. page:当前JSP 对应的Servlet 对象,HttpJspPage
  9. exception:表示JSP 页面发生的异常,Throwable

常用的是:request,response,session,application

reques 常用方法

  1. 获取客户端传来的参数

    String getParameter(String key)

  2. 通过键值对的方式保存数据

    void setAttribute(String key, Object value)

  3. 通过key 取出 value

    Object getAttribute(String key)

  4. 返回一个RequestDispatcher 对象,该对象的forwar(request, respones)方法用于请求的转发,页面之间的跳转

    RequestDispatcher getRequestDispatcher(String path)

  5. 获取客户端传来的多个同名参数的values

    String[] getParameterValues()

  6. 指定每个请求的编码

    void setCharacterEncoding(String charset)

response 常用方法

  1. 重定向,页面之间的跳转

    sendRedirect(String path)

    请求转发:

    • 是将同一个请求传给下一个页面
    • 是同一个请求在服务器之间传递,地址栏不变,也称为服务器跳转

    重定向:

    • 是创建一个新的请求传给下一个页面,之前的请求结束生命周期
    • 由客户端发送一次新的请求,来访问跳转后的目标资源,也成为客户端跳转

案例:用户登录,登陆成功,跳转到首页(转发),否则重新回到登陆页面(重定向)

login.jsp

  <form action="/login" method="post">
    <table>
      <tr>
        <td>用户名:</td>
        <td><input type="text" name="username"></td>
      </tr>
      <tr>
        <td>密码:</td>
        <td><input type="password" name="password"></td>
      </tr>
      <tr>
        <td><input type="submit" value="提交"/></td>
        <td><input type="reset" 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值