JSP基础

分析使用纯Servlet开发web应用的缺陷

  • 在Servlet当中编写HTML等前端代码,存在什么问题?
    • 代码java程序中编写前端代码,编写难度大有错误在IDEA中发现不了 ,麻烦,java程序中编写前端代码,程序的耦合度非常高
      ,维护成本高
      解决
      我们只需要写这个Servlet程序中的前端的那段代码,然后让机器将我们写的前端代码自动翻译生成Servlet这种java程序,然后机器再自动将java程序编译生成class文件,然后再使用JVM调用这个class方法

JSP

  • 我的第一个jsp程序:
    - 再WEB-INF目录之外创建一个index.jsp文件,改文件没有任何内容
    在这里插入图片描述
  • 将上面的项目部署后,启动服务器,打开浏览器,访问以下地址:
    - http://localhost:8080/jsp/index.jsp展现的是一个空白
    - 实际上访问的这个:index.jsp,底层执行的是index_jsp.class这个程序。
    - 这个index.jsp会被tomcat翻译成index_jsp.java文件,然后tomcat服务器又将index_jsp.java编译生成index_jsp.class文件
    - 访问index.jsp,实际上执行的是index_jsp.java文件
  • 空执行后可在
    在这里插入图片描述
    后面的地址在我的电脑中搜索
    在这里插入图片描述
    java程序放到work里面
  • 我们在浏览器访问jsp他的底层还是Servlet
    • 打开index_jsp.java
    • 在这里插入图片描述
    • 在这里插入图片描述

总结

JSP实际上就是一个Servlet,jsp的生命周期和Servlet的生命周期完全相同,完全就是一个东西,没有任何区别,jsp和servlet一样都是单例的

  • jsp文件第一次访问的时候是比较慢的,为什么?
    - 为什么大部分的运维人员在给客户演示项目的时候,为什么提前先把所有的jsp文件先访问一遍
    - 因为第一次访问需要把jsp文件翻译成java源文件,还要编译生成class字节码文件,创建servlet对象调用对象的init和servlet方法
    - 第二次比较快的原因是直接调用单例servlet对象的service方法即可。
  • 对jsp进行错误调试的时候,要打开JSP文件对应的java文件,检查java代码

举例

在jsp中输入abc
在这里插入图片描述
会在service中显示
在这里插入图片描述

  • JSP的基础语法
    • 在JSP文件中直接编写的文字都会自动翻译到Servlet类的service方法的out.write(“翻译到这里”),直接翻译到双引号里,被java程序当做普通字符串打印输出到浏览器
    • jsp没有默认UTF-8,需在jsp中设置如下UTF-8
<%@page contentType="text/html;charset=UTF-8" %>
  • 怎么在JSP中编写java程序
    • <% java语句;%>
      • 在这个符号当中编写的被视为java程序,注意要以;结尾,被翻译到Servlet类的service方法内部
      • 在<% %>这个符号里面写java代码时候,你正在方法体中写代码

举例
在这里插入图片描述
这样写的java代码会直接暴漏在service方法中
在这里插入图片描述

在这里插入图片描述
这样写放到了out.print中
在这里插入图片描述

  • JSP注释
    <%-- --%>不会被翻译到java源代码当中

错误代码
在这里插入图片描述
因为在方法体中不能写静态代码块和静态方法,需注释掉

  • <%! %>在这个符号编写的java程序会自动翻译到service方法之外,这个语法很少用,会直接写到类体当中,很少使用因为在service方法外面写静态变量和实例变量,都会存在线程安全问题,JSP就是servlet,servlet是单例的,多线程并发的环境下,这个静态变量和实例变量一旦有修改操作,必然会存在线程安全问题
    在这里插入图片描述
    在这里插入图片描述

JSP输出语句


  • <% %>在这个符号中可以直接使用out对象,输出一个java变量,因为有java程序所以有out
<% 
String name="jack";	
 out.print("name=" +name);
%>

在这里插入图片描述

  • 输出一个字符串,可以直接写到jsp中,因为可以直接翻译到out.print()中

在这里插入图片描述

  • 如果输出的内容中含有java代码,这个时候可以使用以下语法格式
    - <%= %>
    - 在等号的后面编写要输出的内容
    - 这个符号会被翻译到srvice中,被翻译成 out.print();
    - 何时用:输出的内容中含有java的变量,输出的内容是一个动态的内容,不是一个死的字符串,如果输出的是一个固定的字符串直接在JSP中编写即可
    - 举例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

JSP和Servlet的区别

  • 职责不同:
    • Servlet的职责:收集数据(逻辑处理,业务处理,连接数据库,获取收集数据)
    • JSP的职责:展示数据(JSP的强项是做数据的展示)

总结

  • JSP中直接编写普通字符串(会翻译到service方法的out.write(“这里”))
  • <% %> (翻译到service方法内部,里面是java语句)
  • <%! %>(翻译到service外部)
  • <%= %> (翻译到service内部,翻译为out.print();)
  • <%@page contentType=“text/html;charset=UTF-8” %>(page指令,用来设置响应内容指令)
  • 32
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值