JSP中的Java代码和内置对象
一、JSP中的Java代码
(一)JSP页面中有三种方式嵌入java代码:
1、java的表达式
格式:<%= java表达式 %>
2、java的语句
格式:<% java语句>
3、java的声明
格式:<%!成员方法的声明%>
JSP中的java的表达式:<%= java表达式 %>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@page import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个JSP页面</title>
</head>
<body>
<%= new java.util.Date() %><br/>
<input type="text" value="<%= new Date()%>" />
</body>
</html>
JSP中的java语句:<% 语句;%>
示例
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@page import="java.util.Date"%>
<%SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个JSP页面</title>
</head>
<body>
<%= sdf.format(new java.util.Date()) %><br/>
<input type="text" value="<%=sdf.format(new Date())%>" />
</body>
</html>
JSP中的java声明:<%! java的声明(成员方法,成员变量)%>
示例:九九乘法表
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%!
//九九乘法表
private String nineTable(){
StringBuilder builder = new StringBuilder();
for(int i=1;i<=9;i++){
for(int j=1;j<i;j++){
builder.append(i + "*" + j + "=" + i*j + " ");
}
builder.append("<br/>");
}
return builder.toString();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>九九乘法表</title>
</head>
<body>
<% nineTable() %>
</body>
</html>
结果:

二、JSP内置对象
(一)内置对象:在JSP页面中,直接可以使用的对象,这些对象从可见范围从大到小:
application:表示一个应用,其中放置的内容任何会话都可访问 ——内置对象类型:javax.servlet.ServletContext
session:表示一次会话——内置对象类型:javax.servlet.http.HttpSession
request:表示一次请求——内置对象类型:javax.servlet.http.HttpServletRequest request
response:表示一次响应——内置对象类型:javax.servlet.http.HttpServletResponse
out:表示在页面输出——内置对象类型:javax.servlet.jsp.JspWrite
page:表示页面对象——内置对象类型:java.lang.Object
config:表示配置对象——内置对象类型:javax.servlet.ServletConfig
exception:表示异常——内置对象类型:java.lang.Throwable,一般不是错误处理页是没有这个对象的,只有当page指令的isErrorPage="true"时才有这个对象
pageContent:表示页面范围对象——内置对象类型:
(二)JSP执行过程
JSP是一种服务端的技术,其执行过程
1、JSP页面在服务端要转换成 .java文件,命名规则:jsp文件主名_jsp.java
2、JSP页面在第一次请求时转换后的java文件会被编译生成 .class文件
3、执行 .class文件
(三)JSP当中表示范围的内置对象
表示范围的对象有以下操作:
在范围对象中旋转内容,都会有这些方法:
1、放置数据:setAttribute(key,value),以属性的方式放置
例如:
application.setAttribute(key,value);
session.setAttribute(key,value);
request.setAttribute(key,value);
pageContext.setAttribute(key,value);
2、取出范围对象中的数据:getAttribute(key);
application.getAttribute(key);
session.getAttribute(key);
request.getAttribute(key);
pageContext.getAttribute(key);
(四)内置对象的应用场景
场景一:统计一个站点的访问量
分析:用户的每次请求是不能加的,只有当一个新用户请求才能加,在B/S应用当中,一个会话就表示一个用户,如何表示一个新用户,就要使用session。
示例:想截图来着想了下还是敲吧........
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
int count = 0;
Object obj = application.getAttribute("count");
if(obj!=null){
//取出application中的count
count = (int)application.getAttribute("count");
//判断一个会话是否是一个新会话,只有当一个会话是一个新的session才加
if(session.isNew){
count++;
}
//将计数器放置在application中
application.setAttribute("count",count);
}
else{
if(session.isNew(){
count++;
}
application.setAttribute("count",count);
}
count = (int)application.getAttribute("ccount");
%>
<!DOCTYPE html>
<html>
<head>
<metf-8">
<title>计数器</title>
</head>
<body>
您是第<%= count%>个用户
</body>
</html>
示例编写用户登录:
第一步:编写登录的页面

action="processlogin.jsp" 、 method="post" 这里画出来的意思我这里说一下:
action="processlogin.jsp":是指发送信息的目地为后台 processlogin.jsp 的数据库。
method="post":method 属性规定如何发送表单数据(表单数据发送到 action 属性所规定的页面)。表单数据可以作为 URL 变量(method="get")或者 HTTP post (method="post")的方式来发送。
通俗点说就是 method 就是你用的交通工具,action 就是你的目的地。
第二步:

第三步:

结果:



最后详细说下表单中的 method="post"
表示表单中的数据以"post"方法传递。
Form提供了两种数据传输的方式——get和post。虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响。虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的。
Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:
1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。
5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
6、Get是Form的默认方法。
使用Post传输的数据,可以通过设置编码的方式正确转化中文;而Get传输的数据却没有变化。
JSP中的Java代码和内置对象的更多相关文章
- JSP中嵌入java代码方式以及指令
JSP中嵌入java代码的三种方式: (1)声明变量或方法 : <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet): <% j ...
- EL和 JSTL? 在JSP中简化 java代码的写法!
一.servlet部分 package com.aaa.servlet; import com.aaa.dao.IStudentDAO; import com.aaa.dao.Impl.Student ...
- JSP学习笔记(1)——Jsp指令、动作元素和内置对象
简单来说,javaweb技术就是让服务器端能够执行Java代码,之后返回数据给客户端(浏览器)让客户端显示数据 jsp页面中可以嵌套java代码(java小脚本)和嵌套Web前端(html,css,j ...
- freemarker 中可以直接使用的内置对象
freemarker 中可以直接使用的内置对象 需要配置一下:springboot中配置 ## Freemarker \u914D\u7F6E ## \u6587\u4EF6\u914D\u7F6E\ ...
- JSP最常用的五种内置对象(out,request,response,session,application)
为了简化开发过程,JSP提供了一些内置对象,它们由容器实现和管理.开发者在JSP页面中无需声明,无需实例化就可使用.主要有out,request,response,session,applicatio ...
- jsp中包含JAVA代码
在JSP中大部分都是由脚本小程序组成,所谓的脚本小程序就是里面直接包含了JAVA代码. 在JSP中Scriptlet一共分为三种: · <%%>:定义局部变量,编写语句 ...
- JSP中嵌入java代码的标签方式(转)
(1)声明变量或方法 : <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet): <% java代码; %> (3)表达式 ...
- jsp提交表单数据乱码,内置对象,以及过滤器
jsp提交表单数据乱码解决方案 通过form表单给服务器提交数据的时候,如果提交的是中文数据,那么可能会出现乱码,如果表单的请求方式是post请求,那么可以使用如下方案解决乱码: 在调用getPara ...
- jsp中利用java代码换行
从数据库中取出的10条商品数据分两行显示,每行5条. <% for(int i=0; i<latestProducts.size(); i++) { Product p = latestP ...
随机推荐
- 关于http请求时 安全协议问题 PKIX path building failed 解决办法
该问题的解决办法 1.在请求前需要将证书导入,不推荐 2.绕开安全协议处理 下面的代码时一段http请求并且绕开安全协议.可直接使用 /** * * @param url 需要请求的网 ...
- Oracle 11g DRCP配置与使用
Oracle 11g DRCP配置与使用Oracle 11g推出了驻留连接池(Database Resident Connection Pool)特性,提供了数据库层面上的连接池管理机制,为应对高并发 ...
- 关于xmlhttp会使用ie的缓存的问题及解决
在浏览器(如:IE)的客户端使用xmlhttp读取网络资源的时候,需要考虑到浏览器本地缓存的问题. 如果希望读取的数据是实时更新的,也就是不想从本地缓存中读取数据,我之前常用的方法是在请求网址后面加一 ...
- TensorFlow分布式实践
大数据时代,基于单机的建模很难满足企业不断增长的数据量级的需求,开发者需要使用分布式的开发方式,在集群上进行建模.而单机和分布式的开发代码有一定的区别,本文就将为开发者们介绍,基于TensorFlow ...
- ElasticStack系列之十九 & bulk时 index 和 create 的区别
区别: 两篇文章 id 都一样的情况下,index 是将第二篇文章覆盖第一篇:create 是在第二篇插入的时候抛出一个已经存在的异常 解释: 在批量请求的时候最好使用 create 方式进行导入.假 ...
- spring注解 @Scheduled(cron = "0 0 1 * * *")实现定时的执行任务
@Scheduled(cron = "0 0 1 * * *") 在使用该注解以前请做好以下准备工作,配置好相应的xm文件. 配置定时注解的步骤:http://blog.csdn. ...
- MongoDB 之 Limit 选取 Skip 跳过 Sort 排序 MongoDB - 7
我们已经学过MongoDB的 find() 查询功能了,在关系型数据库中的选取(limit),排序(sort) MongoDB中同样有,而且使用起来更是简单 首先我们看下添加几条Document进来 ...
- [Alg] 尺取法
尺取法是在线性结构中进行搜寻满足某一条件的区间的方法. 该方法保存两个索引--首索引begin.尾索引end.判断 [begin, end] 区间是否满足条件. 移动 [begin, end] 区间的 ...
- 如何将IOS版本的更新下载文件指向到自己的服务器
针对那些使用企业签名但是没有发布到AppSotre的IOS版本APP自动更新问题解决方案: 在apicloud中是这样说明的: 因为要填写plist地址所以不能向安卓那样直接填写服务器文件地址,但是直 ...
- OracleDBConsoleorcl 启动不了 服务特定错误2【解决办法】
问题描述: 我的oracle不知道为什么OracleDBConsoleorcl 启动不了 出现“服务特定错误2”现在我也不知道原因 估计是因为我电脑的IP经常变动,有时在公司用,有时在家里用! 我的o ...