servlet

目录

1、C/S、B/S与RIA

C/S和B/S区别

2、Web站点、Web应用、HTTP服务器、Web应用服务器

3、开发Web应用的核心技术

4、Tomcat介绍及安装

5、Tomcat的目录结构​​​​​​​

6、解决Tomcat控制台的乱码

7、常见其他Servlet容器简介

8、Servlet的概念及功能

在生成的servlet中添加

9、web.xml中配置Servlet

10、运行Web应用

11、Servlet的生命周期

servlet家谱

servlet生命周期​​​​​​​

 ​​​​​​​各个方法的执行顺序和次数

​​​​​​​servlet的特性

ServletAPI查询地址

Web应用常见的错误

404找不到请求的资源

500代表服务器内部错误

 ​​​​​​​页面无法显示:未启动Tomcat

​​​​​​​设置响应编码:UTF-8

向页面输出


1、C/S、B/S与RIA

C/S

Client/Server:客户端/服务器的简称,又称为胖客户端,需要在电脑上安装特定的软件.例如:QQ

  • B/S
  • Browser/Server:浏览器/服务器的简称,又称为瘦客户端,不需要在电脑上安装特定的软件,只需在电脑上安装一个浏览器即可. 例如:在浏览器访问一个百度网页.​​​​​​​
  • C/S和B/S区别

  • C/S需要安装客户端软件,但是操作往往更为便捷,用户体验好,安全性好;
  • B/S不需要安装客户端软件,但是用户体验往往不如C/S好,安全性也较C/S要低

​​​​​​​RIA

1、​​​​​​​​​​​​​​定义:Rich Internet Applications:富客户端网络应用

​​​​​​​2、目标:

  • 基于B/S架构
  • 在浏览器实现与胖客户端(C/S)类似的用户体验,比如:局部刷新,拖拽功能.
  • 2、Web站点、Web应用、HTTP服务器、Web应用服务器

    Web站点
  • Web Site,也称为Web 网站,例如:某公司用来宣传的网站就是Web站点,用户浏览公司的信息,该站点不提供服务.属于静态站点.
  • Web应用
  • Web Application,就是通过浏览器访问的应用程序,为用户提供相关的服务,属于动态网站.例如:京东,淘宝,天猫
  • HTTP服务器
  • 1、定义:Web服务器,提供网上信息浏览服务、
  • 2、例子:apache nginx IIS
  • 3、特点:使用浏览器访问web站点或者web应用,必须通过HTTP服务器.
  • Web应用服务器
  • 1、定义:能够运行服务器上的应用程序,并将结果返回给客户端浏览器的软件.
  • 2、例子:Tomcat就是Web应用服务器
  • 3、特点:兼具HTTP服务器的部分功能.
  • 3、开发Web应用的核心技术

    1、CGI:Common Gateway Interface :通用网关接口,web应用服务器提供信息服务的标准接口,目前使用较少.
  • 2、.net:微软公司的企业应用框架,如:Asp.net,Ado.net
  • 中小型企业使用.不能跨平台.
  • 3、php:php是一个相对易学的web开发技术,在互联网小型应用中使用广泛.
  • 4、JavaEE:是Oracle公司的企业应用框架,在大型的企业应用广泛.例如:Servlet,JSP是Web开发组件.
  • 4、Tomcat介绍及安装

    什么是Tomcat
  • Tomcat是Web应用服务器,又称为Servlet Container(Servlet 容器)
  • Tomcat的特点
  • 开源
  • 免费
  • 中小型应用和并发访问用户不是很多的情况下广泛使用
  • 是开发调试Servlet/Jsp程序的首选

​​​​​​​Tomcat的官网

  • Apache Tomcat® - Welcome!
  • 使用9.0版本
  • 5、Tomcat的目录结构​​​​​​​

  • 1、bin:Tomcat的启动(startup.bat),停止(shutdown.bat)的批处理脚本和shell脚本
  • 2、config:Tomcat的相关配置文件
  • 3、lib:Tomcat服务器的依赖库目录,包括Tomcat服务器运行环境的依赖的jar包
  • 4、logs:Tomcat默认的日志存放目录.
  • 5、temp:Tomcat 运行过程中产生的临时文件
  • 6、webapps:Tomcat默认的web应用部署目录
  • 7、work:jsp代码生成和编译后产生的class目录
  • 6、解决Tomcat控制台的乱码

    1.进入conf文件夹

    2.打开logging.properties文件

    3.修改java.util.logging.ConsoleHandler.encoding = GBK

  • 7、常见其他Servlet容器简介

  • JBoss
  • Resin
  • GlassFish 4
  • 补充:
  • Weblogic  bea oracle
  • Websphere IBM
  • 8、Servlet的概念及功能

    什么是Servlet
  • Servlet是JavaEE规范中的Web开发组件,运行在服务器端的java程序.​​​​​​​
  • Servlet特点
  1. 运行在服务器端
  2. 需要Servlet容器的支持(如:Tomcat)
  3. Servlet是一个Java类,遵守一定的开发规范,比如继承HttpServlet
  4. 通过浏览器访问Servlet,Servlet返回给浏览器动态页面

