浅入浅出JSP

浅入浅出JSP

1.什么是JSP
java Server Pages :java服务端页面,和Servlet一样,用于动态Web技术!

最大特点:

  • 写JSP就像再写HTML
  • 区别:HTML只给用户提供静态的数据,JSP页面中可以嵌入java代码,为用户提供动态数据;

1.JSP原理

思路:JSP到底是怎么执行的。
浏览器向服务器发送请求,不管访问什么资源,其实都在访问Servlet

JSP最终也会被转换成一个Java类。

这边我们可以通过,我们运行我们的Tomcat服务器的时候找到生成java类的一个路径。

在这里插入图片描述

复制路径到文件中

在这里插入图片描述

我们通过查看这个自动生成的java类中的源码可以知道,JSP本质上就是一个Servlet因为它本质上继承了一个Servlet的一个包

在这里插入图片描述
1.里面的一些方法

//初始化
public void _jspInit(){
}
//销毁
public void _jspDestroy(){
}
//JSPService
public void _jspService(.HttpServletRequest request.HttpServletResponse response)//里面有着HttpServlet中的request跟response对象

2.一些内置的对象(皆是源码中的对象)

final javax.servlet.jsp.PageContext pageContext;//页面的上下文Context
javax.servlet.http.HttpSession session = null;//Session
final javax.servlet.ServletContext application;//application Context
final javax.servlet.ServletConfig config;//config
javax.servlet.jsp.JspWriter out = null;//out
final java.lang.Object page = this;// 代表当前 page
HttpServletRequest request//请求
HttpServletResponse response//响应

3.页面输出前的代码
在这里插入图片描述
以上的对象我们在JSP中都会使用到(注意上面的都是生成的java类中源码的文件)

4.用户访问JSP文件流程图

运行JSP文件 将jsp文件转换成java文件然后编译成java,class。然后返回给web容器,用户拿到的就是一个class对象.

在这里插入图片描述

在JSP页面中:

只要是JAVA代码就会原封不动的输出;

如果是HTML代码,就会被转换为:

out.write("<html>/r/n")

这样的格式,输出到前端。





2.JSP基础语法

  上面说的是一些JSP跟web交互的一些原理,源码以及逻辑,下面我们来说一下JSP的基础语法,任何语言都有自己的语法,Java中有,jsp作为java技术的一种应用,它拥有一些自己扩充的语法,虽然主键JSP以及被淘汰但是一些东西我们还是需要懂,jsp支持所有java语法。格式就是:<%内容%>

 1.JSp的基础语法

 <% JSP表达式 作用用来将程序的输出,输出到客户端%>
   <% = 变量或者表达式%>--%>
  <%=new java.util.Date()%>

2.JSP的一些小脚本(跟java差别不大)

<%
    int sum=0;
    for (int i = 0; i <=100; i++) {
        sum+=i;
    }
    out.write("<hr> <br>");
    out.write("sum:"+sum);
%>

3.JSP中的声明

<%!
    static {
        System.out.println("进入了作用域");
    }

    private int GlobalVar = 0;

    public void Xs() {
        System.out.println("进入了方法Xs");
    }
%>

重点:如果我们这边声明的话,我们是可以在源码中找到的.
在这里插入图片描述
实际上JSP就是可以嵌入Java代码

<%%>//最基础语法
<%=%>//可以获取赋值之后的内容
<%!%>//声明
<%------%>//注释  注意如果是html的注释写在JSP中是不起作用的





