Servlet知识点<二>

来源:互联网 发布:电脑能写小说的软件 编辑:程序博客网 时间:2024/06/05 09:10
手动创建并且部署一个Servlet:
1.写代码        extends HttpServlet
        public void service(HttpServletRequest request,
                HttpServletResponse response)
                throws ServletException, IOException{
            request.setCharacterEncoding("GBK");
            //1.设置响应类型
            response.setContentType("text/html;charset=GBK");
            //2.获取输出流
            PrintWriter out = response.getWriter();
            //3.使用输出流
            out.println();
            out.flush();
        }
2.编译
    tomcat安装目录/lib/servlet-api.jar
3.部署
    1)创建web应用目录结构
        webapps/myweb/
            |-WEB-INF(必需)
                |-classes
                |-web.xml
            |-form.html
    2)编译后的pag.DateServlet.class copy myweb/WEB-INF/classes
    3)编写web.xml    (DateServlet)
        <servlet>
            <servlet-name>date</servlet-name>
            <servlet-class>pag.DateServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <serlvet-name>date</servlet-name>
            <url-pattern>/mydate</url-pattern>
        </servlet-mapping>
4.运行
    http://127.0.0.1:8888/myweb/mydate
    <a href="/myweb/mydate">....</a>
    <form action="/myweb/mydate">....</form>
    获取表单元素中输入的内容:
        String str = request.getParameter("文本框的名字");

--------------------------------------
一、使用MyEclipse简化Servlet 开发
    1.右键创建web project
    2.Project Name:项目名称
      Source folder:存在java源码
      Web root folder:本地开发路径
      Context root URL:服务器上的web应用名(http://127.0.0.1:8888/项目名/)
    3.创建servlet(选择自动生成web.xml)
    4.部署(配置tomcat,把自己安装tomcat和MyEclipse整合到一起)
        配置tomcat的步骤:window-preferences-展开MyEclipse-展开servers-展开tomcat-选择tomcat6-选中Enable并且选择tomcat的安装路径
        ****注意:部署新项目后,需要重启Tomcat****
    5.运行
        http://127.0.0.1:8888/servlet2/hello
        http://127.0.0.1:8888/testservlet/servlet/FirstServlet

    URL的组成:
        协议://主机名ip:端口号/资源
        协议://主机名ip:端口号/web应用/url-pattern
        协议://主机名ip:端口号/web应用/first.html
二、Servlet的生命周期
    1)client --> server 请求发出后的一系列执行过程:
        1.写URL,回车
        2.tomcat接收请求,解析URL,得到 web应用名(web.xml)
        3.继续解析URL,得到 url-pattern
        4.在web.xml 匹配 url-pattern, 得到 servlet-name
        5.根据 servlet-name 匹配到 servlet-class
        6.tomcat 判断 client 是第一次请求
            是- 使用JAVA反射机制创建servlet对象(构造方法),初始化(init),处理第1次请求(service)并且给client响应
            否- 处理本次请求(service)并且给client响应
        7.tomcat 等待状态,如果有client请求,从第2步循环
        8.tomcat 停止或重启时,销毁 servlet(destroy方法被调用.回复servlet对象资源)
    2)tomcat 中 servlet生命周期,分为4个阶段:
                        被调用的时间        被调的方法            被调次数
                实例化    client第一次请求    构造方法            1次
                初始化    第1次请求,实例化后    init            1
                服务        有请求到            service            N次
                                            doGet/doPost
                销毁        server停,重启        destroy            1
    3)读取web.xml
        1.在tomcat启动时,会依次加载webapps下所有web应用的web.xml,
            同时web.xml的内容读到 ServletContext 对象(ServletContext是web.xml文件在内存中的表现)
            一个web应用对应一个ServletContext.
        2.每读到一个<servlet></servlet>,tomcat会把这个标签中的内容存到 ServletConfig对象中
    应用:
        ServletContext: 获取<context-param>中定义的全局初始化参数
            web.xml中的配置(在<serlvet>标签的外面定义):
                    <context-param>
                        <param-name>encode</param-name>
                        <param-value>GBK</param-value>
                    </context-param>
            获取值:
                String str = this.getServletContext().getInitParameter("参数名");
                
                
        ServletConfig: 获取<init-param>中定义的初始化参数
            web.xml中的配置(在<serlvet>标签的里面定义):
                    <servlet>
                        <servlet-name>CountServlet</servlet-name>
                        <servlet-class>com.zpark.servlet.CountServlet</servlet-class>
                        <init-param>
                            <param-name>count</param-name>
                            <param-value>1000</param-value>
                        </init-param>
                      </servlet>
            获取值:
                String str = this.getServletConfig().getInitParameter("参数名");
    4)servlet的多线程访问
        注意:servlet编程时,因为tomcat运行过程中,只创建一个servlet对象,需要同时为多个client服务,就需要考虑线程安全问题
            1.对敏感代码加线程锁
            2.尽量不定义成员变量

三、Servlet的通讯[掌握]
    Servlet:JAVA编写的在服务器上运行的小程序/类.接收client请求,处理,响应.
    1.include:包含
        应用场景:在复杂动态网页中,有公共部分可提取,可以把公共部分分别定义成servlet,使用include合并到一起.
        使用:        //获取请求分发对象
                RequestDispatcher rd = request.getRequestDispatcher("/url-pattern");
                //include
                rd.include(request, response);
        特点:        1)地址栏不变
                2)服务器端的转发(在服务端运行)
                3)看到的是所有servlet的结果之和
                4)共享同一个request
    2.forward:转发
        应用场景: 一个Servlt从数据库中取出数据,转到另外一个servlet进行显示
        使用:        //获取请求分发对象
                RequestDispatcher rd = request.getRequestDispatcher("/url-pattern");
                //forward
                rd.forward(request, response);
        特点:        1)地址栏不变
                2)服务器端的转发(在服务端运行)
                3)永久转向(看到的是最后一个servlet的处理结果)
                4)共享同一个request






0 0
原创粉丝点击