jsp页面中嵌入java代码_weixin_44289032的博客-程序员信息网_jsp嵌入java代码

技术标签: jsp  

1.jsp页面中嵌入java代码

jsp的脚本元素
jsp的指令元素
jsp的动作元素

1.1 jsp的脚本元素(直接嵌入java代码)

	第一种:表达式(expression)
		形式:<%= %>
		例如:<%="hello" %>
			 <%=1+1 %>
			 <%=s.getName() %>

		将来翻译到java文件中的位置:
		【_jspService方法中的out.print(..)里面的参数.】
		例如上面那几个例子会翻译成
		out.print("hello");
		out.print(1+1);
		out.print(s.getName());
		
		所以System.out.prntln()这个方法的参数可以写什么,那么我们这个jsp页面中表达式里面就可以写什么.

		注意:在jsp中的表达式里面不需要加;号。


	第二种:脚本(scriptlet)
		形式:<% ... %>
			 或者
			 <%
			....
			 %>

		例如:
			 <%
			 Student s = new Student();

			 String name = "tom";

			 String username = s.getName();

			 List<String> list = new ArrayList<String>();
			 list.add("hello")
			 %>
		 将来翻译到java文件中的位置:
		 【脚本中的代码将来会被直接翻译到_jspService这个方法中.】
		 
		 在一个普通的方法中我们可以写什么样的代码,那么在脚本中就可以写什么样的代码.

		 注意:在脚本中所写的代码,代码的最后是要加上;号的.因为我们在一个方法里面所写的没一句代码后面都是要加;号。
		 在脚本声明的变量,我们是可以在表达式里面使用的,但是要注意要先声明变量再使用变量.只要查看脚本和表达式分别翻译到java文件中的位置,就可以很清楚的认识到这一点.


	第三种:声明(declaration)
		形式:<%!
			.....
			 %>

		例如:
		 <%!
			private String name;
	
			public String go(){
				System.out.println("hello world "+name);
				return "this is go()";
			}
		 
		 %>

		 将来翻译到java文件中的位置:
		  【直接将声明中的代码翻译到java文件里面所定义的类中。】
		  所以我们直接可以在一个类中写什么,就可以在声明中写什么.(一般在声明中会去定义一些类中的成员变量或者方法)

		注意:这里面的代码,定义变量的时候要加;号,定义方法的时候不用加;号,这是和我们写一个java类语法是一样的。

1.2 jsp的指令元素
jsp的指令是给jsp引擎看的,让jsp引擎在翻译jsp页面成java文件的时候,知道需要注意哪些地方的设置.比如页面中的编码、页面中脚本里面所用的编程语言、翻译的java文件中需要引入哪些其他包下的java类等等.

	写法: <%@指令名字  属性="值" ..  %>
	指令包含page include taglib三种

	page指令:
		1.表示当前页面中的编程语言是java,目前这个属性值只能写java
			language="java"

		2.在当前页面中要引入哪些包下的类.
			import="java.util.HashMap"
			import="java.util.HashMap,java.sql.Connection"

		3.设置jsp页面文件保存时候所用的编码
			pageEncoding="UTF-8"
			
		4.设置服务器将来使用io把jsp页面内容一行一行的输出给浏览器的时候,使用什么编码向浏览器输出.
			contentType="text/html; charset=UTF-8"

		5.设置jsp页面被翻译成java文件的时候,java文件中的类要继承那个父类.这个属性不用设置,jsp引擎会给它一个默认的父类去继承的.
			extends=""

		6.设置当前这个jsp页面是否支持session对象的使用.默认是支持的.
			session="true"

		7.设置jsp页面是否是线程安全的.
			isThreadSafe="true"

		8.如果a.jsp页面中设置了errorPage="b.jsp",那么a.jsp页面在运行的时候一旦出错,就会自动跳转到b.jsp里面.
			errorPage=""

		9.如果一个页面中设置了isErrorPage="true",那么就表示这个页面是用来专门显示错误信息的页面.然后在这个页面中就能够使用到隐藏对象exception来显示出错误的信息了.(需要使用jsp的内置对象)
			isErrorPage=""



	include指令:
		<%@include file="" %>
		作用:在当前页面中使用include指令可以把另外一个页面的内容引入到当前页面。
		
		一个页面包含/引入另外一个页面有俩种方式:静态包含 动态包含。
		这个include指令就属于静态包含
		
		静态包含特点:例如a.jsp页面中静态包含了b.jsp页面,那么在翻译期间,jsp引擎在翻译a.jsp成为一个a_jsp.java文件的时候,发现jsp页面中有include指令,这时候jsp引擎就会把被包含的页面b.jsp中内容原封不动的拿到a_jsp.java中,然后用io输出出去.



	taglib指令:
		作用:在当前jsp页面中引入一些特殊的标签库.比如jstl标签库、struts2标签库、spring标签库等等【实际上都是封装好的Java代码】.

