Servlet笔记(持续更新)

Tomcat只实现了Servlet/JSP,它被称为轻量级容器,JBoss,WebLogic等实现了JavaEE的全部13种规范,被称为重量级容器。

可以在server.xml中将Tomcat的端口设为80,这是Http协议的默认端口。如以来,访问Tomcat中的web服务,可以不用输入端口号。

在Tomcat中部署项目的几种方式

  1. 直接将项目文件夹放到webapps目录下,项目文件夹的访问路径,就是虚拟目录

    => 简化部署:可以将项目文件夹压缩打包成war,将war放到webapps下,tomcat启动时会自动解压这个war包,并且tomcat运行时,删除这个war包,tomcat会自动删除解压出的文件夹(热部署)

  2. 配置conf/server.xml

    在Host标签中配置 <Context docBase="D:\Hello" path="/hehe" />

    • docBase:项目存放路径
    • path:项目虚拟目录(在浏览器输入url时,需要加虚拟目录前缀)
  3. conf/Catalina/localhost目录下创建xml文件,在文件中编写

    <Context docBase="D:\Hello" />

    项目的虚拟目录就是xml的文件名称(IDEA中运行tomcat时,项目就是以这种方式部署的)

Tomcat自带了两个Servlet:

  • DefaultServlet -> 处理静态资源的(如在浏览器地址栏直接访问某个html文件,或某个img图片,会通过DefaultServlet去读取服务器上的对应文件(IO操作),然后将文件的内容以流的形式写到Response中,Tomcat再从Response中提取出数据,返回给浏览器端)
  • JspServlet -> 处理对jsp文件的访问(该Servlet会将jsp文件转换成Servlet,后调用Servlet进行数据的处理,以及将数据与静态HTML语句进行组装拼接,最后将拼接后得到的静态HTML,写到Response中,Tomcat再从Response中提取,返回给浏览器端)

这2个Tomcat自带的Servlet,他们的url-pattern分别是

  • DefaultServlet -> /
  • JspServlet -> *.jsp *.jspx

所以在我们开发自己的Servlet时,

配置的url-pattern不能写成 /* ,这样会使得这两个Tomcat自带的Servlet被短路,无法处理静态资源和JSP页面。

配置的url-pattern也不能写成/,这样会使得DefaultServlet被短路,导致无法处理静态资源

静态资源(css/js/html等)不要放在WEB-INF目录下。WEB-INF目录下的文件不能被外部访问(在浏览器直接输入/WEB-INF/index.html不能访问到index.html)

<!-- web.xml 中对servlet的配置-->
<!-- load-on-startup 配置为正数,则在tomcat启动时就加载Servlet,配置为负数,则在第一次访问Servlet时进行加载,数字为正数时,表示tomcat启动时加载servlet的顺序,数字越小越先加载 -->
<servlet>
        <servlet-name>yogurt</servlet-name>
        <servlet-class>com.yogurt.servlet.YogurtServlet</servlet-class>
        <load-on-startup>-1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>yogurt</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

计算机通信的三要素:

  1. IP
  2. Port
  3. Protocol

猜你喜欢

转载自blog.csdn.net/vcj1009784814/article/details/106016764
今日推荐