JSP简单入门

500 JSP 发布项目到服务器并访问

在这里插入图片描述

在这里插入图片描述

1.创建web项目

2.发布到服务器上

目录不可含中文!

D:\environment\apache-tomcat-7.0.79

tomcat和idea关联 项目和tomcat关联:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

为什么需要Tomcat服务器

在这里插入图片描述

在这里插入图片描述

最终项目变成两个!

本地目录:C:\Users\37310\IdeaProjects\jsp01

tomcat发布目录:C:\Users\37310\IdeaProjects\jsJquery\out\artifacts\jsp01_war_exploded

在这里插入图片描述

501 JSP 发布项目到服务器并访问总结

1.清楚为什么项目发到服务器上!

2.清楚部署目录和开发目录!

3.认识url http://localhost:8080/jsp01/cart/cart.html

4.控制台乱码处理

https://www.cnblogs.com/yanglichen/p/11435628.html

5.http://localhost:8080/jsp01/ 直接找index.jsp

502 JSP 获得时间案例

获得时间:
<%--
  Created by IntelliJ IDEA.
  User: 37310
  Date: 2021/7/12
  Time: 3:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script>
        function demo1() {
            var date = new Date();
            var time = date.toLocaleString();
            document.getElementById("sp").innerText=time;
        }
    </script>
</head>
<body οnlοad="demo1()">
获得时间<span id="sp"></span>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

如何获取服务器时间?
<body οnlοad="demo1()">
获得时间(浏览器)<span id="sp"></span>
<%--小脚本:可以书写java代码--%>
<%
    Date date = new Date();
    String time = date.toLocaleString();

%>
<%--表达式--%>
<%="获得时间服务器时间:"+time%>
</body>
为什么下面这个是服务器时间?

在这里插入图片描述

原理示意图:

在这里插入图片描述

如果加上 Thread.sleep(3000) 哪个时间靠前?

<%
    Date date = new Date();
    String time = date.toLocaleString();
    Thread.sleep(3000);
%>
<%--表达式--%>
<%="获得时间2:"+time%>

在这里插入图片描述

JSP = Java Server Pages

Sun公司推出的动态网页技术,类似的技术还包括ASP、PHP。相对的技术是HTML(静态网页技术)

动态生成网页数据,而不是有动态效果的网页!

JSP是在HTML中嵌入Java脚本代码

JSP是服务器端技术(JavaScript是客户端技术)

由应用服务器来编译和执行嵌入的Java脚本代码,然后将生成的整个页面信息返回给客户端

503 JSP Tomcat的讲解

在这里插入图片描述

504 JSP 统计网站访问人数A

<%--
  Created by IntelliJ IDEA.
  User: 37310
  Date: 2021/7/12
  Time: 13:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>统计网站的访问人数</title>
</head>
<body>
    <%
        int count =0;
        count++;
    %>
    <%="本网站访问人数为"+count%>
</body>
</html>

在这里插入图片描述

该如何解决?

C:\Users\37310.IntelliJIdea2019.3\system\tomcat\Unnamed_jsJquery

