servlet+jsp+jdbc知识点.docx
《servlet+jsp+jdbc知识点.docx》由会员分享,可在线阅读,更多相关《servlet+jsp+jdbc知识点.docx(9页珍藏版)》请在冰豆网上搜索。
servlet+jsp+jdbc知识点
Servlet部分
1.web项目的结构:
项目根目录.html,*.jsp;.css;*.js,images
--WEB-INF
--classes:
保存.class文件
--lib:
项目中的jar包
web.xml:
项目的配置文件
.tld标签库的描述文件
.xml其它框架配置文件
2.开发web项目
2.1编写源文件.java
2.2编译--〉class
2.3打包:
jar例:
jar-cvfTest.war说明:
将当前目录中所有文件打入Teat.war包
Ant例:
antbuild.xml说明:
需要先在环境变量中设置ANT_HOME,bulid.xml为部署文件
集成开发工具MyEclipse,JBuilder,NetBeans..
打包成*.war
2.4部署:
把war包copy到webapps下,第一次访问时,war包会自动解压
3.访问服务器上某个项目:
协议:
//服务器IP:
端口号/项目名/资源的URI
http:
//localhost:
8080/projectName/index.html
4.Servlet:
ServerLet
运行在服务器端的,用java编写的
处理客户端的请求的小应用程序
servelt不能单独运行,必须运行在容器中:
容器:
tomcat,jboss,weblogic,websphere,glassfish;
专门的web服务器:
apacheIIS
Tomcat是一个包含了基本的WEB服务器功能的Servelt容器。
servlet中定义的方法均为:
回调方法。
(编写后交由容器调用,而非自己调用)
servlet的生命周期:
初始化--〉服务--〉销毁
init()1次service()0...多次destroy()1次
对应多个用户,启动多个线程来处理
与Servlet开发相关的类与接口位于下面2个包中:
javax.servlet.*;javax.servlet.http.*;
Servlet(接口)-->GenericServlet(不基于任何协议的实现类)-->HttpServlet(基于HTTP协议的实现类)
自定义servlet通常继承至HttpServlet
5.servlet常用API:
HttpServletRequest:
封装请求的信息
String参数值request.getParameter(String参数名):
如果请求中无此参数,则返回NULL
String[]参数数组request.getParameterValues(String参数名):
参数中存在同名参数,使用此方法返回参数数组
未选中checkbox任何选项,则返回数组为NULL.
HttpServletResponse:
封装相应的信息
PrintWriterout=response.getWriter();
out.print();
完成对某个servlet的配置(web.xml):
建立请求与某个Servlet之间的对应关系
别名
自定义Servlet的全限定名
别名
/URI
Get方式附加参数的格式:
?
参数1名=参数1值&参数2名=参数2值&..&参数n名=参数n值
doGet():
处理Get方式发出的请求
doPost():
处理Post方式发出的请求
doGet,doPost与service方法之间的联系:
service:
伪代码
if(method.equals("Get"))
{
doGet();
}
if(method.equals("Post"))
{
doPost();
}
GET,POST方式不一样的地方:
Get:
参数信息会被编码成一个字符串,附加在URL后面
Post:
参数信息被打包到httpbody中。
form提交给某个Servlet:
设置form标签的action属性
action="/项目名/配置的URI"
请求中的参数值:
是HTML表单元素的value值,而非页面显示内容.
?
name=abc&fruit=apple&fruit=banana&weight=5&type=credit
6乱码
场合:
页面本身有中文的时候
解决办法:
servlet:
resp.setContentType("text/html;charset=gbk");
Jsp:
<%@pagecontentType="text/html;charset=gb2312"%>
注意:
一定要写在PrintWriterout=resp.getWriter();之前
场合:
解决get方式乱码问题:
解决办法:
修改server.xmlURIEncoding="GBK"或者useBodyEncodingForURI="true"
场合:
解决post方式提交内容的乱码
解决办法:
request.setCharacterEncoding("GBK");
注意:
一定要写在存取第一个参数之前
不要调用response.setCharacterEncoding("GBK");
7.ServletConfig:
初始化
初始参数的设置:
web.xml:
标记之间
使用进行配置,这个参数是这个Servlet所独有的
配置信息被封装到ServletConfig对象中
ServletConfig对象:
getInitParameter(Stringname);
8.Cookie:
当客户端浏览器接收到服务器发出包含Cookie响应头,
在客户端的硬盘上,以文件的方式保存cookie的内容。
其内容由一对键值对构成。
Cookie[]cookies=HttpServletRequest:
getCookies();
Cookiecookie=newCookie("名字","值");
cookie.setMaxAge(有效的秒数);
response.addCookie(cookie);在响应头中添加Set-Cookie头.
cookie.getName():
cookie的名字
9.Session:
时间作用域的概念:
开始:
1.打开浏览器,发出请求
结束:
1.关闭浏览器
2.session过期:
setMaxInactiveInterval(秒):
30分钟
3.强制session实效:
session.invalidate()
4.其它异常
获得Session:
HttpSessionsession=requeset.getSession();
getSession(true)相当于getSession():
获得与当前请求相关的Session对象.假如不存在,返回新的Session
getSession(false):
获得与当前请求相关的Session对象.假如不存在,直接返回NULL
setMaxInactiveInterval(秒数)
getId():
获得SessionId
inNew():
判断Session是否新建
//将obj放入session这个作用域
session.setAttribute(Stringname,Objectobj);
Objectobj=session.getAttribute(Stringname);
请求作用域:
开始:
1.发出请求
结束:
1.收到响应
//将obj放入请求这个作用域
request.setAttribute(Stringname,Objectobj);
Objectobj=request.getAttribute(Stringname);
Session与Cookie的区别:
相同点:
保存客户端的信息
不同点:
Cookie:
客户端,持久保存
Session:
服务器,在内存里
10.ServletContext:
应用程序application作用域
application作用域:
开始:
1.程序发布
结束:
1.程序终止
//将obj放入应用程序这个作用域
servletContext.setAttribute(Stringname,Objectobj);
Objectobj=servletContext.getAttribute(Stringname);
application>session>request
获得上下文对象:
通过从GenericServlet继承过来的getServletContext();
一个WEB应用只有一个ServeltContext对象.
11.请求的转发:
服务器端的转发:
1.RequestDispatcherdispatcher=context.getRequestDispatcher("/URI");
2.dispatcher.forward(request,response);
doGet-->doGet;doPost-->doPost
客户端的转发:
HttpServletResponse:
response.sendRedirect("/uri");
response.addHeader("refresh","5;url=...");
建议:
out.print("//localhost:
8080/Servlet02/target'/>");
12.过滤器:
实现Filter接口:
初始化过滤销毁
init(),doFilter(request,response,chain),destory();
别名
过滤器的全限定名
别名
/过滤的资源
多个过滤器形成过滤器链,先进哪个,后进哪个取决于其在web.xml中的配置信息出现的位置
过滤器初始化参数的取得:
init(ServletConfigconfig)中config.getInitParameter(参数名),返回参数值
JDBC部分
1.加载驱动:
Class.forNamee("驱动名");
2.获得连接对象:
Connectionconn=DriverManager.getConnction(连接字符串);
3.通过连接对象获得处理或者预处理对象
Statementstmt=conn.createStatement();
PreparedStatementpstmt=conn.createPrepareStatement(Stringsql);
4.执行:
处理对象:
查询ResultSetrs=stmt.executeQuery(Stringsql);//返回数据集对象
非查询操作:
inti=stmt.executeUpdate(Stringsql);//此操作影响的数据库中的数据的行数
预处理对象:
给参数赋值:
pstmt.setXXX(intindex,值);//第一个参数是1,第二个参数是2
查询ResultSetrs=pstmt.executeQuery();//返回数据集对象
非查询操作:
inti=pstmt.executeUpdate();//此操作影响的数据库中的数据的行数
数据集对象:
rs.next();//下移一位,判断数据集中是否有下一条记录;
rs.getXXX(index);//第一个列是1,第二个列是2
5.释放资源:
finally
{
rs.close();
stmt.close();
conn.close();
}
6.与事务相关的几个操作:
conn.setAutoCommit(false);//禁止自动提交
mit();//提交事务
conn.rollback();//回滚事务
conn.setAutoCommit(true);//设置回自动提交
7.使用存储过程操作数据库
MVC部分
1.javaBean:
java里的组件技术(可重用)
默认的空参构造
implementsSerializable
属性:
getXxxx(),setXxxx()
pojo:
plainandoldobject:
实体类
对应于数据库中的表,其属性对应于字段
数据的载体
Dao:
DataAccessObject:
数据访问对象
一张表一个Dao,封装对此表的所有操作
2.MVC:
C:
servlet:
1.接受客户提交的请求,取出参数封装到一个pojo里
2.完成对应的业务逻辑(多步对数据库的操作)
调用Dao完成业务逻辑
3.返回下一页面
V:
jsp
1.显示页面
2.收集信息,响应客户的操作
M:
JavaBean
pojo:
封装数据,便于传递。
//传数据扔到对象去。
Dao:
封装对数据库的访问
JavaBean命名