动态脚本语言,运行在web服务器上
首先JSP页面会被转成JAVA文件,并编译马class,再运行
1,JSP基本部分
<%! %> 定义段,常在其中定义方法和属性
注意:1,尽量不在其中定义属性,因为牵涉到线程数据同步问题
2,里面的方法一般都定义成private的
3,如果一定要定义属性,那么对这个属性的访问方法就要加上synchronized关键字
<% %>
JSP脚本,在一个页面中,不管分成多少个部分的脚本,这些脚本最终都会被生成在JAVA文件的同一个方法中,这个方法和在定义段中定义的那些方法是并列的
在这些脚本中,可以访问一系列内置对象,但在定义段中不可以
<%= %>
JSP表达式,这个表达式等同于out.println()方法,这个表达式是独立的,不能镶在<% %>
<%-- --%>
JSp注释 ,不会生成到客户端,请和html的注释比较
-----------------------
2.JSP指令
<%@ page %> 用于设置当前页面一系列基本信息
import:用于引入在当前页面中需要的Java包,不同包之间用','隔开
唯一可以重复出现多次的page属性
pageEcoding:指定当前页面编码,请参照中文问题
language java
isErrorPage:在当前页面中,是否可以使用exception内置对象
errorPage:当前页面如果产生错误后,转往哪个页面
autoFlush:是否自动刷出缓存
<%@ include %> file属性指定要引入的文件
这个文件是被引入后,再和当前页面一起去生成java文件,而不是先单独运行后把页面
结果返回.
请注意和<jsp:include>之间的区别
<%@ taglib uri= prefix %> 为了引入标签库
uri部分指明了标签库或者标签文件tld所在位置
prefix是标签的前缀,使用上采用<c:out>
--------------------
3.JSP的动作
3.1 <jsp:include page="" >把page的页面先执行后,再把最后返回的结果引入当前页面,对于需要动态的部分,往往采用这样的方式.
<jsp:include page="" ></jsp:include>如果这样写,意味着当中一定要有<jsp:param>来传递参数
<jsp:include page=>
<jsp:param name= value= />
</jsp:include>这是正传递参数的方式
3.2 <jsp:forward page=>跳转到page所在的页面
跳转是服务器内部的跳转,或者叫转发,不是重定向
地址栏地址不会变化
request会一直被保留
也可以结合<jsp:param>
注意和response.sendRedirect进行比较
这个动作等同于request.getRequestDispatcher("xx").forward(request,response)
3.3 <jsp:useBean><jsp:setProperty><jsp:getProperty>操作javabean的
<jsp:useBean id= class= scope= />
可以定义任何类
class必须是带包名的类名,哪怕已经引入过了
这个操作相当于做了两样事情,一个是在scope所对应的attribute中set了一个名字为id="xx"的属性,另一个是定义了一个jsp中的变量,可以在小脚本直接访问
<jsp:setProperty name= property="*|xxx" param= value= />填充一个由<jsp:useBean>所定义的javabean对象.填充的方式就是调用setter方法
name和<jsp:useBean>的id相同
四种填充方式:
name= property="*" 把所有提交来的表单中的内容填充到对应bean的同名属性中,并做类型转换
name= property="xx"把表单中和xxx 相同的部分,填充到xx属性
name="xx" property="bb" param="aa" 把表单中的aa和bean中的bb属性相对应
name="x" property="xx" value="zxxx" 把value中的值填充到xxx属性,value中的值可以是一个单纯的字串,也支持jsp表达式和el
param和value不能见面
<jsp:getProperty> 根据bean的name来调用对应的getter方法
-------------------
4. jsp的内置对象
4.1 jsp中的内置对象有作用域,分别为page,request,session,application
jsp的内置对象一共有9个,分别是
1, pageContext(page),request(request),session(session),application(application)
都可以setAttribute和getAttribute
2,剩余的5个,作用域都是page
response,out,cookie,page,config最后两个是和servlet相关的
4.2 作用域
作用域的应用很广泛,EL,JSP动作都有作用域,但说到底,都是attribute的存活范围
page:当前页面
include指令
request:
forward跳转
include动作
不包括重定向
最常见的,从一个表单提交到当前页面的信息
session:
在当前页面打开的时间内都有效
包括重定向
但是页面关闭就失效,还可能在时间到期和手动调用invalidate方法后失效
application:
在整个应用存在期间都有效,包括重新打开窗口
但不等同于把tomcat启动起来
把应用重新部署,application就失败了
4.3 内置对象分别说
request:获得表单提交的内容
getParameter(); // string
getParamterValues(); // string[]长用于获取多选的内容
获得表单内容时候,记得先判断是不是null
为了规避nullProinterException我们常操作的时候把常量放前面肯定不会是null的放前面
操作attribute,setAttribute,getAttribute,removeAttribute();
获得http的信息:getHeaders("user-Agent");getProtocol()
获得当前应用的一些信息:getContextPath获得RootURL,常用于拼接绝对路径
getServletPath RootURL如果面的那些访问路径
getRemoteAddress
gethost();
setCharacterEncoding(),设置字符集转换
和cookie交互
getCookie :返回Cookie[], 需要遍历这个数组,才能取得需要的cookie内容
替代方案是使用EL表达式${cookie.xxx}
response对象:不能操作属性
然后有一些set方法
setContentType:指定产生的页面的一些类型和编码
sendRedirect();//重定向,见后面的重定向和转发的比较
encodeURL : 在cookie失效的情况下,通过此方法来使得session仍然可用
addCookie : 在本地生成一个cookie文件,并保存对应cookie对象
session : 会话信息,常用于保存用户登录,购物车等等.
setAttribute等操作属性的方法
invalidate方法来使得当前session失效
cookie : 其实是通过上面的response和request来操作的.
Cookie cookie = new Cookie("键", "值");
cookie.setMaxAge();//用于指明cookie的生存时间,如果不指定的话,则窗口关闭cookie
session的实现,默认是使用cookie机制
必须要在response.addCookie()前调用
cookie和session的比较见后
application: 常用的就是操作attribute,ServletContext
out : 是PrintWriter的子类,JspWriter
println(0, newLine()
pageContext : 操作是页面里的属性,不要和page搞混了
setAttribute等操作属性的方法
可以获得其他内置对象
getOut
getSession()
4.5 内置对象的几个特别说明
4.5.1
forward和sendRedirect的区别
前者是服务器内部跳转,后者是重定向
前者地址栏里不会改变,后者会
前者带着request跑,后者不带
前者只能访问当前应用,其绝对路径写法不带RootURL
后者可以访问当前web服务器上的其他应用,其绝对路径比较要带上rootURL
前者跳转的时候,并不改变其相对路径的起始目录,所以在写路径时,尽量优先考虑欢乐能几朝路径
4.5.2 cookie和 session的区别
前者是文件,保存在磁盘,后者是数据,存在内存
前者的生存周期,由setMaxAge决定,不随应用的关闭而消失
后者生存周期只在当前窗口内,窗口关闭则over
前者保存在客户端,后者保存在服务端
前者不安全,后者相对安全,所以牵涉隐私信息,不要放cookie里
4.5.3 中文问题的处理
要区分是post还是get
对于post方式,我们需要调用request.setCharacterEncoding()转码
对于get方式,需要通过getBytes()逐个来转码
对于sendRedirect的时候,要特别记得要多转一次或者使用URLEncoding类来转一下
所有页面要使用统一的pageEncoding设置,推荐GBK或者UTF-8
对于tomcat,我们有一些特别的设置,可以简化中文问题
conf/server.xml中的<connector>里增加URIEncoding="xx"或者useBodyEncodingForURI="true"
增加完毕后,只需要在每个页面上统一使用request.setCharacterEncoding设置.
分享到:
相关推荐
在本项目"Spring-Boot JDBC JSP Demo"中,我们将探讨如何使用Spring Boot框架整合JDBC和JSP技术来创建一个简单的Web应用程序。这个Demo旨在展示如何在Spring Boot环境中进行数据库操作并展示结果到用户界面。 首先...
总结来说,JDBC驱动是JSP与数据库交互的桥梁,理解并正确使用不同类型的驱动可以优化应用程序的性能和可靠性。在实际开发中,选择合适的JDBC驱动类型,并遵循最佳实践来管理和使用数据库连接,对于提升应用的效率和...
总结来说,这个实验旨在帮助学生理解JSP和JDBC如何协同工作以实现与数据库的交互,以及如何在实际应用中构建简单的Web应用程序。通过这个实验,你可以学习到数据库连接、SQL语句执行、异常处理以及用户界面反馈等...
总结来说,JSP调用JDBC的核心在于导入JDBC包、建立数据库连接、执行SQL、处理结果和关闭资源。这是一个基础但至关重要的技能,对于任何使用Java开发Web应用的开发者来说都是必备的。免费的例子如"Demo"提供了实践和...
标题 "一个简单的增删查改demo(jsp,jdbc,struts2)" 涉及的是Web开发中的常见技术组合,主要包括三个核心组件:JSP(JavaServer Pages)、JDBC(Java Database Connectivity)以及Struts2框架。这些技术在企业级...
总结来说,这个项目涵盖了JSP、JavaBean和JDBC的基本概念和使用,以及分页技术的应用,是一个适合初学者练习和进阶的Web开发实例。通过这样的实践,开发者可以更好地理解和掌握Web开发的流程,为未来更复杂的项目...
总结起来,JDBC_JSP连接SQL和Access数据库涉及配置驱动、构建连接URL、建立连接、执行SQL以及关闭资源等步骤。理解和掌握这些知识对于开发涉及数据库操作的Java Web应用至关重要。同时,遵循最佳实践能提高代码的...
【JDBC简单分页方案】 在Java开发中,数据库记录的分页显示是常见的需求,尤其是在Web应用程序中。JDBC(Java Database Connectivity)是Sun公司制定的Java平台下的数据库连接标准接口,它提供了统一的方式来访问...
【jsp+jdbc 留言板】是一个基于Java Web技术实现的简单互动应用,它允许用户在网页上发表留言并查看其他人的留言。这个系统主要使用了Java Server Pages(JSP)作为视图层,Java Database Connectivity(JDBC)作为...
实验主要分为四个部分,涵盖了JSP、Servlet、JavaBean、JDBC以及更高级的框架和概念。 首先,我们从实验一着手,它涉及到JSP(JavaServer Pages)、Servlet和JavaBean,这些都是JavaEE中用于构建动态网页应用的基础...
总结来说,JSP结合JDBC可以方便地对SQLite数据库进行操作。在实际项目中,你可能还需要考虑事务管理、错误处理、连接池管理等更复杂的问题,但以上内容已经为你提供了一个基本的起点。通过不断学习和实践,你可以...
总结起来,这个项目是一个基于jdbc、servlet和jsp的JavaWeb应用,实现了对emp表中员工信息的CRUD操作,支持用户登录注册并采用了简单的验证码验证。此外,还具备分页查询功能,提高了数据浏览的效率和用户体验。通过...
总结,这个“员工基本信息管理小系统”是一个基于J2EE的初级项目,它综合运用了JSP、JavaBean、JDBC和MySQL,为初学者提供了一个良好的学习平台,通过实践,可以深化对Web开发技术的掌握。在实际开发中,我们还可以...
**JSP 学习总结** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML中嵌入Java代码,以实现服务器端的程序逻辑。对于初学者来说,掌握JSP的基础知识和核心概念至关重要。 ### JSP 开发Web应用系统 ...
总结来说,这个程序是一个基础的JSP数据库应用,适用于初学者学习JSP和数据库操作,通过实践掌握如何在Web环境中与数据库进行交互,实现增删改查的功能。在实际项目中,可能还会涉及到错误处理、事务管理、安全性...
### JSP页面连接MySQL实现增删改查简单实例 #### 一、背景介绍 在Web开发中,经常需要处理数据库的操作,例如增加、删除、修改和查询数据等基本操作(通常称为CRUD操作)。Java Server Pages (JSP) 是一种用于生成...
在本文中,我们将深入探讨如何使用Servlet和JSP来实现一个简单的购物车功能,并结合Cookie技术来存储用户的选择。Servlet是Java服务器端编程的核心技术,用于处理HTTP请求和响应;JSP(JavaServer Pages)是一种动态...
总结起来,这个简单的客户管理系统通过集成JSP、JDBC和Servlet技术,实现了动态数据的Web应用,为管理客户信息提供了一个直观的界面和后台处理机制。这为学习Web开发提供了很好的实践案例,帮助开发者理解如何在实际...
总结,"JSP简单的购物管理系统(购书)+SQL2000"是一个教学或实践项目,为初学者提供了学习JSP和数据库管理的实例。通过这个系统,开发者可以掌握动态网页开发、数据库操作以及简单的电子商务系统构建技巧。
**JSP(Java Server ...总结,这个"jsp简单示例"项目为我们展示了如何在JSP中运用DAO和Model模式来组织代码,以及如何处理数据库交互。通过学习和理解这个示例,开发者可以更好地掌握Web开发中的基础概念和实践技巧。