一个Servlet是如何处理多个请求的?

作者:我愿成为你头顶的云 时间:2023-01-18 11:19:32 

1、servlet层


package com.ycz.controller;

import com.alibaba.fastjson.JSON;
import com.ycz.dao.PeopleDao;
import com.ycz.domain.People;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
* @Description
* @ClassName MyServlet
* @Author yanchengzhi
* @date 2021.06.06 20:16
*/
public class MyServlet extends HttpServlet {

PeopleDao peopleDao = new PeopleDao();

/*
   * @description: servlet的核心方法,每个servlet请求都会经过此方法处理
   * @param: [req, res]
   * @return: void
   * @author: yanchengzhi
   * @date: 2021/6/14 10:52
   */
   @Override
   public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
       HttpServletRequest request = (HttpServletRequest)req;
       HttpServletResponse response = (HttpServletResponse)res;
       String command = request.getParameter("COMMAND");
       if("ADD".equals(command)) {
           addPeople(request,response);
           return;
       }
       if("UPDATE".equals(command)){
           updatePeople(request,response);
           return;
       }
       if("DEL".equals(command)) {
           deletePeople(request,response);
           return;
       }
       if("FIND".equals(command)) {
           findById(request,response);
           return;
       }
       if("FINDALL".equals(command)) {
           findAll(request,response);
           return;
       }
   }

/*
   * @description: 添加
   * @param: [request, response]
   * @return: void
   * @author: yanchengzhi
   * @date: 2021/6/14 10:51
   */
   private void addPeople(HttpServletRequest request,HttpServletResponse response) throws IOException {
       People people = new People();
       people.setName("云过梦无痕");
       people.setBirth(new Date());
       people.setTag(0);
       response.setContentType("text/html;charset=utf-8");
       //response.setContentType("text/plain; charset=UTF-8");
       PrintWriter writer = response.getWriter();
       int res = peopleDao.addPeople(people);
       if(res > 0){
           writer.write("<h2>添加成功!</h2>");
       } else {
           writer.write("<h2>添加失败!</h2>");
       }
       writer.flush();
       writer.close();
   }

/*
   * @description: 修改
   * @param: [request, response]
   * @return: void
   * @author: yanchengzhi
   * @date: 2021/6/14 10:54
   */
   private void updatePeople(HttpServletRequest request,HttpServletResponse response) throws IOException {
       // 获取修改记录的id
       Integer id = Integer.parseInt(request.getParameter("id"));
       People p = new People();
       p.setName("yanchengzhi");
       Calendar calendar = Calendar.getInstance();
       calendar.set(1995,9,18);
       Date date = calendar.getTime();
       p.setBirth(date);
       int res = peopleDao.updatePeople(p,id);
       response.setContentType("text/html;charset=utf-8");
       PrintWriter writer = response.getWriter();
       if(res > 0){
           writer.write("<h2>修改成功!</h2>");
       } else {
           writer.write("<h2>修改成功!</h2>");
       }
       writer.flush();
       writer.close();
   }

/*
   * @description: 删除记录
   * @param: [request, response]
   * @return: void
   * @author: yanchengzhi
   * @date: 2021/6/14 12:15
   */
   private void deletePeople(HttpServletRequest request,HttpServletResponse response) throws IOException{
       Integer id = Integer.parseInt(request.getParameter("id"));
       int res = peopleDao.delPeople(id);
       response.setContentType("text/html;charset=utf-8");
       PrintWriter writer = response.getWriter();
       if(res > 0) {
           writer.write("<h2>删除成功!</h2>");
       } else {
           writer.write("<h2>删除失败!</h2>");
       }
       writer.flush();
       writer.close();
   }

