JavaWeb开发之JSP

1. 概述

  • jsp本质上就是一个Servlet,jsp主要负责与用户交互,将最终的界面呈现给用户
    html+js+css+java的混合文件

  • 当服务器接收到一个后缀是jsp的请求时,将该请求交给jsp引擎去处理,每一个jsp页面第一次被访问的时候,jsp引擎会将它翻译成一个Servlet文件,再由Web容器调用Servlet完成响应

  • 单纯从开发的角度开,jsp就是html中嵌入类java程序

2. jsp的三种嵌入方式

2.1 jsp脚本,执行java逻辑代码

<% Java代码 %>

2.2 jsp声明:定义java方法

 
<%!
声明 Java 方法
%>

2.3 jsp表达式:把java对象直接输出到html页面中

<%=Java变量 %>

例子:

 
<%!
public String test(){ return "HelloWorld";
} %>
<%
String str = test(); %>
<%=str%>

3.jsp的九个内置对象

  • 1.request:表示一次请求,HttpServletRequest

  • 2.response:表示一次响应,HttpServletResponse

  • 3.pageContext:⻚面上下文,获取⻚面信息,PageContext。

  • 4.session:表示一次会话,保存用户信息,HttpSession。

  • 5.application:表示当前 Web 应用,全局对象,保存所有用户共享信息,ServletContext。

  • 6.config:当前 JSP 对应的 Servlet 的 ServletConfig 对象,获取当前 Servlet 的信息。

  • 7.out:向浏览器输出数据,JspWriter。

  • 8.page:当前 JSP 对应的 Servlet 对象,Servlet。

  • 9.exception:表示 JSP ⻚面发生的异常,Exception。

常用的是 request、response、session、application、pageContext

4.request 常用方法:

  • 1、String getParameter(String key) 获取客户端传来的参数。

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

  • 3、Object getAttribute(String key) 通过 key 取出 value。

  • 4、RequestDispatcher getRequestDispatcher(String path) 返回一个
    RequestDispatcher 对象,该对 象的 forward 方法用于请求转发。
    在这里插入图片描述
    在这里插入图片描述
    在index2.jsp中得到的
    在这里插入图片描述

  • 5、String[] getParameterValues() 获取客户端传来的多个同名参数。
    在这里插入图片描述
    在这里插入图片描述

  • 6、void setCharacterEncoding(String charset) 指定每个请求的编码。
    在这里插入图片描述

5.response 常用方法:

1、sendRedirect(String path) 重定向,⻚面之间的跳转。
转发 getRequestDispatcher 和重定向 sendRedirect 的区别:
转发是将同一个请求传给下一个⻚面,重定向是创建一个新的请求传给下一个⻚面,之前的请求结束生 命周期。

  • 转发:同一个请求在服务器之间传递,地址栏不变,也叫服务器跳转。
  • 重定向:由客户端发送一次新的请求来访问跳转后的目标资源,地址栏改变,也叫客户端跳转。

如果两个⻚面之间需要通过 request 来传值,则必须使用转发,不能使用重定向。

6.转发与重定向的区别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例子:用户登录,如果用户名和密码正确,则跳转到首⻚(转发),并且展示用户名,否则重新回到登陆⻚面 (重定向)。
login.jsp

<%--
  Created by IntelliJ IDEA.
  User: cc
  Date: 2020/8/20
  Time: 12:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
    <form action="/check.jsp" method="post">
        用户名:<input type="text" name="username"/><br/>
        密码:<input type="password" name="password"/><br/>
        <input type="submit" value="登录"/><br/>

    </form>
</body>
</html>

check.jsp

<%--
  Created by IntelliJ IDEA.
  User: cc
  Date: 2020/8/20
  Time: 13:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>check</title>
</head>
<body>
    <%
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        if(username.equals("admin")&&password.equals("123")){
            //登录成功
            request.setAttribute("name",username);
            request.getRequestDispatcher("welcome.jsp").forward(request,response);
        }
        else{
            //登录失败
            response.sendRedirect("login.jsp");
        }
    %>
</body>

</html>

welcome.jsp

<%--
  Created by IntelliJ IDEA.
  User: cc
  Date: 2020/8/20
  Time: 13:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>welcome</title>
</head>
<body>
    <%
        String name=(String)request.getAttribute("name");

    %>
    欢迎回来!<%=name%>
</body>
</html>

输入正确并跳转
在这里插入图片描述
在这里插入图片描述
输入错误,还是在login
在这里插入图片描述

7.session

用户会话
服务器无法识别每一次 HTTP 请求的出处(不知道来自于哪个终端),它只会接受到一个请求信号,所 以就存在一个问题:将用户的响应发送给其他人,必须有一种技术来让服务器知道请求来自哪,这就是 会话技术。

会话:就是客户端和服务器之间发生的一系列连续的请求和响应的过程,打开浏览器进行操作到关闭浏 览器的过程。

会话状态:指服务器和浏览器在会话过程中产生的状态信息,借助于会话状态,服务器能够把属于同一 次会话的一系列请求和响应关联起来。

实现会话有两种方式:

  • session
  • cookie

属于同一次会话的请求都有一个相同的标识符,sessionID

7.1 session方法

  • session 常用的方法:
  • String getId() 获取 sessionID
  • void setMaxInactiveInterval(int interval) 设置 session 的失效时间,单位为秒 int
  • getMaxInactiveInterval() 获取当前 session 的失效时间
  • void invalidate() 设置 session 立即失效
  • void setAttribute(String key,Object value) 通过键值对的形式来存储数据 Object
  • getAttribute(String key) 通过键获取对应的数据
  • void removeAttribute(String key) 通过键删除对应的数据

8.HTTP 请求状态码

  • 200:正常
  • 404:资源找不到
  • 400:请求类型不匹配
  • 500:Java 程序抛出异常

9.JSP 内置对象作用域

4个
page、request、session、application
setAttribute、getAttribute

  • page 作用域:对应的内置对象是 pageContext。
  • request 作用域:对应的内置对象是 request。
  • session 作用域:对应的内置对象是 session。
  • application 作用域:对应的内置对象是 application。
  • page < request < session < application
  • page 只在当前⻚面有效。
  • request 在一次请求内有效。
    session 在一次会话内有效。
  • application 对应整个 WEB 应用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值