Java Web Jsp使用详解(一)

前言

我写的这个Jsp使用详解是针对已经对Servlet学习过或者了解过的新手,请大神勿喷啊,毕竟我也是个新手。
Servlet大家了解过了,那么通过Servlet开发web项目也可以,但是在Servlet中输出html代码还是有些复杂繁琐的,那么能不能直接使用html呢,最好还可以在html中直接写Java代码。这时候就用到了Jsp。
Jsp是一种Java Servlet,主要用于实现Java web应用程序的用户界面部分。Jsp的具体背景我就不细说,既然是使用详解我就不多说了。

JSP的生命周期

类似与Servlet以下是JSP的生命周期
编译阶段:
servlet容器编译servlet源文件,生成servlet类
初始化阶段:
加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
执行阶段:
调用与JSP对应的servlet实例的服务方法
销毁阶段:
调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例
具体执行是什么样的呢?

  1. 创建一个比如a.jsp,被执行后会先被转译为a_jsp.java
  2. a_jsp.java在D:\java web\apache-tomcat-8.0.52\work\Catalina\localhost…org\apache\jsp的目录下,此时的a_jsp.java就是一个servlet,因为你会发现a_jsp.java继承了一个HttpJspBase,而HttpJspBase继承了HttpServlet。
  3. 编译执行a_jsp.java生成相应html
  4. 通过http协议把html 响应返回给浏览器

JSP首行Page指令

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

JSP指令的基本用法格式为<%@ 指令 属性名="值"%>

contentType="text/html; charset=UTF-8"

就相当与Servlet中的
response.setContentType("text/html; charset=UTF-8");
通知浏览器以utf-8进行中文解码 如下
pageEncoding="utf-8"
而导入类就是
import="java.util.*"
如果导入多个类就是
import="java.util.*,java.io.*"
而一个指令有多个属性,这多个属性也可以分开写,例如:

<%@ page import="java.util.* "%>

JSP基础语法

  1. 基本的html,css,javascript等语法(这里不再详说了)
  2. JSP表达式
    JSP脚本表达式就是用于将程序数据输出到客户端
    语法:<%= 变量或表达式%>
    举例:<%= new java.util.Date()%>
    <%=%> 不需要分号结尾
  3. JSP脚本片段
    JSP脚本片段用于在JSP页面中编写多行Java代码
    语法:<%Java代码%>
    举例:<%int a=0;out.println("<h2>a="+a+"</h2>");%>
    脚本中只能出现Java代码,不能出现其他html等元素。<%%> 需要以分号结尾,和java代码一样 。而且多个脚本片段中的代码可以相互访问,就像是把所有的代码放在一个<%%> 之中
  4. JSP声明
    JSP页面中编写的所有代码都会翻译到servlet的service方法中,而Jsp声明的java代码不会
    语法:<%!Java代码%>
    此方式可以用于定义JSP页面转换后的servlet成勋的静态代码块、成员变量和方法等,不建议使用,在这里也不过多详说
  5. JSP注释
    语法: <%--注释内容 -- %>
    JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉
    不同于 html的注释 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了

include使用

include有两种方式指令include和动作include
使用include:准备一个b.jsp然后在其他页面包含b.jsp即可。

  1. 通过指令
<%@include file="b.jsp" %>
  1. 通过动作
<jsp:include page="b.jsp" />

区别 :
@include :比如说b.jsp被a.jsp包含,那么b.jsp的内容会被插入到 a.jsp 转译 成的a_jsp.java中,最后只会生成一个a_jsp.java文件
动作指令:b.jsp的内容不会被插入到 a.jsp 转译 成的a_jsp.java中,还会有一个b_jsp.java独立存在。a.java 会在服务端访问b_jsp.java,然后把返回的结果,嵌入到响应中。
@include是在转译的时候引入,是而动作指令是在请求处理阶段执行时才会转译引入,所以它们两个的不同就出现了:@include 是静态引入而动作指令还可以动态传参。
好了今天就到这了吧,改天再来继续JSP的使用详解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值