/*
   * @description: 按照id查询
   * @param: [request, response]
   * @return: void
   * @author: yanchengzhi
   * @date: 2021/6/14 14:20
   */
   private void findById(HttpServletRequest request,HttpServletResponse response) {
       Integer id = Integer.parseInt(request.getParameter("id"));
       People p = peopleDao.findById(id);
       if(p != null) {
           System.out.println("查找的记录信息如下:");
           System.out.println("-------------------");
           System.out.println("Id号:" + p.getId());
           System.out.println("姓名:" + p.getName());
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
           System.out.println("生日:" + sdf.format(p.getBirth()));
           System.out.println("Tag标记:" + p.getTag());
       } else {
           System.out.println("查询的记录不存在!");
       }
   }

private void findAll(HttpServletRequest request,HttpServletResponse response) throws IOException{
       List<People> list = peopleDao.findAll();
       response.setContentType("text/plain;charset=utf-8");
       PrintWriter writer = response.getWriter();
       if(list != null && list.size() > 0){
           // 转为json串
           String jsonStr = JSON.toJSONString(list);
           writer.write(jsonStr);
       } else {
           writer.write("查无数据!");
       }
   }
}

关注重点是service方法里的这些代码:

一个Servlet是如何处理多个请求的?

然后jsp中的代码如下:

一个Servlet是如何处理多个请求的?

可以看到一个共同点,就是所有的a链接后面都带有一个COMMAND参数,只是绑定的值不一样,就是根据这个绑定的值,来进入到不同的业务方法中。

2、dao层代码


package com.ycz.dao;

import com.ycz.conf.DataSourceManager;
import com.ycz.domain.People;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
* @Description  数据访问层
* @ClassName PeopleDao
* @Author yanchengzhi
* @date 2021.06.08 08:50
*/
public class PeopleDao {

/*
   * @description: 添加
   * @param: [people]
   * @return: int
   * @author: yanchengzhi
   * @date: 2021/6/14 11:03
   */
   public int addPeople(People people){
       int res = 0;
       String sql = "insert into people (name,birth,tag) values (?,UNIX_TIMESTAMP(?),?)";
       Connection connection = DataSourceManager.getConnection();
       PreparedStatement ps = null;
       try {
           ps = connection.prepareStatement(sql);
           ps.setString(1,people.getName());
           ps.setDate(2,new Date(people.getBirth().getTime()));
           ps.setInt(3,people.getTag());
           res = ps.executeUpdate();
       } catch (Exception e){
           e.printStackTrace();
       } finally {
           DataSourceManager.closeConnection(connection);
           DataSourceManager.closeStatement(ps);
       }
       return res;
   }

/*
   * @description: 修改
   * @param: [p, id]
   * @return: int
   * @author: yanchengzhi
   * @date: 2021/6/14 11:03
   */
   public int updatePeople(People p, Integer id) {
       int res = 0;
       String sql = "update people set name = ?,birth = UNIX_TIMESTAMP(?) where id = ?";
       Connection connection = DataSourceManager.getConnection();
       PreparedStatement ps = null;
       try {
           ps = connection.prepareStatement(sql);
           ps.setString(1,p.getName());
           ps.setDate(2,new Date(p.getBirth().getTime()));
           ps.setInt(3,id);
           res = ps.executeUpdate();
       } catch (Exception e){
           e.printStackTrace();
       } finally {
           DataSourceManager.closeConnection(connection);
           DataSourceManager.closeStatement(ps);
       }
       return res;
   }

/*
   * @description: 删除
   * @param: [id]
   * @return: int
   * @author: yanchengzhi
   * @date: 2021/6/14 12:20
   */
   public int delPeople(Integer id) {
       int res = 0;
       String sql = "delete from people where id = ?";
       Connection connection = DataSourceManager.getConnection();
       PreparedStatement ps = null;
       try {
           ps = connection.prepareStatement(sql);
           ps.setInt(1,id);
           res = ps.executeUpdate();
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           DataSourceManager.closeConnection(connection);
           DataSourceManager.closeStatement(ps);
       }
       return res;
   }

/*
   * @description: 按照id查询
   * @param: [id]
   * @return: com.ycz.domain.People
   * @author: yanchengzhi
   * @date: 2021/6/14 14:20
   */
   public People findById(Integer id) {
       String sql = "select id,name,FROM_UNIXTIME(birth) birthday,tag from people where id = ?";
       Connection connection = DataSourceManager.getConnection();
       PreparedStatement ps = null;
       ResultSet resultSet = null;
       try {
           ps = connection.prepareStatement(sql);
           ps.setInt(1,id);
           resultSet = ps.executeQuery();
           while(resultSet.next()){
               People p = new People();
               p.setId(resultSet.getInt("id"));
               p.setName(resultSet.getString("name"));
               p.setBirth(resultSet.getDate("birthday"));
               p.setTag(resultSet.getInt("tag"));
               return p;
           }
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           DataSourceManager.closeConnection(connection);
           DataSourceManager.closeStatement(ps);
           DataSourceManager.closeResultSet(resultSet);
       }
       return null;
   }

/*
   * @description: 查询所有记录
   * @param: []
   * @return: java.util.List<com.ycz.domain.People>
   * @author: yanchengzhi
   * @date: 2021/6/14 14:43
   */
   public List<People> findAll() {
       List<People> peoples = new ArrayList<>();
       String sql = "select id,name,FROM_UNIXTIME(birth) birthday,tag from people";
       Connection connection = DataSourceManager.getConnection();
       PreparedStatement ps = null;
       ResultSet resultSet = null;
       try {
           ps = connection.prepareStatement(sql);
           resultSet = ps.executeQuery();
           while(resultSet.next()){
               People p = new People();
               p.setId(resultSet.getInt("id"));
               p.setName(resultSet.getString("name"));
               p.setBirth(resultSet.getDate("birthday"));
               p.setTag(resultSet.getInt("tag"));
               peoples.add(p);
           }
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           DataSourceManager.closeConnection(connection);
           DataSourceManager.closeStatement(ps);
           DataSourceManager.closeResultSet(resultSet);
       }
       return peoples;
   }
}

