JavaWebServlet
Posted 王思琪^
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWebServlet相关的知识,希望对你有一定的参考价值。
Servlet简介
- Servlet是sun公司开发动态web的一门技术
- Sun在这些API中提供一个接口叫做:Servlet,如果想开发一个Servlet程序,需要
-
- 编写一个类,实现Servlet接口
- 把开发好的Java类部署到web服务器中
- 把实现了Servlet接口的Java程序叫做:Servlet
HelloServlet
Servlet接口Sun公司有两个默认的实现类:HttpServlet、GenericServlet
1、 关于Maven父子工程的理解
父项目中会有
<modules>
<module>servlet-01</module>
</modules>
子项目中会有
<parent>
<artifactId>javaweb-02-servlet</artifactId>
groupId>com.wangsiqi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
父项目中的jar子项目可以直接使用
son extends father
2、Maven环境优化
- 修改web.xml为最新的
- 讲Maven的结构搭建完整
3、编写一个Servlet程序
- 编写一个普通类
- 实现Servlet接口,这里默认继承HttpServlet
package com.wangsiqi.servlet;
import javax.annotation.Generated;
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
// 由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
// super.doGet(req,resp);
PrintWriter writer = resp.getWriter();//响应流
writer.println("Hello,Servlet");
@Override
protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException
super.doPost(req,resp);
4、编写Servlet的映射
为什么需要映射?
我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中,注册我们写的Servlet,还需一个浏览器能够访问
<!--注册Servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.wangsiqi.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
5、配置Tomcat
注意:项目启动的路径
Servlet原理
Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:
Mapping问题
可以自定义后缀实现请求映射
PS:*前面不能加项目映射的路径
1、一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2、一个Servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello4</url-pattern>
</servlet-mapping>
3、一个Servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
4、默认请求路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
5、指定一些后缀或者前缀等等......
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.com</url-pattern>
</servlet-mapping>
6、优先级 问题
指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求:
<!--404-->
<!--注册Servlet-->
<servlet>
<servlet-name>error</servlet-name>
<servlet-class>com.wangsiqi.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
ServlertContext
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用。
以上是关于JavaWebServlet的主要内容,如果未能解决你的问题,请参考以下文章
JavaWebServlet中的request与response