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

📄 day01.txt

📁 servlet上课内容1.
💻 TXT
字号:
Servlet_day01   langna  2007-9-21   星期五
刘新福:
    servlet    5天
    jsp          5天
    struts      4天

   C/S 架构
   B/S: Web
   js: 运行在客户端的脚本;
  
   构造交互式网页:
   标签: input 
            select
            textarea
   动态网页:是由程序控制的;根据用户的不同而显示的内容不同;
   servlet/jsp   --  struts:  jsp是一个简易的语法;
                                       将jsp转换成servlet 发送过去; 
                                       struts是servlet的开源框架;
                            
   jdbc  --  hibernate:  pojo/javabean/value object;
                                 hibernate是jdbc的开源框架;
                               
   学习: 多动手, 才能掌握住;
   
一, 课程概要:
 1 ,   基础知识;   1
 2 ,  form表单的解析; 2
 3 ,  servlet的生命周期; 1,2
 4 ,  访问资源;和jdbc和hibernate结合起来; 3
 5 ,  servlet的维护持久化状态;cookie和session技术; 3, 4
 6 ,  filter:过滤器    5
 7 ,  listener:监听器 5

二, servlet 基础知识:
1, CGI: 公共网关接口程序; 基于http协议的, 运行在服务器端,web服务器的发起者是客户端;
            CGI访问数据库;生成动态页面;
    HTTP: serversocket/socket: serversocket(port)先启动,监听客户端的请求;
                                    客户端 socket发送请求;访问CGI程序(基于进程的);
                                    服务器给一个响应;
    http是一次性连接的;非持续性的连接;
    进程之间耗资源,并且进程之间通信没有线程间通信方便;
    CGI是基于进程的,允许客户端执行服务器端的一个程序;
    content-type:text/html  : 头部信息,传递的信号;header;
    url:统一资源定位;  (协议)http://ip:port(80)/resource_path;
    
    servlet 是module ; 运行在服务器中,增强了服务器的功能;
                               访问数据库;写一个程序并部署到服务器端;
    
    webserver: 买一个, 或 用开源的;
    
2, 如何安装tomcat:
    linux下:
    将tomcat考到自己的主目录(/home/xjh0704)下;解压缩就是安装好了; (chmod 777 tomcat -R)
    目录不要放的太深; 必须保证自己的操作系统中有jdk; tomcat只是一个webserver;没有带jvm;
    在.bash_profile下: 
    
    JAVA_HOME=jdk的安装路径;
    CATALINA_HOME=tomcat的安装路径;
    path=$JAVA_HOME/bin:$CATALINA_HOME/bin
    export  JAVA_HOME  CATALINA_HOME
    
    window下:
    环境变量:
    新建一个CATALINA_HOME=d:\tomcat的安装路径不包括bin目录
    在path中加上 %CATALINA_HOME%\bin
    
    检验变量是否定义对了:
    linux:(终端中)
    echo $CATALINA_HOME
    echo $JAVA_HOME
    windows:(cmd中)
    set catalina_home
    set java_home
    
    测试tomcat是否安装成功:
    进入到tomcat安装目录下: 启动: bin /startup.sh  或 catalina.sh run  /关闭:shutdown.sh
    windows下是: startup.bat / 关闭:shutdown.bat
    
    打开浏览器:输入 http://127.0.0.1:8080 或(localhost)
    显示tomcat的主页就表示已经启动成功;
    