1.3 jsp的动作元素

	1.<jsp:useBean id="s" class="com.briup.bean.Student" scope="page"></jsp:useBean>
	   相当于代码:
		   <%
			Student s = null;
			s = (Student)pageContext.getAttribute("s");
			if(s==null){
				s = new Student();
				pageContext.setAttribute("s",s);
			}
		   
		   %>


   2.<jsp:setProperty property="name" value="tom" name="s"/>
	   相当于代码:
		   <%
			Student s = (Student)pageContext.getAttribute("s");
			s.setName("tom");
		   %>

   3.<jsp:getProperty property="name" name="s"/>
	   相当于代码:
		   <%
			Student s = (Student)pageContext.getAttribute("s");
			out.write(s.getName());
		   %>
    
   4.页面跳转
		<jsp:forward page="target.jsp"></jsp:forward>
   
   5.跳转的同时还可以传参数
		<jsp:forward page="target.jsp?name=tom"></jsp:forward>
	   或者
		   <jsp:forward page="target.jsp">
			<jsp:param value="tom" name="name"/>
		   </jsp:forward>
   

   6.这个动作元素专门是传参数使用的
		<jsp:param value="tom" name="name"/>

   7.动态包含
	   <jsp:include page="foot.jsp">
			<jsp:param value="lisi" name="name"/>
	   </jsp:include>
	   注意不能使用url?name=tom这种方式传
	   
	   动态包含特点:在把jsp文件翻译成java文件的期间,动态包含并不会去把被包含的页面原封不动的拿过来,而是会把动态包含这个标签翻译成一个方法的调用,将来运行页面调用到这个方法的时候才会去拿被包含页面的内容.同时还可以给动态包含的页面传参数.静态包含是不能传参数的。

	   注意:总结和对比后,分析出动态包含和静态包含各自的特点,以及哪一个执行的效率更快一些.


   8.使用jsp的动作元素向浏览器输出一个标签
	   <jsp:element name="font">
			<jsp:attribute name="color">blue</jsp:attribute>
			<jsp:body>hello world</jsp:body>
	   </jsp:element>
	   
	   这个效果相当于在页面代码中直接写上
			<font color="blue">hello world</font>
	   或者:
		   <%
		   out.println("<font color='blue'>hello world</font>");
		   %>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44289032/article/details/103180959

智能推荐

ar ebs 销售订单关闭_Oracle EBS OM 取消订单行_范奕信的博客-程序员信息网

DECLAREl_header_rec OE_ORDER_PUB.Header_Rec_Type;l_line_tbl OE_ORDER_PUB.Line_Tbl_Type;l_action_request_tbl OE_ORDER_PUB.Request_Tbl_Type;l_header_adj_tbl OE_ORDER_PUB.Header_Adj_Tbl_Type;l_line_adj_t...

TensorFlow函数:tf.reduce_prod,sum,mean等其他详解_furuit的博客-程序员信息网

现在tf1.7好像没有找到这个函数,但是却可以用,哎,谷歌API做的有点不专业啊。我翻了以前的文档里面有关于它的介绍: tf.reduce_prod 函数reduce_prod( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)定义在...

linux安装Samba服务器及配置(windows及ios均可连接互传文件),帮你解决多设备共享文件的问题_Jenrey的博客-程序员信息网

1、前言在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,tftp和nfs是在嵌入式Linux开发环境中经常使用的传输工具,samba则是Linux和Windows之间的文件传输工具。samba是模仿Windows网上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方式来进行文件传输的。虚拟机版本:VM EsxiLinux操作系统版本:centos72、Samba服务器介绍Samba是在Lin..