3、web.xml

一个Servlet是如何处理多个请求的?

来源:https://blog.csdn.net/qq_42640067/article/details/117909681

标签:Servlet,多个,请求
0
投稿

猜你喜欢

  • java字节码框架ASM的深入学习

    2023-11-29 05:51:19
  • Android Studio实现带边框的圆形头像

    2023-11-30 01:52:23
  • Android开发中的简单设置技巧集锦

    2021-10-10 04:40:35
  • C# DataTable中Compute方法用法集锦(数值/字符串/运算符/表等操作)

    2023-03-01 23:28:38
  • java 实现截取字符串并按字节分别输出实例代码

    2021-08-28 08:10:44
  • autoMapping和autoMappingBehavior的区别及说明

    2023-11-29 06:39:25
  • android View 绘制完成监听的实现方法

    2023-08-06 20:47:05
  • Android仿今日头条顶部导航栏效果的实例代码

    2022-04-02 23:18:03
  • android TextView加下划线的方法

    2023-09-11 01:12:36
  • 关于springboot 配置文件中属性变量引用方式@@解析

    2023-12-08 21:50:03
  • vs 中C#项目读取JSON配置文件的方法

    2022-09-22 15:04:05
  • Java4Android开发教程(三)java基本概念

    2021-09-27 20:41:44
  • Java 多线程传值的四种方法

    2022-02-03 08:16:44
  • Android Tabhost使用方法详解

    2023-10-02 12:46:46
  • 详细介绍idea如何设置类头注释和方法注释(图文)

    2022-05-08 20:22:41
  • java数据结构基础:单链表与双向链表

    2023-03-02 09:21:59
  • Springboot实现通用Auth认证的几种方式

    2023-08-05 20:54:58
  • Spring的初始化和XML解析的实现

    2022-12-13 15:50:51
  • Unity中的静态批处理和动态批处理操作

    2022-09-29 20:12:08
  • SuperSocket封装成C#类库的步骤

    2023-09-05 02:36:33
  • asp之家 软件编程 m.aspxhome.com