一个Servlet是如何处理多个请求的?
作者:我愿成为你头顶的云 发布时间:2023-01-18 11:19:32
标签:Servlet,多个,请求
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方法里的这些代码:
然后jsp中的代码如下:
可以看到一个共同点,就是所有的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
来源:https://blog.csdn.net/qq_42640067/article/details/117909681
0
投稿
猜你喜欢
- 这篇文章主要介绍了java获取当前时间的四种方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 本文实例为大家分享了Unity实现俄罗斯方块的具体代码,供大家参考,具体内容如下一、使用SpriteRenderer作为小方块图片,创建7种
- 一、项目运行环境配置:Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,
- 合成聚合复用原则合成复用原则又称为组合/聚合复用原则(Composition/Aggregate Reuse Principle, CARP
- 要想实现android手机通过扫描名片,得到名片信息,可以使用脉可寻提供的第三方SDK,即Maketion ScanCard SDK,脉可寻
- 此解决方案是针对window的,因为日志默认保存路径在C盘,linux忽略。学习RocketMQ过程中,总是出现com.alibaba.ro
- 1 * * 是Spring中的概念,和过滤器类似,可以对用户请求进行拦截过滤处理。但是相对于过滤器而言, * 要的控制更加的细节, *
- 因为线程重用导致的信息错乱的bugThreadLocal一般用于线程间的数据隔离,通过将数据缓存在ThreadLocal中,可以极大的提升性
- SqlMapConfig.xml的约束,也就是Mybatis主配置文件的约束<?xml version="1.0"
- 前言序列化想必大家都很熟悉了,对象在进行网络传输过程中,需要序列化之后才能传输到客户端,或者客户端的数据序列化之后送达到服务端序列化的标准解
- 前言:最近在工程中需要用到截取RotatedRect中的图形,保存为Mat做后续处理。发现opencv文档中没有这个api,最开始想到的方案
- 首先对图片进行UUID 防止图片被覆盖以及爬图UUID的生成规则:日期时间,MAC地址,HashCode,随机数(多种之一)开发上传接口,两
- 官方文档 8.0Spring为不同缓存做了一层抽象,这里通过阅读文档以及源码会对使用以及原理做一些学习笔记。1.简介
- 最近在研究dubbo时,发现了JAVA的SPI特性。SPI的全名为Service Provider Interface,是JDK内置的一种服
- 找不同给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
- 本文实例为大家分享了Java实现简单邮件发送的具体代码,供大家参考,具体内容如下需要的jar包:activation-1.1.1.jarma
- Swagger以及knife4j基本使用Swagger 介绍:官网:https://swagger.io/Swagger是一个规范和完整的框
- 本Demo使用三个类一个Test类一个自定义的Stack类一个自定义的Queue类可以实现的功能:1.对于一个写在文本文件中的迷宫,能够将其
- Math.PI 记录的圆周率Math.E 记录e的常量Math中还有一些类似的常量,都是一些工程数学常用量。Math.ab
- 最近都在忙着写一个网站项目,今天做一个分页功能的时候,遇到了分页效果实现不了的问题,查了好久的资料,后来终于是成功解决啦,记录一下1.在po