⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servlet_day05.txt

📁 详细讲述Servlet
💻 TXT
字号:
1. ServletContext
   创建时刻:在服务器启动时创建;
   销毁时刻:应用或服务器停止、重载时;
   创建数量:在整个Web应用运行期间只创建一个;
   作    用:1. 获得服务器名称、版本信息;
             2. 记录日志信息;
	        log(String msg);
		log(String msg, Throwable t);
             3. 存放一些数据供所有访客所共享:
	        setAttribute(String, Object);
	        Object getAttribute(String);

2. HttpSession
   创建时刻:第一次调用request.getSession();
   销毁时刻:1. 自动销毁:指定时间(默认为30分钟)
                         内没有被访问;
             2. 手动销毁:session.invalidate();
                     
   创建数量:一次会话期间(打开至关闭浏览器)创
             建一个;
	     Firefox: 两个同时运行的Firefox
	              进程共享会话Cookie,从而
		      共享同一个Session对象;
	     IE     : 两个同时运行的IE
	              进程不共享会话Cookie,从而
		      各自创建Session对象;
   作    用:在不同的请求间共享数据
	     setAttribute(String, Object);
	     Object getAttribute(String);             

3. ServletRequest 
   创建时刻:每次提交请求;
   销毁时刻:请求处理结束;
   创建数量:一个请求创建一个;
   作    用:1. 封装请求提交的数据;
                request.getParameter(String key);
		request.getParameterNames();
		request.getParameterValues();
		request.getCookies();
             2. 在同一个请求所涉及到的资源间
	        共享数据;
		request.setAttribute(String,Object);
		Object request.getAttribute(String);

事件:

1. ServletContext,HttpSession,ServletRequest
   对象创建和销毁时;
2. 属性对象加入、替换以及移除时;

ch07

DBListener.java -> ServletContextListener


ch07

DBListenerTest.java

/dbt

ch07

CtxListener.java-> ServletContextListener

CtxListenerTest.java

/clt

ch07

ShoppingCart.java

Book.java

OrderLine.java


个性化计数

ch07

SessionListener.java  -> HttpSessionListener

SessionListenerTest.java

/slt

this.getServletContext();

arg0.getServletContext();

session.getServletContext();

1. Servlet编写规范
   1) Servlet类编写规范
      a.直接或间接是javax.servlet.Servlet接口
        的实现类;
        1) implements Servlet;
	2) extends GenericServlet;
	3) extends HttpServlet;
      b.重写服务方法;
        service(ServletRequest req,
	        ServletResponse res);
        service(HttpServletRequest req,
	        HttpServletResponse res);
        doGet(HttpServletRequest req,
	        HttpServletResponse res);
        doPost(HttpServletRequest req,
	        HttpServletResponse res);
      c.在web.xml配置:
        <servlet>
	   <servlet-name></servlet-name>
	   <servlet-class></servlet-class>
	</servlet>
        <servlet-mapping>
	   <servlet-name></servlet-name>
	   <url-pattern></url-pattern>
	</servlet-mapping>
   2) 通过Servlet类获得表单提交数据
      request.getParameter("pwd");
      request.getParameterValues("pwd");
      request.getParameterNames();
      request.getQueryString();
   3) 生命周期
      init(ServletConfig config)
      service(ServletRequest req,
	        ServletResponse res);
      destroy();
   4) 和数据库交互;
      JNDI->DataSource->Connection Pool

      a. 将数据库驱动置于$CATALINA_HOME/
         common/lib中;
      b. 通过Tomcat的Admin改写$CATALINA_HOME
         /conf/catalina/localhost/应用名称.xml
	 ,配置数据源;
      c. 在web.xml中加入:
         <resource-ref>
	    <res-ref-name>jdbc/oracle</res-ref-name>
	    <res-type>javax.sql.DataSource</res-type>
	    <res-auth>Container</res-auth>
	 </resource-ref>
      d. 在Servlet中使用代码获得连接:
         Context ctx=new InitialContext();
	 DataSource ds=(DataSource)
	    ctx.lookup("java:comp/env/JNDI名");
	 Connection conn=ds.getConnection();

   5) 资源跳转;
      RequestDispatcher disp=
         request.getRequestDispatcher();
	 getServletContext().getRequestDispatcher();
      disp.forward(req,res);
      disp.include(req,res);

      response.sendRedirect("/a.html");

   6) 状态持久: 在不同请求间传递数据;

      Cookie[] cs=request.getCookies();
      
      Cookie c=new Cookie("name","zs");
      reponse.addCookie(c);
      c.setMaxAge(11);

      request.getSession();
      request.getSession(true);
      request.getSession(false);
      session.getAttribute("");
      session.setAttribute("",Object);

   7) Filter

      1) 编写  
         实现javax.servlet.Filter
      2) 运行
         <filter>
	   <filter-name></filter-name>
	   <filter-class></filter-class>
	 </filter>
	 <filter-mapping>
	   <filter-name></filter-name>
	   <url-pattern></url-pattern>
	 </filter-mapping>

   8) Listener
      
2. Web应用组织的规范

   应用名称
      |
      -- WEB-INF
            |
	    -- web.xml
	    |
	    -- classes
	           |
		   --- ch01




http://localhost:8080/estore/

注册:

register.html-> RegisterServlet.java

request.getParameter("loginName");
request.getParameter("pwd");
...

Customer c=new Customer();
CustomerDAO dao=new CustomerDAOImpl();
try {
  dao.save(c);
  response.sendRedirect("login.html");
}catch(CustomerException e) {
  response.sendRedirect("register.html");
}

登录:

login.html->LoginServlet.java

CustomerDAO dao=new CustomerDAOImpl();
try {
	Customer c=dao.find(loginName,password);
	if(c==null) 
	  response.sendRedirect("login.html");
	else {
	  response.sendRedirect("listBookStore");
	  session.setAttribute("customer",c);
	}
} catch(CustomerException e) {
     	  response.sendRedirect("login.html"); 
}

图书列表

编写一个Listener从数据库中获取Book信息,将其存放
入ServletContext中

BookDAO dao=new BookDAOImpl();
Collection<Book> bs=dao.findAll();
context.setAttribute("bookStore",bs);

显示图书的Servlet: <url-pattern>/listBookStore</url-pattern>

Collection<Book> bs=context.getAttribute("bookStore");
for(Book b:bs) {
	out.println("");
}

购买图书的Servlet: /add

Integer id=new Integer(request.getParameter("id"));
int quantity=request.getParameter("num");
BookDAO dao=new BookDAOImpl();
Book b=dao.find(id);
OrderLine ol=new OrderLine();
ol.setBook(b);
ol.setQuantity(quantity);

ShoppingCart cart=(ShoppingCart)session.getAttriubte("shoppingCart");
cart.add(ol);
response.sendRedirect("/listBookStore");

购物车列表Servlet: /list

ShoppingCart cart=(ShoppingCart)session.getAttriubte("shoppingCart");
Collection<OrderLine> ols=cart.list();
for(OrderLine ol:ols) {
	

}
cart.cost();


清除购物车Servlet: /remove

ShoppingCart cart=(ShoppingCart)session.getAttriubte("shoppingCart");
String id=request.getParameter("id");
cart.remove(new Integer(id));
response.sendRedirect("/list");

estore系统Servlet实现源码:

ftp://192.168.l.220/jd0801/servlet/estore.rar

课程笔记:

ftp://192.168.1.220/jd0801/servlet/
  summaryCommon.pdf

Cookie和Session总结文档:

ftp://192.168.1.220/jd0801/servlet/
cookie&session.txt

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -