JSP相关
来源:互联网 发布:手机时间软件下载 编辑:程序博客网 时间:2024/05/19 14:54
JSP,即Java Server Page是一种Java服务器动态网页页面。在传统的HTML页面的基础上插入Java程序段和JSP标记,从而形成JSP文件。本质上讲,JSP就是servlet,当JSP被第一次请求,服务器上的JSP引擎,Tomcat等可将JSP转换为servlet。接着被编译称为Servlet字节码,装载实例化后进行实现。
一.JSP注释:
1.在Java程序段可使用普通的Java注释
2.html注释
JSP注释<%–服务器端注释,不发送回客户端,源代码不可见–%>
JSP语法分为三种类型:
1.编译器指令 例如:<%@ page import=”java.io.*”%>
2.脚本语法 例如<%Java程序段%>
3.动作语法 ,,
二.JSP声明:
<%!声明语句;%>
<%! int i = 3;%>
<%! int a,b;String c;%>
<%! public int count();%> 注意:每个都以分号结尾。
问题:<%! int i = 3;%>与<% int b = 3; %>的区别
实验:在中加入:
<%=i–%>
<%=b–%>
我们每次的去刷新页面,发现i不断减1,b始终不变。本质上讲,底层上jsp转换为java代码。a被解析成类的成员变量,b被解析成局部变量。servlet是单例模式,一次加载,多次使用。
<!--这是HTML注释,会发送回客户端,页面源代码可见--> <!--<%= new java.util.Date() %> --> <%--这是JSP注释 ,不会发送回客户端,页面源代码不可见--%> <%--new java.util.Date(); --%> <%--File file = new File("test.txt") --%> <%! int i = 3; %><br> <%--Jsp声明,i被解析成类的成员变量 --%> <% int b = 3; %> <%--Jsp脚本段,b被解析成局部变量 --%> The current date and time are <%@ include file="Test_1.jsp" %>
三.JSP动作元素
1.动作用于转向页面,在该指令后面的所有代码都没有机会执行了,因为该页面的流程已经转向了另外一个页面。
2.动作与指令存在着很大差别,page中的Include指令用于在JSP页面转换为Servlet时就将被包含页面嵌入,这也意味着Include指令包含页面时,被包含文件的任何一部分发生变化,所有包含该文件的jsp文件需要被重新编译。而使用include动作文件的变化总会被检查到,不需要重新编译。
四.JSP内置对象
JSP内置了九个对象,重点介绍以下三个request对象,session对象,application对象。
1.request对象
String getParameter(String name)
获取客户端传送给服务器的指定参数的值
String[] gerParameterNames()
获取客户端传送给服务器的所有参数名称的枚举
Enumeration e = request.getParameterNames(); while(e.hasMoreElements()) System.out.println(e.nextElement()); String[] values = request.getParameterValues("age"); for(String value:values){ System.out.println(value); } }
注意:getParameter方法是getParameterValues方法的特例,表示请求的参数值只有一个,如果请求参数值有多个,请使用getParameterValues方法。在多选框的情况下,需要使用getParameterValues方法来获取用户所选择的多个复选框的值。
注意:
1.Request对象中的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAtribute方法设置属性和属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般进行向下类型转换)。setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过两个方法。
2.request的getParameter方法的作用是获取到客户端 通过表单或url请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParameter来获取。没有setParameter方法。
3.request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应之后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此在无法获得之前request对象所存放的任何数据。
4.session对象内数据的存活范围也就是session对象的存活范围(只要浏览器不关闭,session对象就会一直存在),因此在同一个浏览器窗口,无论向服务器发送多少个请求,session对象只有一个。
2.application(应用对象):存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。**在整个服务器运行过程中,application对象只有一个。**
if(session.getAttribute("counter") == null){ session.setAttribute("counter", "1"); } else{ String strnum = null; strnum = session.getAttribute("counter").toString(); int icount = 0; icount =Integer.valueOf(strnum).intValue(); icount++; session.setAttribute("counter", Integer.toString(icount)); }
以上为application.jsp的代码
1.当我们使用application对象,很好的实现了网页的访问计数器。因为在服务器运行阶段,始终都只有一个application对象,所以即使是多个浏览器客户端访问网页,计数器始终增加。
2.当我们使用session对象代替,这也能大致实现了网页访问计数器,但是session会针对每个客户端分配一个session,所以针对每个特定的客户端都有访问计数,但是不同客户端互相不影响。
3.当我们使用request对象,这并不能实现网页访问计数器,因为在我们每一个访问网页,都会向服务器发送请求,每一次请求都分配一个新的request的对象,因此上述语句只是在if代码块中运行。
- jsp相关
- JSP 相关
- JSP相关
- JSP相关
- JSP相关
- JSP 相关
- Jsp相关
- jsp相关的技术
- JSP相关配置
- JSP相关技术基础知识
- JSP乱码问题相关
- jsp中相关应用
- 学习JSP相关笔记
- JSP 相关配置文件
- jsp 相关页面跳转
- jsp相关问题
- jsp相关知识
- JSP 相关配置文件
- Debug NetBeans: Resolve Missing Debugger Command
- bzoj2462(矩阵二维hash)……不会的题就hash
- uml访问web流程
- JavaScript权威指南——从笨鸟到菜鸟(一) JavaScript概述
- Java中IO中文件的操作
- JSP相关
- SVN相关
- 使用Java调用SAP函数
- Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
- liunx下mysql5.6创建用户并给指定的数据库授权详解 ---谷营中西
- hdu 1851 A Simple Game (Nim博弈)
- Java反射第一课认识Class类
- Java中 IO中的字节输入流InputStream,字节输出流InputStream
- nyoj37 回文字符串