Servlet动态页面技术
2015-06-03 21:08
435 查看
1.web.xml:控制Web应用程序的行为
1.Web工程启动时,首先读取配置文件
2.功能:
申明:
申明Servlet
申明filter
申明listener
自定义URLS:
servlet
filter
初始化参数:
servlet
JSP pages
预加载页面:
欢迎页面:
错误页面:
3.servlet映射:
申明:<servlet-name></servlet-name>
<servlet-class></servlet-class>
映射:<servlet-name></servlet-name>
<url-pattern></url-pattern>
2.Tomcat
0.容器的作用:根据 web.xml 的设置找到处理请求的 serclet ,调用service(),创建HttpServletRequest、HttpServletResponse对象,调用对应的doXXX方法,销毁对象。
1.Client发送请求到WebServer(Tomcat),WebSever通过容器(中的Servlet)来处理信息
Tomcat会解包符合http协议打包格式的的数据并通过IOStream的方式读取
2.用Tomcat建一个简单的Web工程:
WebProject:
pages:
index.html
WEB-INF:
web.xml
classes:
lib:
1.在WebProject目录用cmd 调用
jar -cvf filename.war .
来制作该站点的war文件
2.将war文件放在Tomcat目录的WebApps目录下
3.运行Tomcat,输入地址:
http://localhost:8080/filename/pages/index.html
3.功能:
读取显式(表单)和隐式信息(请求头信息)
生成响应结果
发送显式(html)和隐式(状态码和响应头信息)信息给客户端
4.类和接口:
0.包结构:
javax.servlet
javax.servlet.http
1.abstract class HttpServlet (extends GenericServlet(implements Servlet,ServletConfig)):
方法:
1.实现Servlet部分:
destroy():
getServletConfig(): //
getServletInfo: //返回作者、版本、版权信息
init(ServletConfig config):
service(ServletRequest req,ServletResponse res) // doGet(),doPost()都在调用了service()方法
2.实现ServletConfig部分:
getInitParameter(String name)
getInitParameterNames()
getServletContext()
getServletName()
3.GenericServlet部分:
log() //查看日志
4.HttpServlet()
doXXX():
在doXXX()内部可能的操作:getParameter();getWriter();m
class ServletContext()
class ServletRequset()
class ServletResponse()
2.interface HttpServletRequest()
interface HttpServletResponse()
6.HttpServletRequest对象的方法:
String getParameter(String name) //若匹配到,返回value。若value为空,返回空字符串。若匹配不到,但会null
String[] getParameterValues(String name) //返回name能匹配到的所有value
//在处理CheckBox、List的值存在一个name对应多个value的情况,在表单中每一对name=value_i都是一组键值
enumerate[] getParameterNames() //返回所有的键值组的name(存在相同)
String getHeader(String name) //返回标头
int getIntHeader(String name) //返回整型的标头值
enumerate[] getHeaderNames()
String getMethod() //返回请求的方法
String getContextPath() //返回Web项目环境的路径
7.调用Servlet方法:
1.url地址
2.提交<form action="">
3.超链接
4.JavaScript脚本 document.forms[0].action = "url";document.forms[0].submit();
8.1.设置中文字符集:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
2.重新编码字符串:
String username = new String(username.getBytes("ISO-8859-1"),"UTF-8"); //Tomcat6中请求对象默认使用ISO-8859-1编码
3.javac -encoding utf-8 main.java;
4.转译JSP:
%@page pageEncoding = "UTF-8"%
9.生命周期:
加载实例化Servlet
调用init() //调用一次
调用service(doXXX)() //调用多次,所用的请求共用一个Servlet所以要考虑Thread的同步
调用dostory() //调用一次
10.页面导航:
请求重定向:response.sendRedirect("url"); //跳转到当前工程之外,不共享request里面的数据
请求转发:request.getRequestDispatcher("url").forward(request,response);
请求包含:request.getRequesrDispatcher("url").include(requesr,response); //将目标页面包含到当前页面下
11.响应头信息
格式:
隐式:
HTTP1.1 200 ok
Content-Type:
Header[]:
显式:
<html></html>
设置响应头:
public void setHeader(String HeaderName,String HeaderValue);
public void setDateHeader(String name,long millisecs);
setContentType: //设置Content-Type,常见MIME表格
setContentLength: //设置Content-Type,用于持久HTTP连接
addCookie: //为set-Cookie报头增加一个值
sendRedirect: //设定Location报头及改变状态代码
HTTP1.1响应报头
Location:
Refresh:
Set-Cookie:
WWW-Autheuticate:
构建excel:
response.setContentType("application/vnd.ms-excel");
PrintWriter out = response.getWriter();
out.println("\tQ1\tQ2\tQ3\tQ4\tTotal");
out.println("Apples\t78\t79\t67\t45\t=SUM(B2:E2)");
out.println("Oranges\t78\t79\t67\t45\t=SUM(B3:E3)");
生成图片:
response.setContentType("image/jpeg");
InputStream in = this.getClass().getClassLoader().getRescoureAsStream("girl.jpg");
byte[] buffer = new byte[in.available()];
in.read(buffer);
OutputStream out = response.getOutputStream();
out.write(buffer);
out.close();
in.close();
刷新:
response.setHeader("refresh","1");
Date date = new Data();
out.println(data.toLocateString());
Cookie:保留客户信息,Cookies是保留在客户端的键值对
创建:
Cookie c = new Cookie(String name,String value);
时效:
c.setMaxAge(int seconds)
添加:
response.add(c);
获得:
Cookie[] cs = request.getCookies();
if(cs!=null){
Cookie cookie = cs[i];
if (){
cookie.getValue();
}
}
检验初访者:
doGet(){
Cookie c = new Cookie();
Cookie[] cs = request.getCookies();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String msg;
if (cs!=null&&cs.length>0){
for(c:cs){
if(c.getName().equals("yes")){
msg = "welcome back!"
}else{
msg = "welcome!"
}
}
}
}
自动登录:
ServletSession: //客户端和服务器建立持久性连接
持久保存对象:
Cookie:保存在客户端
Session:跟踪用户的一种机制,针对当前浏览器和服务器一一对应关系
将用户信息存放在Session中则在当前浏览器中信息共享
Session API:
Session接口:HttpSession:接口的实现由容器完成
获得HttpSession:
request.getSession();
保存:
Session.setAttribute("UserSession",obj);
获取:
Session.getAttribute("UserSession",userobject); //可以通过UserSession来访问userboject的属性//返回一个对象(object)需要强转
使Session无效:
Session.invalidate();
变量共享:
1.共享:setAttribute()
getAttribute()
2.作用域:
ServletContext:全局(工程)
ServletContext cxt = request.getServletContext();
cxt.setAttribute("c_name", "c_value");
HttpSession:客户端,跟踪会话
HttpSession session = request.getSession();
session.setAttribute("s_name", "s_value");
HttpServletRequest:请求过程
request.setAttribute("r_name", "r_value");
Filter:过滤器:用于修改通过Filter的请求和响应
访问目标资源时自动执行,Filter设置为一个文件夹(/*)下所有文件就可以对这些文件起到过滤作用,相同需要过滤的页面可以放在一个文件夹里
1.Session管理
2.权限验证 验证登陆除了登陆页面
3.日志记录
4.字符编码转换
在xml中配置方法和servlet相同
<filter-name><filter-class><url-pattern>
Listener:
和Scope相关:
ServletContext(Attribute)Listener:
initialized():Web容器启动时调用
destroyed():Web容器关闭时调用
ServletSession(Attribute)Listener:
登陆:initialized():request.getSession()
登出:destroyed():session.invalidate()/session=null;
ServletRequest(Attribute)Listener:
initialized():doXXX()调用时
destroyed():doXXX()调用后
在xml中配置:
<listener><listener-class>url</></>
统计在线人数:
Servlet_Access:
1. 创建Bean、impl、DBUtil包
2. 创建DBUtil包(openConnection(),closeConnection())
在lib中复制mysql-java.jar
配置properties文件
3. Bean包对应数据库中表
4. Bean.impl包实现表接口(add(),list())
5. Servlet包实现:
响应请求,后台逻辑,页面跳转
1.Web工程启动时,首先读取配置文件
2.功能:
申明:
申明Servlet
申明filter
申明listener
自定义URLS:
servlet
filter
初始化参数:
servlet
JSP pages
预加载页面:
欢迎页面:
错误页面:
3.servlet映射:
申明:<servlet-name></servlet-name>
<servlet-class></servlet-class>
映射:<servlet-name></servlet-name>
<url-pattern></url-pattern>
2.Tomcat
0.容器的作用:根据 web.xml 的设置找到处理请求的 serclet ,调用service(),创建HttpServletRequest、HttpServletResponse对象,调用对应的doXXX方法,销毁对象。
1.Client发送请求到WebServer(Tomcat),WebSever通过容器(中的Servlet)来处理信息
Tomcat会解包符合http协议打包格式的的数据并通过IOStream的方式读取
2.用Tomcat建一个简单的Web工程:
WebProject:
pages:
index.html
WEB-INF:
web.xml
classes:
lib:
1.在WebProject目录用cmd 调用
jar -cvf filename.war .
来制作该站点的war文件
2.将war文件放在Tomcat目录的WebApps目录下
3.运行Tomcat,输入地址:
http://localhost:8080/filename/pages/index.html
3.功能:
读取显式(表单)和隐式信息(请求头信息)
生成响应结果
发送显式(html)和隐式(状态码和响应头信息)信息给客户端
4.类和接口:
0.包结构:
javax.servlet
javax.servlet.http
1.abstract class HttpServlet (extends GenericServlet(implements Servlet,ServletConfig)):
方法:
1.实现Servlet部分:
destroy():
getServletConfig(): //
getServletInfo: //返回作者、版本、版权信息
init(ServletConfig config):
service(ServletRequest req,ServletResponse res) // doGet(),doPost()都在调用了service()方法
2.实现ServletConfig部分:
getInitParameter(String name)
getInitParameterNames()
getServletContext()
getServletName()
3.GenericServlet部分:
log() //查看日志
4.HttpServlet()
doXXX():
在doXXX()内部可能的操作:getParameter();getWriter();m
class ServletContext()
class ServletRequset()
class ServletResponse()
2.interface HttpServletRequest()
interface HttpServletResponse()
6.HttpServletRequest对象的方法:
String getParameter(String name) //若匹配到,返回value。若value为空,返回空字符串。若匹配不到,但会null
String[] getParameterValues(String name) //返回name能匹配到的所有value
//在处理CheckBox、List的值存在一个name对应多个value的情况,在表单中每一对name=value_i都是一组键值
enumerate[] getParameterNames() //返回所有的键值组的name(存在相同)
String getHeader(String name) //返回标头
int getIntHeader(String name) //返回整型的标头值
enumerate[] getHeaderNames()
String getMethod() //返回请求的方法
String getContextPath() //返回Web项目环境的路径
7.调用Servlet方法:
1.url地址
2.提交<form action="">
3.超链接
4.JavaScript脚本 document.forms[0].action = "url";document.forms[0].submit();
8.1.设置中文字符集:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
2.重新编码字符串:
String username = new String(username.getBytes("ISO-8859-1"),"UTF-8"); //Tomcat6中请求对象默认使用ISO-8859-1编码
3.javac -encoding utf-8 main.java;
4.转译JSP:
%@page pageEncoding = "UTF-8"%
9.生命周期:
加载实例化Servlet
调用init() //调用一次
调用service(doXXX)() //调用多次,所用的请求共用一个Servlet所以要考虑Thread的同步
调用dostory() //调用一次
10.页面导航:
请求重定向:response.sendRedirect("url"); //跳转到当前工程之外,不共享request里面的数据
请求转发:request.getRequestDispatcher("url").forward(request,response);
请求包含:request.getRequesrDispatcher("url").include(requesr,response); //将目标页面包含到当前页面下
11.响应头信息
格式:
隐式:
HTTP1.1 200 ok
Content-Type:
Header[]:
显式:
<html></html>
设置响应头:
public void setHeader(String HeaderName,String HeaderValue);
public void setDateHeader(String name,long millisecs);
setContentType: //设置Content-Type,常见MIME表格
setContentLength: //设置Content-Type,用于持久HTTP连接
addCookie: //为set-Cookie报头增加一个值
sendRedirect: //设定Location报头及改变状态代码
HTTP1.1响应报头
Location:
Refresh:
Set-Cookie:
WWW-Autheuticate:
构建excel:
response.setContentType("application/vnd.ms-excel");
PrintWriter out = response.getWriter();
out.println("\tQ1\tQ2\tQ3\tQ4\tTotal");
out.println("Apples\t78\t79\t67\t45\t=SUM(B2:E2)");
out.println("Oranges\t78\t79\t67\t45\t=SUM(B3:E3)");
生成图片:
response.setContentType("image/jpeg");
InputStream in = this.getClass().getClassLoader().getRescoureAsStream("girl.jpg");
byte[] buffer = new byte[in.available()];
in.read(buffer);
OutputStream out = response.getOutputStream();
out.write(buffer);
out.close();
in.close();
刷新:
response.setHeader("refresh","1");
Date date = new Data();
out.println(data.toLocateString());
Cookie:保留客户信息,Cookies是保留在客户端的键值对
创建:
Cookie c = new Cookie(String name,String value);
时效:
c.setMaxAge(int seconds)
添加:
response.add(c);
获得:
Cookie[] cs = request.getCookies();
if(cs!=null){
Cookie cookie = cs[i];
if (){
cookie.getValue();
}
}
检验初访者:
doGet(){
Cookie c = new Cookie();
Cookie[] cs = request.getCookies();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String msg;
if (cs!=null&&cs.length>0){
for(c:cs){
if(c.getName().equals("yes")){
msg = "welcome back!"
}else{
msg = "welcome!"
}
}
}
}
自动登录:
ServletSession: //客户端和服务器建立持久性连接
持久保存对象:
Cookie:保存在客户端
Session:跟踪用户的一种机制,针对当前浏览器和服务器一一对应关系
将用户信息存放在Session中则在当前浏览器中信息共享
Session API:
Session接口:HttpSession:接口的实现由容器完成
获得HttpSession:
request.getSession();
保存:
Session.setAttribute("UserSession",obj);
获取:
Session.getAttribute("UserSession",userobject); //可以通过UserSession来访问userboject的属性//返回一个对象(object)需要强转
使Session无效:
Session.invalidate();
变量共享:
1.共享:setAttribute()
getAttribute()
2.作用域:
ServletContext:全局(工程)
ServletContext cxt = request.getServletContext();
cxt.setAttribute("c_name", "c_value");
HttpSession:客户端,跟踪会话
HttpSession session = request.getSession();
session.setAttribute("s_name", "s_value");
HttpServletRequest:请求过程
request.setAttribute("r_name", "r_value");
Filter:过滤器:用于修改通过Filter的请求和响应
访问目标资源时自动执行,Filter设置为一个文件夹(/*)下所有文件就可以对这些文件起到过滤作用,相同需要过滤的页面可以放在一个文件夹里
1.Session管理
2.权限验证 验证登陆除了登陆页面
3.日志记录
4.字符编码转换
在xml中配置方法和servlet相同
<filter-name><filter-class><url-pattern>
Listener:
和Scope相关:
ServletContext(Attribute)Listener:
initialized():Web容器启动时调用
destroyed():Web容器关闭时调用
ServletSession(Attribute)Listener:
登陆:initialized():request.getSession()
登出:destroyed():session.invalidate()/session=null;
ServletRequest(Attribute)Listener:
initialized():doXXX()调用时
destroyed():doXXX()调用后
在xml中配置:
<listener><listener-class>url</></>
统计在线人数:
Servlet_Access:
1. 创建Bean、impl、DBUtil包
2. 创建DBUtil包(openConnection(),closeConnection())
在lib中复制mysql-java.jar
配置properties文件
3. Bean包对应数据库中表
4. Bean.impl包实现表接口(add(),list())
5. Servlet包实现:
响应请求,后台逻辑,页面跳转
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统