3.九大内置对象

  • PageContext 存东西
  • Request 存东西
  • Response
  • Session 存东西
  • Application 【ServletContxt】 存东西
  • config
  • out
  • page
  • exception
    1.这九个对象中就是4个存东西的对象最常用简单介绍这个存东西对象的区别 这边我们直接用图展示更加方便观看。
    在这里插入图片描述
    运行之后的页面
    在这里插入图片描述
    2.由图一可知它们之间的作用域是不一样的。接下来会详细的说说每个作用域的区别。
 pageContext.setAttribute("name1", "xx一号");//保存的数据只在一个页面中有效
 request.setAttribute("name2", "xx二号");//保存的数据只在一次请求中有效,请求转发会携带这个数据
 session.setAttribute("name3", "xx三号");//保存的数据只在一次会话中有效,从打开到关闭浏览器
 application.setAttribute("name4", "xx四号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器

3.这时我们创建一个新的jsp文件用于查看另一个页面看来看看页面的作用域差别。
在这里插入图片描述
我们这是再访问这个页面之后的页面显示:
在这里插入图片描述
这个页面我们可以简易的理解为:PageContext跟request这俩个的作用域只在当前页面有效。


4.我们当前用的时谷歌浏览器访问的,如果我们再换个浏览器访问,用火狐浏览器访问会发生什么?
在这里插入图片描述
这里发现只取出了四号。

所以在这里可以总结出来,Pagecontext跟Resquest的作用域只基于当前页面,换个页面就不行了,Session只是基于本浏览器,换个浏览器就没法展示,application的作用域是最高的基于所有的浏览器之上的,无论换任何浏览器都可以展示。



5.几个对象的使用场景

request:客户端向服务发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!

Session:客户端向服务器发送请求,产生的数据,用户看完一会还有用,比如:购物车;

application:客户端向服务器发送请求,产生的数据,一个用户看完了,其他用户还可以使用,比如:聊天室。




4.JSP标签,JST标签,EL表达式

(1).目前JSP标签跟el表达式也不是目前重要的知识了大家只要懂就行了。


EL表达式:${}

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象

JSP标签

<jsp:forward page="jsp9daduix.jsp">
    <jsp:param name="name" value="sunhengzhi"/>
</jsp:forward>//forw一个转发的功能 这行代码的意思是再转发的过程中创建了一个键值对

JSTL表达式
相对于前俩个标签这个标签相对重要,JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义了许多标签,可以供我们使用,标签的功能和java代码一样!

核心标签
JSTL标签库使用步骤

  • 引入对应的Taglib
  • 使用其中的方法
  • 在Tomcat也需要引入jstl的包,否则会报错:JSTL解析错误

1.c:if:

<body>
<h1>if判断</h1>
<form action="JstlBQlx.jsp" method="get">//这边设置的跳转页面是本页面
    <input type="text" name="username" value="${param.username}">//获取我们text中输入的值 这边用的是el表达式
    <input type="submit" value="提交">
</form>
<c:if test="${param.username=='admin'}" var="IsAdmin">//这边用的是一个C:if标签判断值是不是admin 运用了el表达式,这边var里面设置的bollean类型,true就返回ISAdmin
    <c:out value="欢迎管理员访问我们的页面" />
</c:if>
<c:out value="${IsAdmin}" />//一个输出的标签<C:OUT>
</body>
  1. c:choosec(choose是swich的父类) c:when (基于父类下的switch循环)
<c:set var="cj" value="90"></c:set>//运用了一个set标签赋值
<c:choose>
    <c:when test="${cj>=90}">//运用el表达式判断cj是不是大于90
        成绩优秀
    </c:when>
    <c:when test="${cj<90}">
        成绩差劲
    </c:when>
</c:choose>

3.c:foreach

<%//运用jsp基础语法把值存在list中
    ArrayList pop =new ArrayList();
    pop.add("张三");
    pop.add("李四");
    pop.add("王五");
    pop.add("赵六");
    pop.add("田七");
    request.setAttribute("list",pop);//这边是把值获取出来,并且给了一个键
%>
<a:forEach var="pup" items="${list}">//获取了值 然后遍历出来
    <c:out value="${pup}"></c:out>//这边输出遍历的值
</a:forEach>

总结:JSP大部分语法跟java相似这一部分知识只需要我们懂了即可后面的框架会把这一部分淘汰掉,但是如果我们进公司维护老项目的时候我们也需要懂绝对不能不会,写的不咋好害。。!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值