java web

JSP基础语法

2022-04-24  本文已影响0人  马佳乐

JSP简介

JSP: Java Server Page ,SUN公司提供的动态网页编程技术,是Java Web服务器端的动态资源。

它相比 html而言,html 只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。

相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。

不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。

其实Jsp就是一个Servlet,当我们第一次访问Jsp 的时候,Jsp引擎都会将这个Jsp翻译成一个Servlet,这个文件存放在tomcat (源码目录)中的work目录中。

注释

在JSP中支持两种注释的语法操作:
一种是显示注释,这种注释是允许客户端看见的;另一种是隐式注释,此种注释是客户端无法看见的。

JSP的三种注释方式:

1) //单行注释   /*多行注释*/
2) <!-- HTML风格的注释 -->
3) <%-- JSP注释 --%>

Scriptlet

在JSP中最重要的部分就是Scriptlet(脚本小程序),嵌入在HTML代码中的Java程序。
在JSP中一共有三种Scriptlet代码:都必须使用Scriptlet标记出来

第一种: <% %> : java脚本段,可以定义局部变量、编写语句
第二种: <%! %>: 声明,可以定义全局(成员)变量、方法、类
第三种: <%= %>: 表达式,数据一个变量或具体内容的输出

JSP的指令标签

使用包含操作,可以将一些重复的代码包含进来继续使用,从正常的页面组成来看,有时可能分为几个区域。而其中的一些区域可能是一直不需要改变的,改变的就其中的一个具体内容区域。现在有两种方法可以实现上述功能。

方法一:在每个JSP页面(HTML)都包含工具栏、头部信息、尾部信息、具体内容
方法二︰将工具栏、头部信息、尾部信息都分成各个独立的文件,使用的时候直接导入

很明显,第二种方法比第一种更好,第一种会存在很多重复的代码,并且修改很不方便,在JSP中如果要想实现包含的操作,有两种做法:静态包含动态包含,静态包含使用 include指令即可,动态包含则需要使用include动作标签。

include静态包含

<%@include file="要包含的文件的相对路径"%>

例如:

<%@include file="include.jsp"%>
<%@include file="include.html"%>

静态包含就是将内容进行了直接的替换,就好比程序中定义的变量一样是在servlet引擎转译时,就把此文件内容包含了进去(两个文件的源代码整合到一起,全部放到_jspService方法中),所以只生成了一个servlet,所以两个页面不能有同名的变量。运行效率高一点点。耦合性较高,不够灵活。

include动态包含

动态包含在代码的编译阶段,包含和被包含部分是两个独立的部分,只有当运行时,才会动态包含进来,好比方法的调用。

<jsp:include page="要包含的文件的相对路径"></jsp:include>

注意:动态包含,中间不要加任何内容,包括空格,除非确认要使用参数,否则报错!

<jsp:include page="include.jsp"></jsp:include>
<%
    String a="hello.jsp";
%>
<jsp:include page="<%=a %>"></jsp:include>

使用动态包含还可以通过在页面之间传参。

<jsp:include page="要包含的文件的相对路径">
    <jsp:parm name="参数名" value="参数值"/>
</jsp:include>

name属性不支持表达式,value属性支持表达式

接收参数通过request.getParameter(name);

<%
    String name=request.getParameter("name");
%>

JSP的四大域对象

四种属性范围

在JSP中提供了四种属性的保存范围,所谓的属性保存范围,指的就是一个设置的对象,可以再多少个页面中保存并可以继续使用

四种属性通用方法:

方法 类型 描述
public void setAttribute(String name,Object o) 普通 设置属性的名称及内容
public Object getAttribute(String name) 普通 根据属性名称获取属性
public void removeAttribute(String name) 普通 删除指定属性

验证属性范围的特点

<%
    pageContext.setAttribute("name1", "zhangsan");
    request.setAttribute("name2", "lisi");
    session.setAttribute("name3", "wangwu");
    application.setAttribute("name4", "zhaoliu");
%>
<%-- jsp中服务端跳转 --%>
<%-- <jsp:forward page="jsp四大域属性.jsp"></jsp:forward> --%>
<%-- jsp中超链接跳转 --%>
<a href="jsp四大域属性.jsp">跳转</a>
<%
    out.print("page范围:"+pageContext.getAttribute("name1")+"<br>");
    out.print("request范围:"+request.getAttribute("name2")+"<br>");
    out.print("session范围:"+session.getAttribute("name3")+"<br>");
    out.print("application范围:"+application.getAttribute("name4")+"<br>");
%>
上一篇 下一篇

猜你喜欢

热点阅读