- 浏览: 5183292 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
注:以下内容可能不完全准确,仅供参考。
2008-09-28 00:25
<%! 定义 %>与 <% 定义 %>区别如下,一切尽在代码中。
Jsp:
<%@ page contentType="text/html; charset=GBK" %>
<!--定义方式1 -->
<% int j=1;%>
<!--定义方式2 -->
<%! int j=0;%>
<html>
<head>
<title>
jsp1
</title>
</head>
<body bgcolor="#ffffff">
<h1>
<!--
调用定义方式1的变量
-->
<%=j%>
<br>
<!--
调用定义方式2的变量
-->
<%=this.j%>
</h1>
</body>
</html>
反编译的Java jsp1_0002ejsp_jsp.class:
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.HttpJspBase;
import org.apache.jasper.runtime.JspException;
public class jsp1_0002ejsp_jsp extends HttpJspBase
{
public jsp1_0002ejsp_jsp()
{
j = 0;
}
public final void _jspx_init()
throws JspException
{
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
JspFactory _jspxFactory = null;
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
String _value = null;
try
{
if(!_jspx_inited)
synchronized(this)
{
if(!_jspx_inited)
{
_jspx_init();
_jspx_inited = true;
}
}
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html; charset=GBK");
pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
out.write("\r\n<!--\u5B9A\u4E49\u65B9\u5F0F1 -->\r\n");
//定义方式1,这里定义的只能作用在_jspService成员函数的定义之后,如果想引用定
//义方式2的变量只能用this应用
int j = 1;
out.write("\r\n<!--\u5B9A\u4E49\u65B9\u5F0F2 -->\r\n");
out.write("\r\n<html>\r\n<head>\r\n<title>\r\njsp1\r\n</title>\r\n</head>\r\n<body bgcolor=\"#ffffff\">\r\n<h1>\r\n\r\n<!--\r\n\u8C03\u7528\u5B9A\u4E49\u65B9\u5F0F1\u7684\u53D8\u91CF\r\n-->\r\n");
out.print(j);
out.write("\r\n<br>\r\n<!--\r\n\u8C03\u7528\u5B9A\u4E49\u65B9\u5F0F2\u7684\u53D8\u91CF\r\n-->\r\n");
out.print(this.j);
out.write("\r\n</h1>\r\n</body>\r\n</html>\r\n");
}
catch(Throwable t)
{
if(out != null && out.getBufferSize() != 0)
out.clearBuffer();
if(pageContext != null)
pageContext.handlePageException(t);
}
finally
{
if(_jspxFactory != null)
_jspxFactory.releasePageContext(pageContext);
}
}
//定义方式2 ,<%! xxxx >就是声明一个类的成员变量,如果我们在这个jsp文件定义一个
//成员函数,那么只能调用此种方式的变量了
int j;
private static boolean _jspx_inited = false;
}
===========================================
使用jsp页面中<%! %>全局变量声明遇到的问题
一般喜欢把页面里多处要用到的变量设置成全局变量,如:
当把该变量赋值后,再次访问该页面时,该变量的值依然保存。这使得想通过用全局变量接受提交的参数时会受到一些迷惑:
if(request.getParameter("operation")!=null)
ID = request.getParameter("operation").trim();
当ID在前一次赋过初值后,因为另一种原因而再次访问该页面但‘operation'参数为空时,本来希望ID也为空,但实际上ID的值为上次访问该页面时赋的值。当希望通过ID的值做不同的操作时可能引起操作类型的混乱。
原因:使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一
次。
解决的办法是将ID用<% %>定义,或在判断ID的操作后重新对ID初始化。
自己添加的内容为:
<%!
//设置全局变量
int i=0;
%>
<%
response.setHeader("refresh","1");
%>
<h1><%=++i%></h1>
该页面若编译成功后生成Servlet文件,全局变量i就会被所有客户的请求所共享,即客户端每进行一次请求,变量i就会加1。
当修改了*.jsp文件后,再次在客户端进行访问,这时全局变量i就又从0开始变化了。
全局变量和 page,request,session.application中的application变量类似。
2008-09-28 00:25
<%! 定义 %>与 <% 定义 %>区别如下,一切尽在代码中。
Jsp:
<%@ page contentType="text/html; charset=GBK" %>
<!--定义方式1 -->
<% int j=1;%>
<!--定义方式2 -->
<%! int j=0;%>
<html>
<head>
<title>
jsp1
</title>
</head>
<body bgcolor="#ffffff">
<h1>
<!--
调用定义方式1的变量
-->
<%=j%>
<br>
<!--
调用定义方式2的变量
-->
<%=this.j%>
</h1>
</body>
</html>
反编译的Java jsp1_0002ejsp_jsp.class:
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.HttpJspBase;
import org.apache.jasper.runtime.JspException;
public class jsp1_0002ejsp_jsp extends HttpJspBase
{
public jsp1_0002ejsp_jsp()
{
j = 0;
}
public final void _jspx_init()
throws JspException
{
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
JspFactory _jspxFactory = null;
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
String _value = null;
try
{
if(!_jspx_inited)
synchronized(this)
{
if(!_jspx_inited)
{
_jspx_init();
_jspx_inited = true;
}
}
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html; charset=GBK");
pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
out.write("\r\n<!--\u5B9A\u4E49\u65B9\u5F0F1 -->\r\n");
//定义方式1,这里定义的只能作用在_jspService成员函数的定义之后,如果想引用定
//义方式2的变量只能用this应用
int j = 1;
out.write("\r\n<!--\u5B9A\u4E49\u65B9\u5F0F2 -->\r\n");
out.write("\r\n<html>\r\n<head>\r\n<title>\r\njsp1\r\n</title>\r\n</head>\r\n<body bgcolor=\"#ffffff\">\r\n<h1>\r\n\r\n<!--\r\n\u8C03\u7528\u5B9A\u4E49\u65B9\u5F0F1\u7684\u53D8\u91CF\r\n-->\r\n");
out.print(j);
out.write("\r\n<br>\r\n<!--\r\n\u8C03\u7528\u5B9A\u4E49\u65B9\u5F0F2\u7684\u53D8\u91CF\r\n-->\r\n");
out.print(this.j);
out.write("\r\n</h1>\r\n</body>\r\n</html>\r\n");
}
catch(Throwable t)
{
if(out != null && out.getBufferSize() != 0)
out.clearBuffer();
if(pageContext != null)
pageContext.handlePageException(t);
}
finally
{
if(_jspxFactory != null)
_jspxFactory.releasePageContext(pageContext);
}
}
//定义方式2 ,<%! xxxx >就是声明一个类的成员变量,如果我们在这个jsp文件定义一个
//成员函数,那么只能调用此种方式的变量了
int j;
private static boolean _jspx_inited = false;
}
===========================================
使用jsp页面中<%! %>全局变量声明遇到的问题
一般喜欢把页面里多处要用到的变量设置成全局变量,如:
当把该变量赋值后,再次访问该页面时,该变量的值依然保存。这使得想通过用全局变量接受提交的参数时会受到一些迷惑:
if(request.getParameter("operation")!=null)
ID = request.getParameter("operation").trim();
当ID在前一次赋过初值后,因为另一种原因而再次访问该页面但‘operation'参数为空时,本来希望ID也为空,但实际上ID的值为上次访问该页面时赋的值。当希望通过ID的值做不同的操作时可能引起操作类型的混乱。
原因:使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一
次。
解决的办法是将ID用<% %>定义,或在判断ID的操作后重新对ID初始化。
自己添加的内容为:
<%!
//设置全局变量
int i=0;
%>
<%
response.setHeader("refresh","1");
%>
<h1><%=++i%></h1>
该页面若编译成功后生成Servlet文件,全局变量i就会被所有客户的请求所共享,即客户端每进行一次请求,变量i就会加1。
当修改了*.jsp文件后,再次在客户端进行访问,这时全局变量i就又从0开始变化了。
全局变量和 page,request,session.application中的application变量类似。
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18681编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2504部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3499两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 18481.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7701一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1287我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3276做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1190写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 4010大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2415一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7568我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2793@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2101转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3093用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1779element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9808示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6679申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5357最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5303springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10453微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
2. **PATH**:这个全局环境变量包含可执行文件的路径列表,添加%JAVA_HOME%\bin到PATH中,使得系统可以在任何位置执行Java相关命令,如`java`和`javac`。 3. **JRE_HOME**:虽然不是必须的,但有些程序可能需要JRE...
例如,可以定义一个名为`count`的全局变量并初始化为0,然后在页面加载时(可能是`<jsp:include>`或`<jsp:forward>`之后)增加`count`的值。 了解并掌握以上知识点,将使你能够有效地开发和维护JSP应用程序,同时...
这里,`contentType`定义了页面的MIME类型和字符集,`pageEncoding`指定了JSP源文件的编码。将`pageEncoding="ISO-8859-1"`改为`pageEncoding="GBK"`,可以确保该JSP文件内部的编码方式与乱码问题相匹配。然而,这种...
#### 一、JSP Scriptlets与变量定义 - **局部变量**: 使用 `<% %>` 定义局部变量,仅在当前脚本块中有效。 - **全局变量**: 使用 `! %>` 定义全局变量,可以在整个JSP页面内多次调用,并且在页面加载期间保持其值。...
1. page指令:定义JSP页面的全局属性,如编码、导入包等。 2. include指令:用于在页面编译时或运行时包含其他文件。 3. taglib指令:引入自定义标签库。 三、JSP脚本元素 1. Scriptlet:在中编写Java代码,用于...
%>:定义全局变量,编写方法,编写类 例如:scriptletdemo02.jsp、scriptletdemo03.jsp 2.3 <%= %>:表达式输出 例如:scriptletdemo04.jsp、scriptletdemo06.jsp、scriptletdemo07.jsp 3. page 指令 page ...
JSP声明用于定义全局变量或方法,表达式用于输出,而Scriptlet则可以包含多个Java语句。 #### JSP语法概要 JSP的基本语法与Java语言类似,但它增加了特定的指令和动作标签,例如page指令用于设置页面依赖属性,...
变量在这里声明为全局变量,对整个JSP页面有效。方法定义则可以被页面内的其他Java程序片调用。类定义同样在页面范围内有效,可以用于创建对象。 - **表达式**:`<%= ... %>`标记用于插入一个能够计算出数据值的...
这些声明的变量被称为成员变量,对于所有用户都是全局共享的。 例如: ```jsp ;charset=GB2312" %> <HTML><BODY BGCOLOR=cyan> ! int i=0; %> i++; %> 您是第 <%= i %> 个访问本站的客户。 </BODY></HTML> ``` 在...
#### 二、JSP 输出与变量定义 ##### 1. 输出对象 out `out` 对象用于向客户端输出数据。它支持 HTML 标签,因此可以直接输出 HTML 文本。 - **示例代码**: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> ...
声明部分用于定义变量或方法;脚本元素包括脚本let、scriptlet、表达式和声明,它们可以包含Java代码;指令则用于配置页面行为,如import、page、include等。 **2. JSP生命周期** JSP页面经历四个阶段:翻译、编译...
- `page`指令:定义页面的编码、语言、导入的包等属性。 - `include`指令:在编译时包含其他文件。 - `taglib`指令:引入自定义标签库。 3. **JSP表达式**: - `<%= %>`:将Java表达式的值转换为字符串并输出到...
JSP有九大内置对象,如`request`、`response`、`session`、`application`等,它们提供了处理HTTP请求和响应的功能,以及管理会话和全局变量的能力。 7. **处理中文字符**: 当表单提交的参数中含有汉字时,接收...
这种格式用于定义变量或方法,并且这些定义仅在当前页面中有效。声明代码通常位于任何方法之外,即在Servlet类的类级别上。声明的示例代码如下: ```jsp <title>JSP声明 ! public String output(String ...
- **page指令**:定义页面的全局属性,例如content type、import等。 - **include指令**:用来包括静态或动态文件。 - **taglib指令**:定义自定义标签库的位置。 #### 4. JSP脚本元素 JSP脚本元素用于嵌入Java代码...
它类似于一个全局变量,可以跨多个用户会话共享数据。 - **作用域**:整个Web应用。 #### 五、Out对象 - **定义**:`javax.servlet.jsp.JspWriter` 类型的对象。 - **用途**:用于向客户端输出数据,例如HTML文本、...
4. **Java代码段**:`<% ... %>`用于编写Java代码,可以是变量声明、方法调用等。 5. **表达式**:`${...}`用于输出Java表达式的值到页面上。 **JSP内置对象** JSP提供了多个内置对象,它们在每次请求时由容器自动...
声明用于定义变量或方法,这些变量和方法可以在Java代码块中使用。表达式则用于输出Java表达式的结果到HTML页面中。 在JSP中,我们可以使用内置对象,如request、response、session和application。Request对象存储...
3. **内置对象**:JSP提供了九个内置对象,如`request`、`response`、`session`、`application`等,它们简化了HTTP协议的处理,使得开发者可以方便地获取请求信息、设置响应头、管理会话和全局变量。 4. **EL...
- **JSP 2.0+的声明式错误处理**:使用`error-page`元素定义错误处理页面,提高错误处理的规范性和一致性。 - **自定义标签**:开发自定义标签库,可以封装复杂功能,增强代码复用。 通过不断学习和实践,我们可以...