Servlet是在服务器端运行的Java程序,可以接收客户端请求request并做 出响应response
Servlet生命周期:
实例化:Servlet 容器创建 Servlet 的实例
初始化:该容器调用 init ( ServletConfig ) 方法 执行一次
服务:如果请求 Servlet,则容器调用 service() 方法 反复执行
销毁:销毁实例之前调用 destroy() 方法 执行一次
Servlet常用方法
Servlet接口:
void init(ServletConfig config) | 由 Servlet 容器调用,完成Servlet对象的初始化 |
void destroy ( ) | 由 Servlet 容器调用,释放Servlet对象所使用的资源。 |
ServletConfig接口:在Servlet初始化过程中获取配置信息 一个Servlet只有一个ServletConfig对象
String getInitParameter (String name ) | 获取web.xml中设置的以name命名的初始化参数值 |
ServletContext getServletContext( ) | 返回Servlet的上下文对象引用 |
ServletContext接口;使用Context容器进行通信
void setAttribute (String name, Object object ) | 设置名称为name的属性 |
Object getAttribute (String name ) | 获取名称为name的属性 |
String getRealPath (String path ) | 返回参数所代表目录的真实路径 |
ServletRequest接口;
void setAttribute (String name, Object object ) 在请求中 保存名字是name的属性
Object getAttribute ( String name ) 获取请求中保存的名字为name的属性
void removeAttribute (String name)清除请求中名字为name的属性
void setCharacterEncoding (String charset )设置请求字符集
String getParameter ( String name )返回请求中名字为name的属性
String[ ] getParameterValues (String name ),获取请求中同名但多个数据的的属性
RequestDispatcher getRequestDispatcher( String path )转发(直接跳转一次,带数据,带数据可以用)
void sendRedirect(String location) 重定向,不会带数据。
void encodeURL ( String url ),带cookie的重定向,代替上面的void sendRedirect(String location)
HttpServletRequest接口:
String getContextPath( ) 返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开 始部分
Cookie[ ] getCookies( ) 返回客户端在此次请求中发送的所有cookie对象
HttpSession getSession( ) 返回和此次请求相关联的session,如果没有给客户端分配session, 则创建一个新的session
HttpSession接口
session对象常用方法:
String getId() 获取sessionid
void setMaxInactiveInterval(int interval) 设定session的非活动时间
int getMaxInactiveInterval() 获取session的有效非活动时间(以秒 为单位)
void invalidate() 设置session对象失效
void setAttribute(String key, Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
void removeAttribute(String key) 从session中删除指定名称(key)所对 应的对象
ServletResponse接口
PrintWriter getWriter ( ) 返回PrintWriter对象,用于向客户端发送文本 String
getCharacterEncoding ( ) 返回在响应中发送的正文所使用的字符编码
void setCharacterEncoding (String charset ) 设置响应的字符编码
void setContentType ( String type ) 设置发送到客户端的响应的内容类型,此时响应 的状态属于尚未提交”text/html;charset=UTF-8”
HttpServletResponse接口
void addCookie ( Cookie cookie ) 增加一个cookie到响应中,这个方法可多次调用,设置 多个cookie void addHeader ( String name,String value ) 将一个名称为name,值为value的响应报头添加到响应中
void sendRedirect(String location) 发送一个临时的重定向响应到客户端,以便客户端访问 新的URL
void encodeURL ( String url ) 使用session ID对用于重定向的URL进行编码
B/S:Browser/Server浏览器/服务器
C/S Client/Server 客户端/服务器
区别
B/S:不需要客户端,体积小;维护成本低;兼容性强,只需要运行在浏览器上;性能较低;比较安全;
C/S:需要安装客户端,客户端体积大;运行比较稳定;客户端不太安全;兼容性低;不同操作系统需要重写客户端,且功能版本可能有差异;
Cookie、Session的区别
cookie:
1responce.setCookie
2addCookie ( Cookie cookie ) 增加一个cookie到响应中,
3Cookie[ ] getCookies( ) 返回客户端在此次请求中发送的所有cookie对象
储存到浏览器上
只能存字符串类型(不同语言之间的交流只能通过字符串)
生命周期取决于浏览器
不安全
session:
存到服务器上
存放object类型
responce.setCookie,服务器告诉浏览器要存的数据,向浏览器发出响应
request.getCookie,
生命周期取决于服务器
安全