JSP执行流程和JSP的内置对象request和session解析比较
来源:互联网 发布:淘宝人工客服打不进去 编辑:程序博客网 时间:2024/05/21 20:25
JSP : JAVA SERVER PAGES JAVA服务器端页面
JSP执行图
1. HTTP协议是基于请求和响应的,请求之后就只等着响应其余的操作都在服务器端完成。所有的程序代码都是在服务器端执行的,返回给浏览器的只是静态的页面。
2. 从途中可以看出,JSP文件被JSP解析器成了一个.java文件 也就是servlet, 然后再编译成一个.class文件 所以说jsp是一种servlet,JSP最终都会转换成servlet来执行
1. 若是一个JSP文件之前被执行过,也就是已经被编译成了.class文件,那么在没被修改的情况下以后有人再调用的时候,则直接会调用该class文件
1. Template data: 模版数据,相等于HTML页面,是什么就显示什么。
<% %> 内的为JSP元素/JSP脚本段,可以写入JAVA代码,由JDK执行,需要严格遵守JAVA语法
<!-- 这是HTML注释 -->
<%--这是JSP的注释 --%>
<!-- <%= new java.util.Date() %> --> 这是在HTML注释中加入一个JSP表达式,里面的JAVA代码会被执行显示在HTML注释中
2. 声明格式定义变量和脚本段中定义变量的区别
<%! int f = 8; %>
<% int j = 8; %>
<%=f-- %>
<%=j-- %>
<%-- 这样就是JSP的声明和输出 ,在JSP转换为SERVLET时,会将声明的变量转换为成员变量,而在脚本段定义的j是局部变量,执行完就会去除,而成员变量f不会消除 --%>
servlet是单实例的,成员变量f的值只有一个,如果A用户访问了f并修改,那么f的值就改变了,B用户再访问的时候f的值就改变了,而局部变量则是每个用户访问的时都有一份,互不干涉
JSP的指令
page指令
<%@ page language="java" import="java.util.*,"java,io."*" pageEncoding="UTF-8"%>
include指令
body> <!-- 这是一个包含另外一个jsp文件的语法 -->
Time is:
<%@ include file ="includedemo.jsp" %>
</body>
==============================================================
<body>
<%=(new java.util.Date()).toLocaleString()%>
</body>
=============================================================
<jsp: forward>标签指令
用于转向页面,在其后的代码没有机会被执行
<body>
<jsp:forward page="forward1.jsp">
<jsp:param name="userName" value="SS"/>
</jsp:forward>
<%
out.println("oo"); //此处代码不会被执行,因为在jsp:forward之后页面已经转向
%>
</body>
<jsp:include file="url"> 标签指令
和 <%@ include file ="includedemo.jsp" %>差不多 只不过可以带参数 <jsp:include name="userName" value="SS"/>
实例:一个根据用户提交的表单,使用JSP创造表格的程序
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
</head>
<body>
<!-- 这是一个根据用户提交的表单 来创造表格的小程序 -->
<%
int rows = Integer.valueOf(request.getParameter("rows"));
int cols = Integer.valueOf(request.getParameter("cols"));
String result = ""
+ "<table border=4 width=80% align='center'>";
int k = 1;
for (int i = 0; i < rows; i++)
{
result += "<tr align='center'>";
for (int j = 0; j < cols; j++)
{
result += "<td>" + (k++) + "</td>";
}
result += "</tr>";
}
result += "</table>";
out.print(result);
%>
</body>
</html>
========================================================
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'jsptable.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="jsptable1.jsp" method="get">
请输入行数: <input type="text" name="rows">
请输入列数: <input type="text" name="cols">
<input type="submit" value = "提交">
</form>
</body>
</html>
JSP的内置对象
1. request对象 HttpServletRequest接口实现类对象
getParameter()/getParameterNames()/getParameterValues()方法的不同
//getParameter只适用于请求参数值只有一个的情况,如果有多个请求参数值,想要获取全部的参数值,使用getParameterValues()方法
//getParameterNames方法用来取得请求参数中的所有name属性值,返回一个Enumeration容器
</head>
<body>
<form action="testGetParameter1.jsp">
username: <input type = "text" name = "username"><br/>
password: <input type = "password" name = "password"><br/>
age: <input type = "text" name = "age"><br/>
age2 <input type = "text" name = "age"><br/>
<input type = "checkbox" name = "lovefruit">苹果
<input type = "checkbox" name = "lovefruit">橘子
<input type = "checkbox" name = "lovefruit">柚子
<input type = "submit" value = "提交">
</form>
</body>
===================================================
</head>
<body>
<% //getParameter只适用于请求参数值只有一个的情况,如果有多个请求参数值,想要获取全部的参数值,使用getParameterValues()方法
//getParameterNames方法用来取得请求参数中的所有name属性值,返回一个Enumeration容器
//输出结果
/*
password
age
username
lovefruit
20
18*/
Enumeration<String> en = request.getParameterNames();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());
}
String [] values = request.getParameterValues("age");
for(String value: values)
{
System.out.println(value);
}
%>
</body>
</html>
2. Session对象 HttpSession接口的实现类对象
Session对象用来记忆保持客户端的状态,因为HTTP协议是无序的,例如用户登录之后,不会记得用户的登录状态!
session.setAttribute("name", username);
String username = (String)session.getAttribute("name"); //这是2个最常用的方法用于将信息保存到session中和取出!
request对象的setAttribute() getAttribute()方法解析
以及与session对象的tAttribute() getAttribute()的比较
并且: session对象对多客户端进行服务器端的访问,保存请求数据时,保存多个客户端提交的请求数据,不会产生冲突,
而且 : 由于session对象的生命周期特点 (浏览器不关闭就保持存活) //暂时如此理解
所以:session对象内的数据,可以经过<jsp:forward>标签 或者<a href="#"></a>进行页面跳转后,也就是说无论用户发送多少个请求,只要session的生命周期还在,其对象内存放的数据都会保存! 而request对象内存放的数据,仅限于request对象的生命周期内(一次请求->得到响应->消亡),当用户发出新的请求(如点击一个连接),服务器会产生一个新的request对象,并且与之前的request对象毫无关系,所以存放在之前request对象内的数据也无法进行提取,所以说session的生命周期往往更大!!
1 0
- JSP执行流程和JSP的内置对象request和session解析比较
- jsp的内置对象request和response
- JSP内置对象session和request中setAttribute方法
- jsp的九大内置对象和四大作用域以及request和session的区别
- jsp 内置对象response,request,session 以及 cookie 对象的综合例子 和 include指令
- jsp 内置对象response,request,session 以及 cookie 对象的综合例子 和 include指令
- 编写一个JSP文件,使用pageContext内置对象来获取由session、request和application内置对象设置的属性。
- JSP内置对象之request和response
- JSP内置对象:request和response
- JSP内置对象:request和response
- JSP中Session内置对象和Cookie的区别
- JSP内置对象的使用 request,response,session(一)
- JSP 学习内置对象:request response session。。。。。的常用方法
- JSP内置对象的使用:request,cookie,session
- JSP的内置对象(request)
- jsp的内置对象request
- JSP内置对象和EL内置对象及区别解析
- jsp中的内置对象Cookie与session的比较
- lo cual cambia la d
- (8月22日更新)虚拟机中安装Android-x86 4.0支持VMware和VirtualBox...
- Ini antara usaha dal
- treelistwidget
- Centos7 - devstack快速安装openstack
- JSP执行流程和JSP的内置对象request和session解析比较
- super的使用
- MakeFIle $@,$^,$<
- Java的包
- How to solve TFS slow response problem?
- leetcode 179: Largest Number
- HTML中的id作用
- 02-mac上修改MySQL密码
- Interface