day12-Servlet02

Servlet026.GET和POST请求的分发处理

  • 开发Servlet,通常编写doGet,doPost方法 。来对表单的get和post请求进行分发处理
例子
在web文件夹下面创建一个html页面,用于提交表单
day12-Servlet02

文章插图
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>注册</title></head><body><h1>用户注册</h1><!--注意:这里的helloServlet不是你的类名,是你在web.xml里面配置的<url-pattern>--><form action="http://localhost:8080/servlet_demo/helloServlet" method="get">u:<input type="text" name="username"/><br/><br/><input type="submit" value="https://www.huyubaike.com/biancheng/注册用户"/></form></body></html>在src目录下面创建HelloServlet类,该类实现了Servlet接口,并重写init() , getServletConfig(),service() , getServletInfo(),destroy()这5个方法,并在该类中增加两个方法,用来处理get和post请求
day12-Servlet02

文章插图
/** * 用于响应get请求 */public void doGet() {System.out.println("doGet()方法被调用..");}/** * 用于响应post请求 */public void doPost() {System.out.println("doPost()方法被调用..");}同时在HelloServlet的service方法中编写操作 , 用于接收get和post请求
@Overridepublic void service(ServletRequest servletRequest,ServletResponse servletResponse)throws ServletException, IOException {//思考-->从servletRequest对象去获取请求方式->//1.发现ServletRequest没有得到提交方式的方法//2.就去看看ServletRequest的子接口有没有相关方法//3.快捷键ctrl+alt+b=>可以看到接口的子接口和实现子类//4.发现HttpServletRequest子类中有getMethod方法//5.把ServletRequest转成HttpServletRequest引用HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;String method = httpServletRequest.getMethod();//System.out.println("method="+method);method=GET-->发现输出的字符是大写的if ("GET".equals(method)){doGet();//使用doGet()处理GET请求}else if ("POST".equals(method)) {doPost();//使用doPost处理POST请求}}然后重新发布redeploy
day12-Servlet02

文章插图
在浏览器中输入地址http://localhost:8080/servlet_demo/register.html,在表单中输入内容 , 点击按钮,发送请求
day12-Servlet02

文章插图
可以看到后台输出了调用哪个方法 , 说明HelloServlet成功获得了请求方式
day12-Servlet02

文章插图
7.通过继承HttpServlet来开发Servlet在实际的开发中,我们很少去实现Servlet接口 , 因为该接口中有很多方法实际上很少会用到 。
为了开发更加简便,Servlet的设计者提供了另一套更简洁的开发方式,就是通过继承HttpServlet来开发Servlet 。
  • HttpServlet介绍
    在实际的项目中,都是使用继承HttpServlet类开发Servlet程序 , 更加方便
    day12-Servlet02

    文章插图
例子
  1. 通过继承HttpServlet开发一个HiServlet
  2. 当浏览器访问http://localhost:8080/web应用名/hiServlet时 , 后台输出“hi HiServlet”
思路:
  • 编写一个类去继承HttpServlet类
  • 根据业务需要重写doGet或doPost方法
  • 到web.xml中配置Servlet程序
编写一个类去继承HttpServlet类:
package com.li.servlet;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 HiServlet extends HttpServlet {//重写HttpServlet的doGet和doPost方法/*** 处理doGet请求** @param req* @param resp* @throws ServletException* @throws IOException*/@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("HiServlet doGet()....");}/*** 处理doPost请求** @param req* @param resp* @throws ServletException* @throws IOException*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("HiServlet doPost()....");}}到web.xml中配置Servlet程序:
<!--配置HiServlet--><servlet><servlet-name>HiServlet</servlet-name><servlet-class>com.li.servlet.HiServlet</servlet-class></servlet><servlet-mapping><servlet-name>HiServlet</servlet-name><url-pattern>/hiServlet</url-pattern></servlet-mapping>

推荐阅读