Servlet学习

Servlet简介

       Servlet是sun公司提供的一门用于开发动态web资源的技术。
  Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
  1、编写一个Java类,实现servlet接口。
  2、把开发好的Java类部署到web服务器中。
  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

servlet运行流程

在IDEA中开发Servlet

初次使用时需要学会新建web工程和tomcat服务器的配置,具体可以参考这篇文章:https://mp.csdn.net/postedit/88940575

配置好后如下图所示:

其中: src用来存放源码,编译之后字节码文件存放在WEB-INF下面的classes中,lib为依赖的jar包

web是web应用的根目录,该目录下的所有子文件和子文件目录在部署时,会原封不动地发布到web应用目录下

编写Servlet

直接在包中新建servlet文件即可。

src:

package com.company;

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

public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Hello Servlet");
    }
}

使用web.xml进行url映射配置如下所示

<?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>MyServlet</servlet-name>
        <!--servlet全限定类名,也就是servlet位置-->
        <servlet-class>com.company.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <!--必须和上面servlet名字一样-->
        <servlet-name>MyServlet</servlet-name>
        <!--浏览器通过该url找到servlet /一定要加-->
        <url-pattern>/My</url-pattern>
    </servlet-mapping>
</web-app>

既然写到这里,就补充下Servlet访问URL的映射配置

Servlet访问URL映射配置

  由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。
  <servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。 
一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。(同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。)


启动服务器后在浏览器中访问http://localhost:8888/JavaWeb/My  (其中8888为我自己改的端口号,默认为8080,My为通过xml映射的外界访问url)可以发现后台打印输出Hello Servlet。

如果感觉配置web.xml麻烦,也可以直接使用注解进行配置

@WebServlet(name = "HttpServlet",urlPatterns = {"/My"})

在IDEA中启动tomcat服务器后可能出现的问题

1.日志中文乱码问题

解决方式:

  修改Tomcat安装目录下的conf文件中的logging.porperty文件中的内容:

第51行,把UTF-8改为GBK,重启服务即可。

2.启动日志部分为红色信息

 

 原因是:tomcat默认的日志输出按jdk中的System.err来输出,而System.err在eclipse中,以红色显示。

这个其实不影响程序运行,不用修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值