客户端发出request请求到服务器,服务器的jsp container读取jsp文件,将jsp网页转译为Servlet源代码(.java),然后将servlet源代码编译成Class文件(.class),加载到内存并进行实例化,最后将结果response到客户端
在当前的jsp页面中加入静态或动态资源,适合用于包含动态页面
把当前的jsp页面转发到另一个页面上
在执行
执行applet或bean
创建一个JavaBean实例
设置JavaBean实例的属性值
获取JavaBean实例的属性值
jsp:forward
request.getRequestDispatcher(" url ").forward(request, response);
转发是在服务器端发挥作用,是服务器内部控制权的转移,客户端的地址不会发生改变,转发只发出一次请求,可以向后传递参数
response.sendRedirect(“url”);
重定向是在客户端发生作用,请求新地址,客户端地址栏会发生改变,重定向发出两次请求,不可向后传递参数
Statement对象存在三种方法:
ResultSet executeQuery(String sql)
执行查询语句,返回 ResultSet结果集
int executeUpdate(String sql)
用于执行增删改操作,返回对数据库影响的行数
boolean execute(String sql)
执行任何sql,当执行结果是一个ResultSet结果集时,返回true,并可通过getResultSet()方法得到返回的结果集,其他情况返回false
Connection 提供了事务处理的方法,通过DriverManager获取数据库连接后,可以通过以下代码处理事务
try{
con.setAutoCommit(false);//开启事务
......
con.commit();//一系列操作的最后提交事务
} catch() {
if(null != con) con.rollback();//回滚事务
}
如果在事务处理过程中发生异常则通过 rollback() 进行事务回滚
get从服务器上获取数据,一般用来做查询操作,get的参数会显示在url后面,对所有人可见,且保存在浏览器历史中,传送数据量小,安全性低,能被缓存
post向服务器传输数据,用来做更新操作,参数不会显示在url中,传送数据量大,安全性高,不能被缓存
角色:
服务注册中心:服务提供者在此发布他们的服务描述
服务提供者:托管被访问服务的平台
服务请求者:寻找并调用服务,或启动与服务交互的应用程序。服务请求者角色可以由浏览器来担当,由程序(例如,另一个Web Service)来控制它
操作
查找:服务请求者可以通过服务注册中心查找特定种类的服务
绑定:服务请求者通过绑定调用服务提供者提供的服务
发布:服务提供者发布服务描述以使服务可访问并且服务请求者可以查找它
动态include用jsp:include动作实现即
,会检查所含文件中的变化,适合用于包含动态页面。
静态include用指令实现,即<%@ include file="sample.jsp" %>
,不会检查所含文件的变化,适用于包含静态页面
静态include 在jsp文件被转换成servlet文件时引入文件,动态include在页面被请求时引入文件,故其效率较低但灵活性高
MVC(Model-View-Controller,模型-视图-控制器)是一种程序设计概念,用于应用程序的分层开发。
将业务逻辑代码与视图分离,可以更容易地根据需求的变化来修改程序。耦合性低,重用性高,可维护性强
建立一个连接池,预先在池中放入一定数量的连接,当需要与数据库建立连接时,从中取出一个连接,使用完毕后再放回去。普通连接数据库操作需要频繁的创建连接和关闭连接,浪费数据库资源影响性能,通过连接池可以监视数据库连接数量,节省了创建连接和关闭连接的时间,提高资源利用率和性能
id是当前页面中引用JavaBean的名字,scope指定javaBean的作用范围,class指定bean的位置
使用jsp:setProperty动作赋值,或使用<%%>代码块通过对象的set方法赋值,jsp:getProperty动作取值,或使用<%=%>代码块通过对象的get方法取值
HttpSession session = request.getSession();
获得session实例
使用HttpSession中
public void setAttribute(String key, Object value)
方法,将相应数据存入session中
public Object getAttribute(String key)
通过key获得对应的数据,若数据不存在则返回null
CLOB即字符大对象,由单字节字符组成,有自己专门的代码页。适用于存储超长的文本信息,那些可能会超出varchar数据类型长度限制(32KB)的文本
BLOB即二进制大对象,由二进制数据组成,没有专门的代码页。用于存储超过varbinary限制(32KB)的二进制数据。适合存储图片,音频等
out对象:JspWriter类的实例,是一个输出流,用于把信息回送到客户端的浏览器中
request对象:HttpServletRequest类的实例,封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息
response对象:HttpServletResponse类的实例,对客户的请求做出响应,向客户端发送数据
session对象:HttpSession类的实例, 用于存放用户状态信息、全局变量
application对象:用来保存网站的全局变量,在各个页面都有效,直至服务器关闭。所有用户共享同一个application对象
page:表示从该页面产生的一个servlet实例,类似java的this指针
pageContext对象:提供了存取页面中共享数据的方式**
config:ServletConfig类的实例,用于存取servlet实例的初始化参数
exception对象:处理jsp在执行时的错误和异常
javaBean是可重用的软件组件。用来封装事务逻辑,数据库操作等,配合JSP使用,实现前后端分离。
javabean三个基本特征:独立性、可重用性、状态可以保存。
JavaBean实现java.io.serializable接口,有无参构造函数,提供getter()和setter()方法访问它的属性,类中方法均为public
创建一个JavaBean实例
id是当前页面中引用JavaBean的名字,scope指定javaBean的作用范围,class指定bean的位置
设置JavaBean实例的属性值
获取JavaBean实例的属性值
1.创建标签处理类。若为简单标签不处理体内容则继承TagSupport,要处理体内容则继承BodyTagSupport,并重写相应方法
2.在WEB-INF目录下新建tld文件,在tld文件中注册标签
3. 在jsp头部导入自定义标签库
4. 在jsp中使用自定义标签
DriverManager接口
管理jdbc驱动,通过它的getConnection方法与url对应的数据库进行连接,传入数据库url,数据库用户名和密码
Connection接口
Connection与特定数据库的连接, 创建语句对象
Statement接口
执行sql语句并返回结果集
三种Statement类:
Statement:用于发送简单的SQL语句
PreparedStatement:用于发送带参sql语句且可防止sql注入
CallableStatement:用于调用存储过程
ResultSet接口
Statement执行sql语句后返回结果集,该接口提供检索不同类型数据的方法,可以通过列或列名得到列数据
1.加载数据库驱动
Class.forName();
2.定义所要连接数据库的地址
3.建立与数据库的连接
Connection connection = DriverManager.getConnection(url,name,psw);``
4.创建语句对象
Statement statement = connection.createStatement();
5.声明sql语句并执行
ResultSet resultSet=statement.executeQuery(sql);
6.对查询结果进行分析
while(resultSet.next()){
name =resultSet.getString(1);
phone =resultSet.getString(2);
System.out.println(name+","+phone); }
7.关闭打开的资源
resultSet.close();
statement.close();
connection.close();
资源关闭的顺序和打开的顺序相反
JDBC-ODBC桥驱动
使用odbc驱动连接数据库,需要安装odbc,基本被淘汰
本地api驱动
把jdbc调用适配成数据库的本地接口的调用
纯java中间件驱动
把jdbc调用转发给中间件服务器,由它去和不同的数据库进行连接,需要部署中间件服务器,性能较差
纯java驱动
把jdbc转化成数据库使用的网络协议,无需安装任何软件,这种方案最简单但需要根据不同数据库选用特定驱动程序
page:数据在一个页面范围内有效,通过pageContext对象访问
request:数据在一个服务器请求范围内有效,可通过forward跳转多个jsp,存放在HttpServletRequest对象中,通过request访问
session:数据在一次会话范围内容有效,相当于用户全局变量,存放在HttpSession对象中,通过session访问,默认过期时间三十分钟
application:数据在一个应用服务器范围内有效,相当于网站全局变量,存放在ServletContext对象中,通过application访问
javabean通过封装属性和方法成为具有某种功能或者处理某个业务的对象
tomcat默认运行目录:webapps
servlet生命周期由哪三部分组成?
初始化init()、服务service()、销毁destroy()
jsp用forward方法将请求转发给其他jsp页面
每次传递请求,都要调用filter的doFilter方法
如何把用户变量存放到session中?
request.getSession().setAttribute(key, value);
HttpSession session = request.getSession();
session.setAttribute(key, value);
taglib中标记,实现体内容的是BodyTag接口,不实现的是Tag接口
通过**Class.forName()**反射装载jdbc驱动
Servlet与Servlet容器之间直接通信的接口?
ServletContext
———————————————————————
jsp常用开发模式:
jsp+javaBean
jsp+servlet+javaBean
mvc
提交form表单,后台用什么来得到数据?
request. getParameter();
哪个文件修改tomcat默认端口号?
conf/ server.xml
一个bean由哪三部分组成?
1.实现java.io.serializable接口
2.提供无参数的构造方法
3.提供getter()和setter()方法访问它的属性
servlet中跨协议接口(TCP/UDP等)?
javax.servlet.GenericServlet
tag文件中,用attribute指令表示输入参数,用 variable指令表示输出参数
jsp注释:<%–注释内容–%>
session默认会话过期时间:30分钟
如何写cookie到客户端?
response.addCookie(cookie);
读cookie
request.getCookies( );
jsp界面用taglib指令引入标签
<%@ taglib uri=" " prefix=" " %>
———————————————————————
form表单提交有哪两个方式?post、get
servlet为每个httpsession分配的唯一标识符叫:session ID
jsp语法元素:指令、动作、脚本、jsp容器、jsp注释
jsp规范中三种脚本元素分别是:声明<%!%>、表达式<%=%>、脚本程序<%%>
JDBC中DriverManager接口用于连接数据库
JDBC事务处理中,数据库用setAutoCommit方法取消默认提交
web.xml位于哪个目录下?WEB-INF目录下
jsp如何获取一个checkbox,一组checkbox的值?
获取一个值:req.getParameter(“a”);
获取多个值:
String[ ] v = req.getParameterValues(“a”);
for (int i = 0; i < v.length; i++) { }
servlet的入口方法?init()
javabean三个基本特征:独立性、可重用性、状态可以保存