JavaWeb —— JSP 总结
JSP总结
静态网页
在网站设计中,纯粹HTML(标准通用标记语言下的一个应用)格式的网页通常被称为“静态网页”,静态网页是标准的HTML文件,它的文件扩展名是.htm、.html 。静态网页是网站建设的基础,早期的网站一般都是由静态网页制作的。静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。
动态网页
网页文件里包含了程序代码,通过后台数据库与WEB服务器的信息交互,由后台数据库提供实时数据更新和数据查询服务。动态网站体现在网页一般是以asp,jsp,php,aspx等结束。
两者区别
网页制作使用的制作语言:静态网页使用语言:超文本标记语言(标准通用标记语言的一个应用); 动态网页使用语言:超文本标记语言+ASP或超文本标记语言+PHP或超文本标记语言+JSP等。
程序是否在服务器端运行,是重要标志。在服务器端运行的程序、网页、组件,属于动态网页,它们会随不同客户、不同时间,返回不同的网页, ASP、PHP、JSP、ASPnet、CGI等。运行于客户端的程序、网页、插件、组件,属于静态网页,例如 html 页、Flash、JavaScript、VBScript等等,它们是永远不变的。
常用的动态网页技术
ASP(Active Server Page)
ASP技术是基于.NET平台的一种动态网页技术。它有非常强大的后台处理能力,但却有一些安全性、稳定性、跨平台性的问题。ASP只支持Windows平台,对Linux、Unix不支持。
PHP(Hypertext Preprocessor)
PHP原始为Personal Home Page的缩写,已经正式更名为(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP是HTML内嵌式的语言,这一点类似于ASP,并且PHP可以跨平台。但PHP的数据库接口不规范。但是对每种数据库接口的开发都不同极大地加重了开发者的负担,并且缺少企业级应用的支持。
JSP/Servlet(Java Server Page)
JSP技术在基于java的平台上广泛地使用,是进行Java web开发的一种核心组件。JSP页面由HTML代码和嵌入在其中的Java脚本组成。JSP可以一次编写,到处运行。这一点JSP比PHP技术更有优势,在不同的系统平台上运行,代码不用做任何修改。
什么是JSP
JSP (Java Server Pages) 是java服务页面,可以在HTML中嵌入Java脚本代码。
JSP页面元素:
静态内容:HTML静态文本
指 令:以"<%@" 开始,以"%>" 结束
小脚本:<%Java代码%>
表达式:<%=Java表达式%>
声明:<%! 方法%>
注释 :<!-- 客户端可以查看到-->,<%-- 客户端不能查看到--%>
JSP(一) 三大指令
① page 指令
通过设置内部的多个属性定义整个页面的属性
语法:
<%@ page 属性1="属性值" 属性2="属性值1,属性值2"… 属性n="属性值n"%>
② include 指令(静态包含)
将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件
include(静态包含):这种会将两个页面编译成一个class,里面的资源可以共享。(先包含再编译)
③ taglib 指令
在JSP页面中导入JSTL标签库,替换JSP中的Java代码片段
语法:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="别名"%>
JavaBean
JavaBean的优势
解决代码重复编写,减少代码冗余
功能区分明确
提高了代码的维护性
JavaBean 分为: 数据Bean 和 业务Bean
数据Bean : 私有的属性,默认的空构造,set、get方法 就是Java中的属性类
业务Bean : 使用数据Bean。
JSP(二)七大动作
jsp动作(action)是指在运行期间的命令,常见的有:
jsp:useBean
jsp:setProperty
jsp:getProperty
jsp:include
jsp:forward
jsp:param
jsp:plugin
① include
include 动态包含(分别编译):用jsp:include动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。flush属性: 用true ,表示页面可刷新。默认为false;在使用include命令时除非该命令被执行到,否则它是不会被Tomcat等JSP Engine编译。
语法: <jsp: include page="页面路径" flush="true" />
jsp:include(动态包含):这种会编译成两个独立的class,里面的资源无法共享。(先编译再包含)
include(静态包含):这种会将两个页面编译成一个class,里面的资源可以共享。(先包含再编译)
静态include和动态include的区别?
相同点:都会将页面引入到另一个页面中。
不同点:
静态include会将引用的jsp文件和当前的jsp文件生成为一个class文件,所以jsp中的变量是可以互相访问,两个页面中应尽量避免命名冲突。
动态include会生成两个完全不同的class文件,所以jsp中的变量不可以互相访问。
静态包含不能传参
适用场合:
静态include不会检查所含文件的变化,适用于包含静态页面,直接将内容先包含后处理。
动态include总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数,先编译之后再进行处理。
② useBean
useBean动作(jsp页面使用javaBean的第二种方式),作用域默认为page(本页面有效)
语法: <jsp:useBean id="对象名" class="包名.类名" scope="作用范围(page/request/application/session)"/>
scope属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、request、session和application四个值中的一个,其默认值是page。
③ getProperty
getProperty动作(name为useBean动作中的id).从对象中取出属性值:
语法: <jsp:getProperty name="javaBean对象" property="javaBean对象属性名" />
④ setProperty
setProperty动作(name为useBean动作中的id):
为对象设置属性值:
语法: <jsp:setProperty name="javaBean对象" property="javaBean对象属性名" value="值"/>
⑤ param
param动作:传递参数,到达跳转页面可以通过 request.getParameter("参数名")方式取出参数值
语法: <jsp:include page="转向页面的url" >
<jsp:param name="参数名1" value="参数值1"></jsp:param>
<jsp:param name="参数名2" value="参数值2"></jsp:param>
</jsp:include>
或者:
<jsp:forward page="转向页面的url">
<jsp:param name="参数名1" value="参数值1"></jsp:param>
<jsp:param name="参数名2" value="参数值2"></jsp:param>
</jsp:forward>
⑥ forward 动作:转发页面
语法: <jsp:forward page="login.jsp" /> 相当于 request.getRequestDispatcher("转发页面").forward(request,response);
⑦ plugin
plugin动作:<jsp:plugin>:用于指定在客户端运行的插件,不常用
JSP(三)九大内置对象
JSP内置对象是 Web容器创建的一组对象
JSP内置对象的名称是JSP的保留字,JSP内置对象是可以直接在JSP页面使用的对象,无需使用“new”,直接使用。
JSP中一共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception。
① request 对象 (作用域: 一次请求)
request 对象是 javax.servlet.httpServletRequest 类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
常用方法:
String getParameter(String name) 根据表单组件名称获取提交数据
String[] getParameterValues(String name) 获取表单组件对应多个值时的请求数据
void setCharacterEncoding(String charset) 指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path) 返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求
void setAttribute(String key,Object value) 设置键对应属性值
Object getAttribute(String key) 获取键对应属性值
② response 对象
response 对象是 javax.servlet.http.httpServletResponse 类型的对象。response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
常用方法:
void sendRedirect (String location) 将请求重新定位到一个不同的URL,即页面重定向
页面的转发
转发的作用:在多个页面交互过程中实现请求数据的共享
转发的实现:RequestDispatcher对象.forward()方法
重定向与转发的区别
区别一:
重定向时浏览器上的网址改变
转发是浏览器上的网址不变
区别二:
重定向实际上产生了两次请求
转发只一次请求
重定向:发送请求 -->服务器运行-->响应请求,返回给浏览器一个新的地址与响应码-->浏览器根据响应码,判定该响应为重定向,自动发送一个新的请求给服务器,请求地址为之前返回的地址-->服务器运行-->响应请求给浏览器
转发:发送请求 -->服务器运行-->进行请求的重新设置,例如通过request.setAttribute(name,value)-->根据转发的地址,获取该地址的网页-->响应请求给浏览器
区别三:
重定向时的网址可以是任何网址
转发的网址必须是本站点的网址
转发
转发是在服务器端发挥作用,通过forward()将提交信息在多个页面间进行传递
客户端浏览器的地址栏不会显示出转向后的地址
转发可以传递参数
语法: request.getRequestDispatcher("转发网址").forward(request,response);
重定向
重定向是在客户端发挥作用,通过请求新的地址实现页面转向
在地址栏中可以显示转向后的地址
重定向不能进行参数传递
语法: response.sendRedirect("重定向网址");
③ session 对象(作用域: 一次会话)
session 对象是 javax.servlet.http.HttpSession 类型的对象。session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
常用方法:
void setAttribute(String key,Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
void invalidate() 设置session对象失效
String getId() 获取sessionid
void setMaxInactiveInterval(int interval) 设定session的非活动时间
int getMaxInactiveInterval() 获取session的有效非活动时间(以秒为单位)
void removeAttribute(String key) 从session中删除指定名称(key)所对应的对象
④ application 对象(作用域: 一次服务)
application 对象是 javax.servlet.ServletContext 类型的对象。application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
常用方法:
void setAttribute(String key,Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
void removeAttribute(String name) 根据属性名称删除对应的属性
String getRealPath(String path) 返回相对路径的真实路径
Enumeration getAttributeNames() 获取所的属性名称
String getContextPath() 获取当前Web应用程序的根目录
String getInitParameter(String name) 根据初始化参数名称,获取初始化参数值
⑤ out 对象
out 对象是 javax.servlet.jsp.JspWriter 类型的对象。out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
⑥ pageContext 对象
pageContext 对象是 javax.servlet.jsp.PageContext 类型的对象。pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
常用方法:
void setAttribute(String key,Object value) 设置属性值
Object getAttribute(String key) 获取属性值
void removeAttribute(String key) 移除指定属性
pageContext 本身也是一个域对象,可以操作其他三个域对象(request,response,application)的数据
操作其他域对象的方法:
void setAttribute(String key,Object value,int Scope)
Object getAttribute(String key,int Scope)
void removeAttribute(String key,int Scope)
Scope:
PageContext.PAGE_SCOPE;
PageContext.REQUEST_SCOPE;
PageContext.SESSION_SCOPE;
PageContext.APPLICATION_SCOPE;
⑦ config 对象
config 对象是 javax.servlet.ServletConfig 类型的对象。config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
⑧ page 对象(作用域: 一个页面)
page 对象是 java.lang.Object 类型的对象。page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 thi ⑨ exception 对象
exception 对象是 java.lang.Throwable 类型的对象。exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。
常用方法:
String getMessage() 返回描述异常的消息
String toString() 返回关于异常的简短描述消息
void printStackTrace() 显示异常及其栈轨迹
Throwable FillInStackTrace() 重写异常的执行栈轨迹
在页面设置支持中文字符的字符集
乱码处理方式一(以GET方式提交数据时)
<%
//读取用户名和密码
String name = request.getParameter("name");
//对请求数据进行字符编码
name = new String(name.getBytes("ISO-8859-1"), "utf-8");
%>
乱码处理方式二(以POST方式提交数据时)
<%
//设置读取请求信息的字符编码为UTF-8
request.setCharacterEncoding("utf-8");
//读取用户名和密码
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
%>
乱码处理方式三(以GET方式提交数据时)
<!--在Tomcat目录结构\conf\server.xml中设置字符集-->
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
cookie的简介
cookie是Web服务器保存在客户端的一系列文本信息
cookie的作用
对特定对象的追踪
统计网页浏览次数
简化登录
安全性能:容易信息泄露
在JSP中使用cookie
创建cookie对象
Cookie newCookie = new Cookie(String key,Object value);
写入cookie
response.addCookie(newCookie);
读取cookie
Cookie[] cookies = request.getCookies();
常用方法:
void setMaxAge(int expiry) 设置cookie的有效期,以秒为单位
void setValue(String value) 在cookie创建后,对cookie进行赋值
String getName() 获取cookie的名称
String getValue() 获取cookie的值
String getMaxAge() 获取cookie的有效时间,以秒为单位
Session和cookie的区别与联系
cookie是把用户的数据写在用户本地浏览器上, 其他网站也可以扫描使用你的cookie,容易泄露自己网站用户的隐私,而且一般浏览器对单个网站站点有cookie数量与大小的限制。
Session是把用户的数据写在用户的独占session上,存储在服务器上,一般只将session的id存储在cookie中。但将数据存储在服务器对服务器的成本会高。
session是由服务器创建的,开发人员可以在服务器上通过request对象的getsession方法得到session
一般情况,登录信息等重要信息存储在session中,其他信息存储在cookie中
session的实现原理
服务器会为每一个访问服务器的用户创建一个session对象,并且把session对象的id保存在本地cookie上,只要用户再次访问服务器时,带着session的id,服务器就会匹配用户在服务器上的session,根据session中的数据,还原用户上次的浏览状态或提供其他人性化服务。
cookie与session的对比
session
保存在服务器端用户信息
session中保存的是Object类型
随会话的结束而将其存储的数据销毁
保存重要的信息
cookie
在客户端保存用户信息
cookie保存的是 String类型
cookie可以长期保存在客户端
保存不重要的用户信息
---------------------------------------------------------------JSP完结-----------------------------------------------------------
JavaWeb —— JSP 总结的更多相关文章
- JavaWeb:JSP标准标签库
JavaWeb:JSP标准标签库 说明 什么是JSTL? JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制的标签库的集合,用来解决像遍 ...
- JavaWeb:JSP技术基础
JavaWeb:JSP技术 快速开始 介绍 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%> ...
- JavaWeb——JSP内置对象application,JSP属性范围
application application语法 application对象 JSP属性范围 范围的分类 page request session application pagecontext延伸 ...
- javaweb jsp页面上传excel文件
servlet: private static final long FILE_MAX_SIZE = 4 * 1024 * 1024; if (!ServletFileUpload.isMultipa ...
- JavaWeb:jsp
本文内容: JSP的介绍 jsp的使用 EL表达式 JSTL的使用 首发日期:2018-06-18 JSP的介绍: JSP全称Java Server Pages. 与静态网页格式的html不同的是,j ...
- JavaWeb -jsp文件和内置对象的解析
jsp文件和内置对象的解析 对page解析 JSP九大内置对象(自带,无需new) 1 out:输出对象 2 request:请求对象,存储“客户端像服务端发送的请求信息” 3 response:响应 ...
- JavaWeb -- Jsp 自定义标签的使用
Jsp中不要有一行Java代码, 需要的Java代码都要封到自定义标签中. 自定义标签的作用: a. 自定义标签除了可以移除jsp页面java代码外,它也可以实现以上功能. b. 控制jsp页面某 ...
- JavaWeb -- Jsp中的 EL表达式
lEL 全名为Expression Language.EL主要作用: l获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.(某个web ...
- JavaWeb -- JSP+JavaBean模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. JSP+JavaBean模式适合开发业务 ...
- JavaWeb -- Jsp 和 JavaBean
JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为: <jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件. <jsp ...
随机推荐
- 获取tomcat路径
String serverPath = System.getProperty("catalina.home");
- Android中当前Activity跳转到当前Activity页面
步骤:先关闭自己,在跳转 case R.id.btn_copy:// 复制 Toast.makeText(mContext, "正在复制", Toast.LENGTH_SHORT) ...
- javascript实现移动端网页版阅读器
现在手机上的文本阅读app已经非常丰富,良好的阅读体验与海量的书库常常令我感到无比兴奋. 我想到8年前用一点几寸屏幕的mp3看电子书的情景,顿生一种淡淡的温馨.再久远一些,小的时候,我也经常和小伙伴们 ...
- HTML5中video标签与canvas绘图的使用
video标签的使用 video标签定义视频, 它是html5中的新标签, 它的属性如下(参考自文档): domo01 <!DOCTYPE html> <html lang=&quo ...
- 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader
不多说,直接上干货! IO流用来处理设备之间的数据传输. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. IO流按操作数据分为两种:字节流和字符流. IO流按流向分为:输 ...
- 【Linux】Debian vim没有颜色的解决办法
vim /etc/vim/vimrc #查找到syntax on 启用,去掉前面的“ (引号). 保存ok 转载地址:http://www.th7.cn/system/lin/201404/525 ...
- MVC中的验证码
下面是一个完整的mvc controller类 public class CodeController : Controller { private const string CODE = " ...
- 服务器断电后 redis重启后启动不起来
服务器断电后 redis 重启后启动不起来 原因:db持久化失败 1. 先查询redis的进程 ps -ef|grep redis 2. 查询redis的缓存文件在哪 whereis dump.rdb ...
- Oracle数据库分割字符串function方法
下面我直接上传一串代码源码, create or replace function strsplit(p_value varchar2, p_split varchar2 := ',') --usag ...
- java中关于冒泡排序算法的学习。
在编程语言的学习中,排序算法在学习过程中是必须要掌握的,特别在新手的学习中,我们应该学会这些算法,本篇先介绍冒泡算法. 冒泡排序 设有一组待排序的数据: 3 2 4 5 7 1 我们需要使用冒泡排序来 ...