导图社区 Servlet生命周期管理自学思维导图
Servlet生命周期管理自学思维导图,整理了B/S与C/S区别、服务器、Servlet定义、Servlet生命周期、售票系统解决并发(同时抢票)、定时发送电子邮件、HttpServletRequest的内容,大家可以学起来哦。
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
Servlet生命周期管理自学思维导图
B/S与C/S区别
B/S:浏览器(html/jsp)和服务器 C/S:客户端(自己开发)与服务器
服务器
Tomcat
Jboss
WebLogic(BEA)
WebSpher(IBM)
Servlet定义
Servlet是运行在服务器端并包括HTML页面的Java代码
Servlet生命周期
init()初始化一次
Service方法 public void doPost(HttpServletRequest request, HttpServletResponse response) public void doGet(HttpServletRequest request, HttpServletResponse response) 每次请求访问则被调用 而request, response)对象每次都是全新的
destroy()服务器/revload停止消毁
售票系统解决并发(同时抢票)
1、如果一个变量需要多个用户共享,则应当在访问该变量的时候,加同步机制; synchronized(对象){} 2、如果 一个变量不需要共享,则直接在doGet()/doPost()定义,这样不会存在线程安全问题
int tick=3;//成员变量 response.setContentType("text/html;character=utf-8"); response.setCharacterEncoding("UTF-8"); response.getWriter().println("彩票系统"); synchronized(this){ if(this.tick>0){ System.out.println("我买到了彩票"+this.tick); response.getWriter().print("我买到乐膘"+this.tick); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.tick--; }else{ System.out.println("你没有买到票"); response.getWriter().print("我没有买到票"+this.tick); } }
定时发送电子邮件
web.xml <servlet> <servlet-name>ServletAction1</servlet-name> <servlet-class>com.ServletAction1</servlet-class> <!-- 1表示servlet 被init的顺序(代表第一个被调用) --> <load-on-startup>1</load-on-startup> </servlet>
ServetAction1.java public void init() throws ServletException { System.out.println("调用ServletAction方法"); //创建线程 SendMailThread sm = new SendMailThread(); sm.start(); }
SendMailThread类 public class SendMailThread extends Thread{ public void run(){ int i=0; try { while(true){ //每休眠10s钟,就去扫描sendmail,看看那个邮件被没被发送出去 Thread.sleep(10*1000); System.out.println("发出第"+(++i)+"邮件"); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
HttpServletResponse
response.getWriter();与response.getOutputStream()区别: getWriter()回送字符数据,效率高 getOutputStream()回送字节数据
两中流不可同时使用;原因是Tomact在接收第一个流的时候就被close了 所有再接收第二个流的时候会报错
SendRedirect()重定向 优点:传送的速度快 缺点:它只能传送字符串,不能传对象 属于服务器端跳转,当第一次跳转可以设置为post,而redirect302转发后(response.sendRedirect("/ServletJsp/ServletMain?user="+username);), 就以get的形式传输,所有中文注意乱码解决
HttpServletRequest
Http请求头的信息都会被封装到HttpServletRequest对象当中