第6章 函数 习题_weixin_33834910的博客-程序员信息网

---恢复内容开始---6.27 编写一个函数,它的参数是Initializer_lister&lt;list&gt;类型的对象,函数功能是计算列表中所有元素之和。 1 #include &lt;iostream&gt; 2 using namespace std; 3 4 int iCount (initializer_list&lt;int&gt; il) 5...

VBA中dim,static和public,private的区别_csdnhxs的博客-程序员信息网_vb中private

一、Public和Private一般用于定义全局变量,也可以在类中使用。区别在于:[Public]前者定义的是公共变量,如果在一个模块当中使用,那么整个应用程序都能使用它所定义的变量,如果在类中使用,那么它就是一个共有属性。[Private]而后者定义的是私有变量,如果在一个模块中使用,那么只有这个模块才能访问到它所定义的变量,如果在类中使用,那么它就是一个私有属性。二、Dim和Static一般在...

随便推点

maven遇到问题总结_new个对象先的博客-程序员信息网

maven遇到的问题总结1. Missing artifact jdk.tools jdk.tools jar 1.8新建的项目遇到的问题: pom.xml文件报错. 提示: Missing artifact jdk.tools:jdk.tools:jar:1.8报错原因:tools.jar包是JDK自带的,pom.xml中依赖的的jar包隐式依赖tools.jar包,而tools.j...

程序员如何写好简历 && 一份优秀的程序员简历是什么样的?_Phodal的博客-程序员信息网

最近收到了很多要来面试的简历,发现你们的简历怎么都是这样的呢?要是我是 HR,你们肯定进入不了下一轮。马上就要到一年一度,最适合找工作的时间段:金三银四。另外一个时间段是...

Python写网络爬虫之:构造和解析URL_暖仔会飞的博客-程序员信息网_python爬取地址

1. URL 的组成URL 全称为统一资源定位器,网络上的每一个资源(网页、图片、文字、链接)都有一个特定的 “标识”,这个就是URL2. 什么时候回用到 URL?当我们想构造一个网络爬虫来爬取网络资源的时候,我们要构造一个 URL 让爬虫去访问,然后把资源背回来。所以我们要学习 URL 的相关知识。3. URL 的组成有哪几个部分?http://www.baidu.com/index.html;user?id=5#comment协议 http域名 www.baidu.com路径

时间序列学习(4):平稳性检验(单位根检验、ADF检验)_大象咖啡的博客-程序员信息网_平稳性检验

时间序列学习(4):平稳性检验(单位根检验、ADF检验)1、单位根检验2、ADF检验3、指数走势的检验4、对数收益率序列检验相关图可以大致判断序列是否平稳。但是,这毕竟不是严格的。这篇笔记来就谈一谈平稳性的检验。到目前为止,我们有了以下的时间序列模型:白噪声;随机游走;AR模型;MA模型;ARMA模型。我们知道白噪声、MA模型一定是平稳的(这里的平稳都是弱平稳);随机游走一定是不平稳的;ARMA模型取决于其AR部分。所以唯一需要做平稳性检验的就是AR模型。1、单位根检验先来看一阶

UDP协议详解_yunfan188的博客-程序员信息网_udp协议

一、UDP协议概述 传输层另一个重要协议就是 用户数据报协议 UDP。UDP 只在 IP 的数据报服务之上增加了很少一点的功能,这就是复用和分用的功能以及差错检测的功能。UDP(User Datagram Protocol,用户数据报协议)UDP的主要特点是:(1)UDP 是无连接的。即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。(2)UDP 使用尽最大努力交付。即保证可靠交付,因此主机不需要维护复杂的连接状态.......

Vue 2.x折腾记 - (11) @Vue/Cli 3.0.0 图形化项目管理,相当人性化_crper的博客-程序员信息网

前言@vue/cli v3从开始到现在已经经历了四个月的迭代(目前RC2),除了终端初始化的姿势,还引入了一个新的项目初始化姿势;Web端的初始化,体验了一下,效果很不错;所以记录一下.后方多图,感兴趣的可以瞧瞧,不感兴趣的请止步,免得浪费你的时间,谢谢..安装npm i -g @vue/cli 常规命令大体中文注释下 Usage: vue...

推荐文章

热门文章

相关标签