2018年10月05日 16:52:56 yigg 阅读数:38
 

1.JavaWeb开发的目录结构

https://blog.csdn.net/u012661010/article/details/73381599

2.web程序结构

  • 一个web应用程序是由一组Servlet,HTML页面,类,以及其他的资源组成的运行在web服务器上的完整的应用程序,以一种结构画的层次的目录形式存在
  • 组成web应用程序的这些文件要部署在相应的目录层次中,根目录代表整个web应用程序的“根”
  • 通常将web应用程序的目录放在webapps目录下,在webapps目录下的每一个子目录都是一个独立的web应用程序,子目录的名字就是web应用程序的名字,也即是web应用程序的“根”。用户通过web应用程序的“根”来访问应用程序的资源。

3.第一个web应用程序:开发,并部署到Tomcat服务器下运行

  1.  
    1.在eclipse新建一个Java project
  2.  
    2.在Java项目下创建web开发的目录结构
  3.  
            -webContent
  4.  
                -WEB-INF
  5.  
                    -classes(编译后的classes文件必须放在该目录下)
  6.  
                    -lib
  7.  
                    -web.xml(从D:\tomcat-7.0.70\webapps\docs\WEB-INF中复制过来的)
  8.  
                html页面
  9.  
                jsp页面
  10.  
                图片
  11.  
    3.在src下新建一个person类
  12.  
            package com.atguigu.test;
  13.  
            public class Person{
  14.  
                public String getPersonInfo(){
  15.  
                    return "person info...";
  16.  
                }
  17.  
    4.手工的将person类对应的class文件(含包)复制到classes的目录下
  18.  
    5.在WebContent目录下新建一个jsp文件:
  19.  
            <%@page import="com.atguigu.test.Person"%>
  20.  
            <%@page language="java" contentType="test/html;><pageEncoding="ISO-8859-1"%>
  21.  
            
  22.  
            <%
  23.  
                Person person=new Person();
  24.  
                System.out.print(person.getPersonInfo());
  25.  
            %>
  26.  
    6.把webcontent目录复制到Tomcat的webapps目录下,并改名为:helloworld
  27.  
    7.在浏览器的地址栏中输入:http://localhost:8080/helloworld/hello.jsp即可看到命令行的打印信息

4.使用javaee版的eclipse开发动态的web工程(Javaweb项目)

  1. 把开发选项切换到Javaee
  2. 可以在window -> show view 中找到package Explorer,并把其拖到开发取得左边
  3. 在servers 面板中新建Tomcat服务器。一定要关联到Tomcat安装的目录。
  4. 新建一个Dynamic Web Project,期中Trager Runtime需选择Tomcat6.0
  5. 开发Java web应用
  6. 可以通过run on server来运行web项目

5.Servlet简介
Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用servlet的方法,Servlet和客户的通信采用“请求/相应”的模式。
Servlet可完成如下功能:

  • 创建并返回基于客户请求的动态HTML页面。
  • 创建可嵌入到现有HTML页面中的部分HTML(HTML片段)。
  • 与其他服务器资源(如数据库或基于Java应用程序)进行通信。

6.创建第一个Servlet程序

  1.  
    第一步:创建一个Servlet接口的实现类或者继承HttpServlet的实现类
  2.  
            public class HelloServlet implements Servlet{}
  3.  
    //方式二:public class HelloServlet extends HttpServlet{}
  4.  
     
  5.  
    第二步:在web.xml文件中配置和映射这个Servlet
  6.  
            <!--配置和映射Servlet--> 
  7.  
            <servlet>
  8.  
                <!--Servlet注册的名字-->
  9.  
                 <servlet-name>helloServlet</servlet-name>
  10.  
                <--Servlet的全类名-->
  11.  
                <servlet-class>com.atguigu.HelloServlet</servlet-class>    
  12.  
            </servlet>
  13.  
         
  14.  
             <servlet-mapping>
  15.  
                <!--需要和上面的注册名一致-->
  16.  
                 <servlet-name>helloServlet</servlet-name>
  17.  
                <!--映射具体的访问路径:/ 代表当前web应用的根目录(http://localhost:8080/day_8-4/)-->
  18.  
                 <url-pattern>/hello</url-pattern>
  19.  
             </servlet-mapping>

7.Servlet容器:运行Servlet、jsp、filter等的软件环境。

8.Servler生命周期方法:以下方法都是由Servlet容器负责调用。

  1. 构造器:只被调用一次,只有第一次请求Servlet时,创建Servlet的实例,调用构造器。这说明Servlet是单实例的!
  2. init方法:只被调用一次,在创建好实例后立即被调用,用于初始化当前Servlet。
  3. service:被多次调用,每次请求都会调用service方法,实际用于响应请求的。
  4. destroy:只被调用一次,在当前Servlet所在的web应用被卸载前调用,用于释放当前Servlet所占用的资源。
  5. 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

9.servlet容器响应客户请求的过程

  1. Servlet引擎检查是否已经装在并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步。
  2. 装载并创建该Servlet的一个实例对象:调用该Servlet的构造器。
  3. 调用Servlet实例对象的init()方法。
  4. 创建一个用于封装请求的ServletRequest对象和一个代表service()方法并将请求和响应作为参数转递进去。
  5. web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

10.load-on-startup参数:配置在servlet节点中
load-on-startup:可以指定Servlet被创建的时机。若为负数,则在第一次请求时被创建,若为0或正数,则在当前web应用被Servlet容器加载时创建实例,且数字越小越早被创建。

  1.  
    <!--配置和映射Servlet--> 
  2.  
    <servlet>
  3.  
    <!--Servlet注册的名字-->
  4.  
    <servlet-name>helloServlet</servlet-name>
  5.  
    <--Servlet的全类名-->
  6.  
    <servlet-class>com.atguigu.HelloServlet</servlet-class>    
  7.  
    <!--可以指定Servlet被创建的时机-->
  8.  
    <load-on-startup>2</load-on-startup>
  9.  
    </servlet>>

11.Servlet的注册与运行

  • Servlet程序必须通过servlet容器来启动运行,并且储存目录特殊要求,通需要存储在<WEB应用程序目录>\WEB-INF\classes\目录中。
  • Servlet程序必须在web应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问。
  • 一个<servlet>元素用于注册一个Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。
  • 一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。

12.servlet映射的细节

  • 同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servler-name>子元素的设置值可以是同一个Servlet的注册名。
  • 在servlet映射到URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名(如html)”,另一种格式是以正斜杠(/)开头并以“/*”结尾。
  • 注意:既带/又带扩展名的不合法

Servlet-知识点的更多相关文章

  1. Servlet知识点大纲

    这是我整理的Servlet知识点大纲,可按照它的顺序来学习-..具体的内容在我的博客中都可以找到!

  2. Servlet知识点

    如果请求采用Get方式,则重写doGet()方法,如果请求采用Post方式,则重写doPost()方法. 下面是重写doGet()方法的servlet例子. servlet继承如下类: 整体结构: 在 ...

  3. Servlet知识点总结

    一, ServletAPI中有4个Java包: 1.javax.servlet:其中包含定义Servlet和Servlet容器之间契约的类和接口 2.javax.servlet.http:其中包含定义 ...

  4. Servlet 知识点总结(来自那些年的笔记)

    2018年04月15日 20:16:01 淮左白衣 阅读数:350   版权声明:转载请给出原文链接 https://blog.csdn.net/youngyouth/article/details/ ...

  5. Servlet知识点回顾

    一.Servlet生命周期 服务器调用一个Servlet的8个步骤: 1.在服务器启动时,当Servlet被配置好或者被客户首次请求时,由服务器加载servlet,这一步相当于下列代码: Class ...

  6. servlet 知识点 WebServlet("/")与WebServlet("/*")的区别

    (1)一个servlet的请求路径,如果配置成"/",那么它可以拦截除了.jsp之外的所有的请求. (2)一个servlet的请求路径,如果配置成"/*",那么 ...

  7. Servlet 知识点 中文乱码的本质与解决

    本质原因:在servlet中出现中文乱码的原因编码和解码采用的不是一个编码表或者两个编码表不是兼容 例如UTF-8编码.GBK编码都可以读取中文,那么如果采用UTF-8编码保存文件,但是采用GBK编码 ...

  8. servlet(3) - servlet知识点 - 小易Java笔记

    1.servlet的生命周期 (1)容器最终要调用service方法为客户进行服务.(此处“容器”指java运行的环境,tomcat是jsp/servlet的容器) ==> 在内存中一个Serv ...

  9. Servlet知识点小结

    Servlet: server applet * 概念:运行在服务器端的小程序 * Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则. * 将来我们自定义一个类,实 ...

  10. (三)Servlet 知识点总结(来自那些年的笔记)

    (史上最全知识汇总)转载请贴上原文链接! 作者:淮左白衣 写于 2018年4月15日20:14:55 如果,碰巧你打开了本篇博客,相信我,你想要的servlet知识,这里应该都能找到!! 目录 (史上 ...

随机推荐

  1. JAVA条件语句:if;switch case

    if(布尔表达式) { //如果布尔表达式为true将执行的语句 }   如果布尔表达式为true 执行里面的代码 if...else语句: if(布尔表达式){ //如果布尔表达式的值为true } ...

  2. vue 创建项目

    先安装node.js环境 #先安装npm 阿里镜像 (之后cnpm 下载组件快速) npm install -g cnpm --registry=https://registry.npm.taobao ...

  3. History of program(1950-2020)

    1957年 约翰·巴科斯(John Backus)创建了是全世界第一套高阶语言:FORTRAN. John Backus 1959年 葛丽丝·霍普(Grace Hopper)创造了现代第一个编译器A- ...

  4. 18-10-08 对Excel 表格添加颜色

    #-*- coding:utf-8 -*-#首先注意一个问题 pycharm 中路径符号和Linux 系统一样向左import xlwt def add_color(): #实例化对象 增加sheet ...

  5. Linux下查看CPU型号,内存大小,硬盘空间的命令

    1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重 ...

  6. cmake使用方法详解

    cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性 ...

  7. leetcode 3.Longest Substring Without Repeating Charcters

    在一个字符串中寻找出最长的无重复字符的子串的,在不断的后续检索中需要去掉前面一个重复的字符,那么就是需要记录之前所出现过的字符的,在这里需要利用hashmap来记录字符和其出现的位置之间的映射关系的, ...

  8. Python全栈之路---数据类型—字符串

    字符串:有序的字符的集合,用于存储和表示基本的文本信息,一对单.双.或三引号中间包含的内容称之为字符串 1.特性:有序,不可变(开辟新地址存储字符串,python解释器会定期清空不用了的已存储的) & ...

  9. js 数字随机滚动(数字递增)

    HTML: <div class="textMon"> <img src="./img/20180830160315.png" alt=&qu ...

  10. c——二分查找

    思路: 1.输入:数组长度n,待查找的有序数组a[],要找的元素key 2.输出:待查找元素在数组中的位置,若不存在返回-1 3.实现:三个指针,left.mid.right #include< ...