查看服务器解析后的java代码如下:

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("    <title>统计网站的访问人数</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("    ");

        int count =0;
        count++;
    
      out.write("\r\n");
      out.write("    ");
      out.print("本网站访问人数为"+count);
      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>\r\n");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }

优化:

<%!
    int count =0;
%>
<%

    count++;
%>
<%="本网站访问人数为"+count%>

成功,刷新后可以+1!

int count =0;变成成员变量!

总结

jsp的本质是一个servlet(就是类) 单实例多线程的程序

jsp页面中书写java代码的方式有3中

A、小脚本

B、表达式

C、声明式

[3]小脚本和声明式的区别

A、小脚本中声明的变量是局部的变量 ,在声明式中声明的变量是成员变量

B、小脚本中不可以定义方法 在声明式中可以定义方法

C、在小脚本中可以使用jsp的内置对象 在声明式中不可以使用
[4]所有的注释

A、java中的注释 3种

B、HTML中注释

C、JSP中注释

推荐使用jsp中的注释

优点:节省网络的带宽,可以增快访问的速度

505 JSP 统计网站访问人数B

<%--
  Created by IntelliJ IDEA.
  User: 37310
  Date: 2021/7/12
  Time: 13:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>统计网站的访问人数</title>
</head>
<body>
    <!--动作标识-->
<jsp:include page="head.jsp"></jsp:include>
<div style="height: 300px">

    <%--    声明式--%>
    <%!
        int count =0;
    %>
    <%--    小脚本--%>
    <%
        count++;
    %>
    <hr/>
    <%="本网站访问人数为"+count%>
</div>

<hr/>
<jsp:include page="foot.jsp"></jsp:include>
</body>
</html>

指令标识

<%--指令标识 page taglib taglib--%>
<%@include file="head.jsp"%>
<%--
  Created by IntelliJ IDEA.
  User: 37310
  Date: 2021/7/12
  Time: 13:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>统计网站的访问人数</title>
</head>
<body>
<%--动态包含--%>
<%--<jsp:include page="head.jsp"></jsp:include>--%>
<%--<jsp:forward page=""></jsp:forward>--%>
<%--指令标识 page taglib taglib--%>
<%--静态包含--%>
<%@include file="head.jsp"%>
<div style="height: 300px">


    <%--    声明式--%>
    <%!
        int count =0;
    %>
    <%--    小脚本--%>
    <%
        count++;
    %>
    <hr/>
    <%="本网站访问人数为"+count%>
</div>

<hr/>
<jsp:include page="foot.jsp"></jsp:include>
</body>
</html>
动态包含和静态包含的区别?
  1. 静态的引入式不会产生class文件 ,动态的引入式产生class文件

在这里插入图片描述

  1. 静态的引入式把代码原封不动的复制到主文件中,动态的引入是相当于方法的调用

在这里插入图片描述

在这里插入图片描述

3 静态的引入的方式引入文件和主文件中是不可以存在同名的变量 ,动态的引入可以存在

4 静态的引入产生的时机是第一个阶段 ,动态的引入式产生产生的时机是第三阶段

jsp执行步骤分为几步?

翻译–》编译–》执行

在这里插入图片描述

506 JSP 常用概念的解析

在这里插入图片描述

1.动态网页和静态网页
2. JSP/ASP/PHP的比较
3 B/S和C/S

在这里插入图片描述

4 常用服务器类型

507 JSP登录案例的实现

登陆页面

<%--
  Created by IntelliJ IDEA.
  User: 37310
  Date: 2021/7/13
  Time: 1:34
  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>
<h3>登陆页面</h3>
<form action="doLogin.jsp">
    <p>
        用户名:<input type="text" name="uname"/>

    </p>
    <p>
        密码:<input type="text" name="pwd"/>

    </p>
    <p>
        <input type="submit" value="登录"/>
    </p>
</form>
</body>
</html>

http://localhost:8080/jsp01/doLogin.jsp?uname=2&pwd=4

用name的值进行传递!

处理登录操作:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>处理登录操作</title>
</head>
<body>
<%--http://localhost:8080/jsp01/doLogin.jsp?uname=2&pwd=4--%>
    <%
        //[A]接收Login.jsp传过来的数据

       String u = request.getParameter("uname");
       String p = request.getParameter("pwd");
        //[B]数据处理--拿着用户和密码去数据库作比较
        boolean flag = false;
        if("sxt".equals(u)&&"123".equals(p)){
            flag =true;
        }
        //[C]给用户做出响应
        if(flag){
            out.print("登陆成功");
        }else {
            out.print("登录失败");
        }
    %>
</body>
</html>

在这里插入图片描述

508 http协议理解

在这里插入图片描述

1、HTTP工作原理:

遵循请求(Request)/应答(Response)模型

无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端

请求前需要建立连接,响应后会断开连接;连接不会持续存在

一个页面有多个图片、JS、CSS等,就会发生多个请求和响应

HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1 新的请求可以在上次请求建立的TCP连接之上发送,连接可以复用(Connection: keep-alive)

HTTP2:

2、HTTP协议特点

支持浏览器/服务器模式。

简单快速: HTTP本身既简单又能有效地处理大量请求。

灵活:HTTP允许传输任意类型数据。由Content-Type加以标记。

无状态:Web浏览器和Web服务器之间不建立持久的连接. 协议对于事务处理没有记忆能力。

在处理记忆登录用户名、记忆购物车多个条目信息环境,只有HTTP协议是不能实现的

3、HTTP请求

请求方式的格式为:

请求行:统一资源定位符(URL)、协议版本号

消息报头:包括请求修饰符、客户机信息

可能的内容:POST请求的内容

请求方法

Get、Post、DELETE、HEAD、PUT、TRACE、CONNECT、OPTIONS

重点掌握GET和POST

HTTP URL (统一资源定位符):

格式:http://host[“:”port][abs_path]

http://127.0.0.1:8080/digitalhome/pic/left.html

http://www.sina.com

http://sports.sina.com.cn/bbs/

4、HTTP响应

响应信息格式

状态行,包括信息的协议版本号、一个成功或错误的代码,

消息报头:包括服务器信息、字符编码、MIME类型

响应正文

状态代码有三位数字组成,第一个数字定义响应类别,有五种取值:

1xx:指示信息–表示请求已接收,继续处理

2xx:成功–表示请求已被成功接收、理解、接受

3xx:重定向–要完成请求必须进行更进一步的操作

4xx:客户端错误–请求有语法错误或请求无法实现

5xx:服务器端错误–服务器未能实现合法的请求

常见状态代码、状态描述、说明:

200 OK //客户端请求成功

302: REDIRECT //重定向

403 Forbidden //服务器收到请求,但是拒绝提供服务

404 Not Found //请求资源不存在,如输入了错误的URL

500 Internal Server Error //服务器发生不可预期的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值