jsp基础语法

jsp基础语法

一、注释

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

① 显示注释语法:从 HTML 风格继承而来

<!-- HTML 风格的注释 -->

② 隐式注释语法:从 JAVA 风格继承;JSP 自己的注释

// 注释,单行注释 
/* 多行注释 */ 
<%-- JSP 注释 --%>

二、Scriptlet

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

  • 第一种:<% %> :java 脚本段,可以定义局部变量、编写语句

    注:通过JSP引擎翻译后,其实就是写在了_jspService()方法体里面。

  • 第二种:<%! %>:声明,可以定义全局(成员)变量、方法、类

    注:通过JSP引擎翻译后,其实就是写在了类体里面。

  • 第三种:<%= %>:表达式,数据、一个变量或具体内容

通过观察解析为 java 文件的 jsp 代码理解三种小脚本

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP-scriptlet 脚本小程序</title>
</head>
<body>
    <%
        int a = 0;
        int b = 1;
        System.out.println(a+b);
        response.getWriter().write(""+(a+b));
        out.write(""+(a+b));
    %>
    <%!
        int c = 8;
    %>
    <%="hellojsp" %>
</body>
</html>	

三、 JSP 的指令标签

动作标签,它们被编译成执行某个操作的 Java 代码,例如访问某个 Java 对象,或者调用某个方法。JSP 容器有自己支持的标准动作。除标准动作之外,还可以创建指定的标签,用来执行某些操作。这些 jsp 的动作标签,与 html 提供的标签有本质的区别:

  • 动作标签是由 tomcat(服务器)来解释执行!与 java 代码一样,都是在服务器端执行

  • html 由浏览器来执行!

格式如下:

<jsp:action_name attribute="value" />

3.1 include

静态包含
<%@include file="hello.jsp" %><!-- 相对路径 --> 

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

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

静态包含就是将内容进行了直接的替换,就好比程序中定义的变量一样。

动态包含

动态包含在代码的编译阶段,包含和被包含部分是两个独立的部分,只有当页面被请求的时候时,

才会动态包含进来,好比方法的调用。

<jsp:include page="include.jsp"></jsp:include> 

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

<jsp:include page="include.html"></jsp:include> 

<%

String a = "hello.jsp"; 

%>

<jsp:include page="<%=a%>"></jsp:include>

使用动态包含还可以通过在页面之间传参。接收参数通过 request.getParameter(name) 来完成。

<jsp:include page="include.jsp">
   <jsp:param value="zhangsan" name="uname"/> 
</jsp:include> 
<%=request.getParameter("uname"); %>

3.2 forward

forward 动作用于请求转发,可以将一个用户的请求(request),从一个页面传递到另一个页面,跳转的语法:

<!-- 不传参数 --> 
<jsp:forward page="要转到的资源路径|<%=表达式%>"></jsp:forward> 
<!-- 传参数 --> 
<jsp:forward page="要转到的资源路径|<%=表达式%>"> 
    <jsp:param value="参数内容" name="参数名称"/> 
</jsp:forward>

jsp 的 forward 动作标签,其作用的理解可以等价于 Servlet 域对象 HttpServletRequest 的请求转发,即 request.getRequestDispatcher(“要转到的资源路径”).forward(request, response);

3.3 useBean

useBean 动作用来装载一个将在 JSP 页面中使用的 JavaBean。相当于创建了一个 JavaBean 对象,但是还没有进行属性设置,属性的设置和获取可以通过 jsp:setProperty 和 jsp:getProperty 动作标签来完成。

<jsp:useBean id="user" class="com.xxx.po.User">
    <!--
		相当于 
			if(user == null){
				user = new User(); 
			}
	-->
</jsp:useBean>
属性描述
id指定Bean的别名
class指定Bean的完整包名。
type指定将引用该对象变量的类型。
beanName通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。

3.4 setProperty

setProperty 动作用来设置已经实例化的 Bean 对象的属性,可以使用如下两种方式。

①在 jsp:useBean</jsp:useBean> 后使用 <jsp:setProperty />

<jsp:useBean id="user" class="com.xxx.po.User"></jsp:useBean> 
<jsp:setProperty property="uname" name="user" value="张三"/>

②<jsp:setProperty /> 出现在 jsp:useBean</jsp:useBean> 标签内

<jsp:useBean id="user" class="com.xxx.po.User"> 
    <jsp:setProperty property="uname" name="user" value="张三"/> 
</jsp:useBean>

注意

<jsp:setProperty /> 中的 name 值要与 < jsp:useBean > 中的 id 值相同

<jsp:useBean >里面的代码,初始化的时候执行一次

3.5 getProperty

getProperty 动作用来获取指定 Bean 属性的值,转换成字符串,然后输出。

<jsp:useBean id="user" class="com.xxx.po.User"></jsp:useBean>
<jsp:setProperty property="uname" name="user" value="张三"/>
<jsp:getProperty property="uname" name="user"/>

注意

1、在使用 <jsp:getProperty /> 之前,必须使用 jsp:useBean</jsp:useBean> 创建该对象,若没有进行赋值则为 null;若不创建,则会 500 报错。

2、setter 和 getter 存在且符合规范

四、 EL表达式

格式作用
${域对象中键的名称 }返回域对象中指定键对应的值
${域对象中键的名称.属性名 }获取域对象中对象指定属性对应的值
${empty 键的名称 }判断域对象中指定键对应的值是否为空
${键1==键2 }判断域对象中指定键对应的值是否相等

注意

从小到大获取域对象中的数据,如果都没有则显示"",获取指定域对象中的数据:${域对象名称Scope.uname }

el表达式获取指定域对象中的值:
	pageContext中:${pageScope.uname }
	request中:${requestScope.uname }
	session中:${sessionScope.uname }
	application中:${applicationScope.uname }

el表达式方式获取对象中的属性对应的值

<%
    User user1 = (User)request.getAttribute("user");
	String uname1 = user1.getName();
%>
${user.name }

el表达式获取List数据

<%
	List list = new ArrayList();
	list.add("a");
	list.add("b");
	list.add("c");
	request.setAttribute("list", list);
%>
${list[1] }
${empty list[3] }<%-- 判断是否为空: --%>

el表达式获取map数据:

<%
	Map<String,String> map = new HashMap<String,String>();
	map.put("a","1");
	map.put("b","2");
	map.put("c","1");
	request.setAttribute("map", map);
%>
${map["a"] }<%-- 都行 --%>
${map.a }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值