servlet基础

1.tomcat在myeclipse中启动时,debug  server启动会在修改servlet后不用重启tomcat。


2.重定向与请求分派
resp.sendRedirect("servlet2");  重定向

//请求分派
RequestDispatcher dispatcher = req.getRequestDispatcher("servlet2");
dispatcher.forward(req, resp);
3.利用请求域属性传递对象数据
String  str ="在servlet1中存放请求域属性";
req.setAttribute("string", str);


String str =(String)req.getAttribute("string");
out.println("servlet2中:"+str);
4.ServletConfig和ServletContext
在web.xml中配置,整个Web应用只有一个ServletContext,这个上下文对Web应用中的每个servlet和JSP都可用;Web应用中的各个Servlet都有自己的ServletConfig,它只对当前的Servlet有效。


5.servlet的线程安全问题
     Servlet默认是多线程模式执行的。
a.使用synchronized
b.尽量少使用成员变量和共享数据




6.会话跟踪
HTTP是一种无状态的协议,本身不具有会话状态。要想在Web应用程序中维持会话状态信息和实现有状态的会话管理,需要浏览器对其发出的每个请求消息进行标识,属于同一个会话中的请求消息都附带同样的ID,而不同会话的请求消息总是附带不同的标识ID,这个标识ID俗称为会话ID(SessionID)。实现在Web服务器程序与客户端之间来回传递会话ID的技术被称为会话跟踪技术。
会话跟踪技术主要有两种:一是通过Cookie技术在请求消息首部中传递会话ID;另一种是通过URL重写,即在URL末尾添加上这个会话ID。
Cookie是在浏览器访问Web服务器的某个资源时,由Web服务器在HTTP响应消息头中附带传送给浏览器的一段数据。Web服务器通过在HTTP响应消息头中增加Set-Cookie信息发送给浏览器的,浏览器则通过在HTTP请求消息头中增加Cookie字段将Cookie信息回传给Web服务器。
Set-Cookie响应消息头字段:
Comment,Domain,Max-Age,Path,Port
Cookie综合示例:
public class CookieServlet extends HttpServlet{


public void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
this.doPost(req,resp);
}

public void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
Cookie cookie = new Cookie("username","david");
cookie.setMaxAge(24*3600);
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
resp.addCookie(cookie);
Cookie [] cookies = req.getCookies();
if(cookies == null){
out.println("<h3>还没有cookie</h3>");
}else{
out.println("<h3>cookie列表</h3>");
for(int i =0 ;i<cookies.length;i++){
out.println("Cookie名称:"+ cookies[i].getName());
out.println(",对应的值:"+cookies[i].getValue());
out.println("<br/>");
}
}
}
}

session技术
http://blog.csdn.net/fangaoxin/article/details/6952954很详细
7.Servlet过滤器(Filter)
public void init(FilterConfig config)
public void doFilter(ServletRRequest req, ServletResponse resp,FilterChain chain)
public void destroy()
8.servlet监听器
ServletContextListener  应用上下文生命周期监听器,监听Web应用的启动和销毁 ServletContextAttributeListener 应用上下文属性事件周期监听器,监听Web应用上下文中的属性改变的事件ServletRequestListener 请求生命周期监听器,用于监听请求的创建和销毁事件
ServletRequestAttributeListener 请求属性事件监听器,用于监听请求中的属性改变的事件
HttpSessionListener 会话生命周期监听器,用于监听会话的创建和销毁事件
HttpSessionActivationListener 会话激活和钝化事件监听器,用于监听会话的激活和钝化事件
HttpSessionAttributeListener 会话属性事件监听器,用于监听会话中的属性改变的事件
HttpSessionBindingListener 会话值绑定事件监听器,唯一不需要在web.xml中配置的事件
9.标注支持
@WebServlet、@WebInitParam、@WebFilter、@WebListener、@MultipartConfig
10.异步处理支持
Servlet收到请求之后,可能首先需要对请求携带的数据进行一些预处理;接着,Servlet线程将请求转交给一个异步线程来执行业务处理,线程本身返回至容 器,此时Servlet还没有生成响应数据,异步线程处理完业务后,可以直接生成响应数据(异步线程拥有ServletRequest和ServletResponse对象的引用),或者将请求继续转发给其他Servlet。
<async-supported>
AsyncListener监听器,AsyncContext txt = req.startAsync();ctx.addListener(new ASyncListener(){});
11.可插性支持
使用该属性,可以在不修改已有的Web应用的前提下,只需将按照一定格式打成的jar包放到WEB-INF/lib目录下,即可实现新功能的扩充,不需要额外的配置,Servlet3.0引入了称为“Web模块部署描述文件片段”的web-fragment.xml来实现可插性的。
web-fragment.xml部署描述文件可以实现一切可以在web.xml中定义的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值