JSP--原理

主要内容:

1.JSP基础

2.Cookie

3.HttpSession

==========================================

JSP基础

1.jsp的作用

  *Servlet:

    >缺点:不适合设置html响应体,需要大量的response.getWriter().print("html");

    >优点:动态资源,可以编程。

  *html:

    >缺点:html是静态页面,不能包含动态信息

    >优点:不用为输出html标签而发愁

  *jsp:(Java Server Pages)

    >优点:在原有的html基础之上添加了java脚本,构成jsp页面。

2.jsp和Servlet的分工:

  *JSP:

    >作为请求发起页面,例如显示表单、超链接。

    >作为请求结束页面,例如显示数据。

  *Servlet:

    >作为请求中处理数据的环节。

3.jsp的组成

  *jsp=html + java脚本 + jsp标签(指令)

   *jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象。例如:request对象、out对象

  *3种java脚本:

    >   <%...%>:java 代码片段(常用),用于定义0~N条Java语句!---->方法里能写什么它就能放什么。

    >    <%=...%>:Java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果。--->response.getWriter().print(...);这里能放什么,它就可以放什么!

    >     <%!...%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)。--->类体中可以放什么,它就可以放什么。

      class MyClass{

        成员;

        方法;

        构造器;

        构造代码块;

        静态块;

        内部类;

      }

  案例:演示jsp中java脚本的使用!

<!-- 它是jsp指令,也是一种特殊的标签! -->
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- Java代码的片段 -->
<%
String path = request.getContextPath();//获取项目名
/*
http://localhost:8080/XJS_JSP/
*/
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//获取协议名+服务器名+服务器端口号+path项目名+
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
      <!-- 向页面输出basePath -->
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  
  <body>
    This is my JSP page. <br>
    <%
        int a=10;
     %>
     <br>
     <%
         out.print(a);
      %>
      <%=a %><!-- 输出 -->
      
  </body>
</html>

  案例:演示jsp与servlet分工!

form.jsp

1 form.jsp
2 
3     <form action="/XJS_JSP/AServlet" method="post">
4         整数1:<input type="text" name="num1" value="">
5         整数2:<input type="text" name="num2" value="">
6         <input type="submit" value="提交">
7     </form>

 result.jsp

1 <body>
2         结果是:<%=request.getAttribute("sum") %>
3   </body>

AServlet.java

 1 public class AServlet extends HttpServlet {
 2     public void doPost(HttpServletRequest request, HttpServletResponse response)
 3             throws ServletException, IOException {
 4         String num1=request.getParameter("num1");
 5         Integer n1 = Integer.valueOf(num1);
 6         String num2 = request.getParameter("num2");
 7         Integer n2 = Integer.valueOf(num2);
 8         int c=n1+n2;
 9         request.setAttribute("sum", c);
10         //转发到a.jsp
11         RequestDispatcher rd=request.getRequestDispatcher("/result.jsp");
12         rd.forward(request, response);
13     }
14 
15 }

4.jsp原理(理解)

  *jsp其实是一种特殊的Servlet

    >当jsp页面第一次被访问时,服务器会把jsp编译成java 文件(这个java其实是一个servlet类)

    >然后再把java编译成.class文件

    >然后创建该类对象

    >最后调用它的service()方法

    >第二次请求同一jsp时,直接调用service()方法。

  *在tomcat的work目录下可以找到jsp对应的.java源代码。

  *查看jsp对应的java文件:

    >java脚本

    >html

在这些源文件中的jspService()方法中,已经声明过了jsp的9大内置对象 ,以及对内置对象的赋值,然后你就可以在jsp中直接使用内置对象了。

5.jsp注释

  *  <%-- ... --%>:当服务器把jsp编译成Java文件时已经忽略了注释部分!不会在客户端浏览器显示!!!

<!--  HTML注释  -->会出现在编译后的Java代码中,也会发送到客户端的F12开发人员(源码界面),但不会在页面显示!!!

原文地址:https://www.cnblogs.com/xjs1874704478/p/10838374.html