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中,以红色显示。
这个其实不影响程序运行,不用修改