​​​​​​​

  • 本课程所学的主要内容:Servlet和JSP,JSP的本质是Servlet.
  • 在生成的servlet中添加

  • /**
         * 浏览器地址栏输入http://localhost:8080/hello会调用servlet的doGet()方法
         * @param request  请求对象.取得请求的数据(浏览器传过来的数据)
         * @param response  响应对象.返回浏览器数据放在该对象中
         * @throws ServletException
         * @throws IOException
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //生成动态的内容返回到浏览器显示
    //        取得响应的输出流对象
            PrintWriter out = response.getWriter();
    //      向out输出流对象写内容浏览器就能接收到,并在页面进行显示
            out.print("Hello Servlet!");
        }

    9、web.xml中配置Servlet

  • <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <!--配置Servlet,可以手动配置-->
        <servlet>
            <!--Servlet的名称-->
            <servlet-name>HelloServlet</servlet-name>
            <!--servlet类的全路径名-->
            <servlet-class>com.tjetc.servlet.HelloServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <!--Servlet的名称-->
            <servlet-name>HelloServlet</servlet-name>
            <!--外部访问servlet的url,初学者写/开头-->
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>
    </web-app>

  • 说明:
  • <servlet>元素
  • 包含<servlet-name>及<servlet-class>,其中<servlet-name>可以使用任意标识符,<servlet-class>是Servlet类的完整类名;
  • <servlet-mapping>元素
  • 包含<servlet-name>及<url-pattern>,其中<servlet-name>与已经定义的name对应,<url-pattern>是逻辑url,非常非常重要,访问Servlet就使用这个url-pattern
  • 10、运行Web应用

  • Tomcat如何找到servlet并实例化的?

    第一步:在浏览器地址栏输入访问路径,向服务器发送请求;

    第二步:服务器根据访问路径去web.xml文件中和<url-pattern>标签中的虚拟路径进行匹配,匹配成功后,找到已注册的servlet名称;

    第三步:根据映射找到对应的servlet名,注意:<servlet-mapping>下的<servlet-name>标签和<servlet>下的<servlet-name>标签中的值必须相同;

    第四步:根据servlet名找到全限定类名,即我们自己写的类。

    服务器找到全限定类名后,通过反射调用Class对象的newInstance()方法,实例化一个如:HelloServlet对象,注意一定要为HelloServlet提供一个无参的构造方法。同时也创建了servletConfig,里面存放了一些初始化信息(注意:服务器只会创建一次HelloServlet对象,所以servletConfig也只有一个)。

  • 11、Servlet的生命周期

    servlet家谱

  • 二类二接口
  • 3加2方法
  • servlet生命周期​​​​​​​

package com.tjetc;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    public HelloServlet() {
        System.out.println("构造方法HelloServlet()...");
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("初始化init(config)有参");
        super.init(config);
    }

    @Override
    public void init() throws ServletException {
        System.out.println("初始化init()无参");
        super.init();
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service()...");
        super.service(req, resp);
    }

    //接收get请求
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet()...");
//        int i = 1 / 0;//java.lang.ArithmeticException: / by zero
//        doPost(req, resp);

        //设置编码
        resp.setContentType("text/html;charset=utf-8");

        StringBuilder sb=new StringBuilder();
        sb.append("<table border='1', cellspacing='0'>");
        sb.append("<tr>");
        sb.append("<td>序号</td><td>姓名</td><td>年龄</td>");
        sb.append("<tr>");
        sb.append("</tr>");
        sb.append("<td>1</td><td>张三</td><td>19</td>");
        sb.append("<tr>");
        sb.append("</tr>");
        sb.append("<td>2</td><td>李四</td><td>20</td>");
        sb.append("</tr>");
        sb.append("</table>");
        //输出字符串
        resp.getWriter().write(sb.toString());
    }

    //接收post请求
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPost()...");
        //获取输入流
        PrintWriter writer = resp.getWriter();
        //把字符串输出到页面中
        writer.write("<h1>Hello Servlet i am coming</h1>");
    }

    @Override
    public void destroy() {
        System.out.println("destroy()...");
        super.destroy();
    }
}

 

 ​​​​​​​各个方法的执行顺序和次数

1、Tomcat启动,各个方法没有执行

2、第一次访问的时候执行顺序:

  • HelloServlet的构造方法
  • HelloServlet.init初始化方法
  • HelloServlet.service()方法
  • method = GET

3、第二次以及以后访问的时候执行顺序

  • HelloServlet.service()方法
  • method = GET

4、执行次数

  • 构造方法,初始化方法执行一次
  • service()方法 doXXX()执行多次
  • 销毁方法destroy()方法执行一次

​​​​​​​servlet的特性

  • 多线程单实例
  • 单例模式:在整个应用运行期间,只有一个实例存在,这就叫做单例模式.省内存.
  • 一个url对应一个实例
  • ​​​​​​​​​​​​​​

ServletAPI查询地址

  • http://tomcat.apache.org/tomcat-9.0-doc/servletapi/index.html​​​​​​​
  • Web应用常见的错误

404找不到请求的资源

​​​​​​​

500代表服务器内部错误

  • protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  • // TODO Auto-generated method stub
  • System.out.println("doGet()");
  • int i=1/0;
  • response.getWriter().append("Served at: Hello Servlet!").append(request.getContextPath());
  • }

 ​​​​​​​页面无法显示:未启动Tomcat

​​​​​​​设置响应编码:UTF-8

  • response.setContentType(“text/html;charset=UTF-8”);
  • 向页面输出

  • out=response.getWriter();
  • out.println(内容);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值