3, webapps/root  默认访问的就是这个root应用;
    访问远程的应用: http://192.168.106.102:8080/admmes.html    
    ip地址可以和域名绑定起来;
    
    在webapps中建立一个文件夹 , 就是一个应用; serv-app/WEB-INF(必须有这个目录)
    WEB-INF/web.xml(必须有这个文件,合法的xml文件)
    ISO-8859-1;
    xsd : 跟dtd作用一样;    
    服务器要先关闭再启动,应用才会装载进来;
    应用放在哪里: 应用 (serv-app 或子目录下)下,但是放到WEB-INF下,不能访问;这是受服务器保护的文件;
    
    http://127.0.0.1:8080/serv-app/admmes.html       
    
    在应用中再建其他文件夹:js/img/style/等;
    tomcat 根据环境变量找到安装目录,找到web-apps, 
    
    servlet 类 放到WEB-INF/classes 目录下;
   
    看servlet文档:
    tomcat-docs/servletapi/javax.servlet/javax.servlet.http 
    随便买一本servlet书看看,越薄越好;  
 三, 第一个应用:
    1, javascript 是在客户端执行的,显示的时间是客户端的; 
    2,System.out.println("<html>");发字符串过去;命令行输出, js不认, 只认方法;
        类要是有包的话必须将类放在目录结构下; 或者, javac  DynamicHtml.java -d .  ;放到当前目录下;
        然后在当前目录下  java  包名.DynamicHtml(类名)
    3,servlet 的api: servlet必须运行在webserver中,可以接受来自客户端的请求, 基于http协议;
       apache-tomcat-5.5.20\webapps\tomcat-docs\servletapi\index.html
       一个servlet必须有一个缺省构造器, 系统会调用,init(),service(),destroy();
     
      在classpath上加上servlet-api.jar;
      或在eclipse上配置library;
      
      实现Servlet 接口,覆盖service方法;
      {
        response.setContentType("text/html");
        PrintWriter  out=response.getWriter();
        out.println("<html>");
	out.println(new java.util.Date());
	out.println("<html>");
      }
     
    写web.xml
      
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
        <servlet>
            <servlet-name>servlet的名字</servlet-name>          <time>
            <servlet-class>servlet类全名</servlet-class>           <com.tarena.serv.TimeServlet>
        </servlet>
        <servlet-mapping>
            <servlet-name>servlet的名字(要和servlet标签中的相同)</servlet-name>    <time>
            <url-pattern>指定servlet相对于应用目录的虚拟路径名</url-pattern>             </basic/time>
        </servlet-mapping>
      </web-app>
    
Servlet的调用过程:

1,用户通过浏览器向web服务器发送请求
   http://serverip:port/apppath
2,服务器为用户定位资源
   静态资源:/a.html  /a/b.html (这里的路径是针对web应用文件夹目录)读文件并把内容发送到客户端
   动态资源:解析web.xml定位Servlet类的名字
             装载类(WEB-INF/classes|WEB-INF/lib/*.jar)
             创建该对象的实例
             Servlet ser=(Servlet)(Class.forName("servle的类名")).newInstance();
	     //我们写的Servlet一定要实现Servlet接口或者继承实现了Servlet接口的类
	     
    先构造器,init(),service(), 
    内存中同一时间只有一个servlet实例,只有一个被销毁后再创建新的实例;
    servlet不是一个线程,而是工作在多线程中;
    销毁时调用  destroy();
    
    getServletConfig()/getServletInfo() 服务器不会调这两个方法;
             
 3, HttpServlet继承了GenericServlet 
    继承HttpServlet时,只需要实现: 
        doGet()  服务于get请求;
        doPost() 服务于post请求;
        如果两种请求都需要服务的话,都实现就行;
        
        也可以覆盖service方法;
        再HttpServlet: doGet() , doPost() , service(HttpServletRequest,...) , service(ServletRequest,...)(这个是继承的) 
        
        创建一个HttpServlet实例时, 调过init()方法后, 会调用哪个方法? 
        service(ServletRequest,..)调用service(HttpServletRequest,...) ; 再 根据请求类型调用doGet或doPost
        如果覆盖了service方法,就会服务于所有类型的请求;自己调用doGet或doPost; 
        
 4, webserver: apache web server ; sunone web server
     支持java的都支持servlet ; 
     <url-pattern>/time(必须以/开头)</url-pattern>
     
     今天对servlet有一个大概的理解就行,在以后的学习中逐渐理解和加深印象;
     
     练习作业:
     <h1>1</h1>    
     <h2>2</h2>   
     <h3>3</h3>
     <h4>4</h4>
     <h5>5</h5>
     <h6>6</h6>
     
     继承HttpServlet 就行;
     public class  HeadingServlet extends  HttpServlet{
            public void  doGet(HttpServletRequest, HttpServletResponse) throws IOException,ServletException{
                //子类不能比父类多抛异常,只能少抛;
                response.setContentType("text/html");
                PrinterWriter  out = response.getWriter();
                out.println("<html>");
                out.println("<head><title>heading</title></head>");
                out.println("<body>");
                for(int i=1;i<=6;i++){
                   // out.println("<h"+i+" align=\"center\"> " +i +"<h" + i +">");
                  
                    out.print("<h");
                    out.print(i);// h 和 i 之间不能换行;否则出不了效果
                    out.println(" align=\"center\"> ");
                    out.println(i);
                    out.print("<h");
                    out.print(i);
                    out.println(">");                    
                }
                
          }
     }

⌨️ 快捷键说明

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