zoukankan      html  css  js  c++  java
  • J2EE(五)——servlet初识

    一、Tomcat的三个功能:

    1.jsp容器

    2.Servlet容器

    3.Web服务器

    二、手动开发第一个servlet

    开发servlet三种方式:

    1.实现servlet接口

    2.继承GenericServlet

    3.继承HttpServlet

    1.tomcatweb apps下新建一个文件夹(myWeb),这个项目里面增加含web.xmlWEB-INF并在WEB-INF下增加classes以及lib.classes下编写MyFirstServlet.java:

    package myz;

    import java.io.IOException;

    import java.util.Date;

    import javax.servlet.Servlet;

    import javax.servlet.ServletConfig;

    import javax.servlet.ServletException;

    import javax.servlet.ServletRequest;

    import javax.servlet.ServletResponse;

    public class MyFirstServlet implements Servlet{

    //销毁servlet,只会被调用一次

    public void destroy() {

    // TODO Auto-generated method stub

    }

    public ServletConfig getServletConfig() {

    // TODO Auto-generated method stub

    return null;

    }

    public String getServletInfo() {

    // TODO Auto-generated method stub

    return null;

    }

    //初始化Servlet,Servlet加载到内存中去,该函数只会被调用一次

    public void init(ServletConfig arg0) throws ServletException {

    // TODO Auto-generated method stub

    }

    public void service(ServletRequest arg0, ServletResponse arg1)

    throws ServletException, IOException {

    // TODO Auto-generated method stub

    System.out.println("service方法正在执行...");

    System.out.println(new Date());

    }

    }

    用提示命令符定位到该目录下后,使用javac -d . MyFirstServlet.java命令编译(-d表示 编译的东西需要打包package myz;,  . 表示在当前目录下)

    Ps:如果报错servlet等包找不到,则需要解压TomCatapache-tomcat-8.5.14lib下的servlet-api.jar,并配置需要用户变量CLASSPATHtomcatlib目录(或者为lib目录下的servlet-api.jar),

    2.部署web应用到刚才的web.xml:

    <servlet>

         <servlet-name>MyFirstServlet</servlet-name>

        <servlet-class>myz.MyFirstServlet</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>MyFirstServlet</servlet-name>

        <url-pattern>/ABC</url-pattern>

    </servlet-mapping>

    servlet-name配置的是以后浏览器访问时的资源名称,该名字可以自己定义,但一般与servlet名字相同

    servlet-class必须指明该servlet放的位置(包名.servlet)

    Mapping做的是servlet的映射

    Mapping下的servlet-name必须与上面servlet-name的一样

    url-pattern上配置的名字是ABC使得我以后访问地址为

    http://localhost:8080/myWeb/ABC

    访问顺序为,先根据url-pattern找到mapping下的servlet-name,然后根据得到的servlet-name得到servlet-class加载对应的servlet.

    3.此时访问http://localhost:8080/myWeb/ABC,控制台会输出service方法正在执行...和当前时间

     

    4.如果想在网页输出同样的信息,service方法中,添加

    arg1.setCharacterEncoding("utf-8");

    arg1.getWriter().write("service方法正在执行..."+new Date());

    即可(其中arg1ServletResponse传参对象).

    因为,write的内容含有中文,所以需要在service方法中和浏览器中设置编码格式为utf-8.

  • 相关阅读:
    Scala 插入排序
    win10下安装使用mysql-8.0.18
    Autofac注入多数据库(DbContext)
    缓存一致性问题以及方案(一) Redis
    Java编程中,一些好的习惯从一开始就值得坚持
    IDEA项目无法引用本地Class类,引用路径正确但报错标红
    git怎么撤销已经push到远端的commit?
    git的命令大全及如何修改git账号和提交的邮箱和用户名
    renren-fast-vue无法运行相关问题解决办法n ./src/assets/scss/index.scss Module build failed: Error: ENOENT: no su
    VsCode系列(一):下载安装及汉化
  • 原文地址:https://www.cnblogs.com/myz666/p/6822778.html
Copyright © 2011-2022 走看看