Web 基础14 JSP入门 语法

1.1 JSP简介

1.1.1 JSP概述

  • JSP概述
    • 全称是Java Server Pages,他和Servlet一样,也是Java所提供的一门用于开发动态WEB资源的技术,
    • JSP也是JavaEE的规范之一,JSP的底层其实就是Servlet。
  • JSP的特点
    • 编写JSP就像编写HTML一样
  • JSP和HTML的区别
    • HTML只能向客户端提供静态数据
    • JSP技术允许我们在页面中嵌套Java代码,从而可以向客户端提供动态的数据

1.1.2 JSP与Servlet的区别

  • Servlet本身的缺点
    • 每一个Servlet都需在web.xml进行配置
    • 显示html元素的时候非常麻烦
  • jsp = html + java + jsp自身的东西 本质Servlet
    • 02-08年 基本上开发全部都是用jsp 可读性非常(html里面加了java代码)
    • 缺点 :单纯的jsp页面不适合做这种大型项目

1.2 JSP的原理

  • 原理:
    • 一个JSP文件第一次被客户端访问时(也包括JSP文件修改后的第一次被访问),WEB服务器会把JSP文件翻译成一个Servlet,
    • 客户端访问JSP文件,其实访问的就是JSP文件翻译后的Servlet,
    • JSP的底层原理其实就是Servlet。
Web 基础14 JSP入门 语法_第1张图片
jsp原理.png
  • 一些对Servlet和jsp理解
    • jsp本质是一个Servlet,他的运行也需要容器(tomcat)支持
    • 在jsp和Servlet文件中都可以编写java和html代码,不同的是
      • Servlet虽然可以动态的生成页面内容,但是更加偏向于逻辑的控制
      • jsp最终被转换成 Servlet 在jvm里面执行,在jsp里面虽然可以编写java代码,但是他更加偏向于页面内容的展示
      • 在MVC架构模式中,C通常是由Servlet充当,V通常是由jsp充当

1.3 JSP入门案例

在网页上显示当前时间

<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    

hello JSP

<% //脚本片段 //向客户端发送当前的系统时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String now = sdf.format(new Date()); //使用内置对象out,可以把数据发送给客户端 out.println(now); %>

1.4 JSP默认编码设置

在入门案例案例中可以看到三个编码属性

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  • contentType服务器端发给客户端的内容编码的设置(与response.setContentType("")作用是相同)
  • pageEncoding 当前jsp页面本身的编码

  • 是告诉浏览器 生成的页面(这个页面是用来展示服务器发来的数据) 所使用的格式和编码,浏览器会根据此来调用相应的字符集来显示网页内容
  • http-equiv类似我们http的头部协议,他回应浏览器一些有用的信息,以帮助浏览器正确和精确的显示网页内容
  • 建议:工作空间 项目 外加jsp页面 都设置成UTF-8
  • 步骤:window - preference -搜索jsp 把Encoding改成UTF-8即可

1.5 模版元素&脚本片段

  • 模版元素
    • JSP页面中的HTML标签,CSS样式,以及JS都称之为JSP的模版元素,模版元素定义了页面的结构和外观,
    • JSP翻译后的Servlet中,模版元素会被输出流对象直接发送到客户端。
  • 脚本片段
    • JSP页面中可以嵌套Java代码,Java代码要定义在JSP的脚本片段中,也就是<%%>里面,
    • JSP页面中可以有多个脚本片段,
    • 多个脚本片段之间,可以嵌套文本,嵌套HTML的标签,嵌套其他的JSP元素。
    • 注意: 不能在脚本片段里面定义方法,因为方法不能嵌套定义
  • 总结
    • 模板元素其实就是页面上一堆的html代码
    • 在html中添加java代码,java代码就是脚本片段
  • 代码事例
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    <%
    HttpSession s = request.getSession();
    Object username = s.getAttribute("username");
    %>
    

itheima

<% if(null == username){ %> 登录 <% }else{ %> 注销 <% } %>

1.6声明

  • 在JSP页面里定义方法,定义成员变量等,<%! %>
  • 注意:不能在声明里面写语句
  • 平时也很少去定义成员变量 ,他是有线程安全问题 用处不大

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    
    <%!
        public int sum(int a,int b) {
            return a + b;
        }
    %>
    
    <%
        int result = sum(1,2);
        out.println(result);
    %>


1.7脚本表达式

  • 在JSP页面中将数据发送到客户端,替代JSP页面里的输出语句,
格式:<%=变量/常量/表达式%> //1 + 1
  • 注意:在脚本表达式中不可以写分号

  • 总结: 用syso输出的语句,都可以用脚本表达式输出

  • 代码实例





Insert title here


    <%
        //要使用脚本表达式将当前系统时间发送到客户端
        //获取当前系统时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String now = sdf.format(new Date());
    %>
    
    
    <%=now %>
    <%="

hello JSP

" %> <%=1 + 1 %>

1.8 注释

  • HTML的注释:

  • Java代码的注释://,/**/

  • 脚本片段的注释:<%-- --%>

  • 注意:

    • HTML的注释:被注释的文本和代码,会翻译到Servlet中,然后发送到客户端
    • java的注释:被注释的文本和代码,会翻译到Servlet中,不会发送到客户端
    • jsp的注释: 被注释的文本和代码,不会翻译到Servlet中,不会发送到客户端
  • 建议使用第三个 功能最强大 什么都可以注释,也不会翻译最后html中

1.9 总结

  • 模板元素: Html + css + js 对于模板元素,会被翻译到out.println(参数);
  • 脚本片段;java 原样复制到翻译后的java文件里面,复制到service方法 <% %>
  • java声明;翻译到类中,方法外,成员的位置上,可以用来定义成员变量,成员方法<%! %>
  • 脚本表达式:翻译到out.println(参数),注意不能有分号 <%= %>
  • 注释:HTML的注释 java的注释 jsp的注释 <%-- --%>

你可能感兴趣的:(Web 基础14 JSP入门 语法)