一个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方法里的这些代码:
然后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
标签:Servlet,多个,请求
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java字节码框架ASM的深入学习
2023-11-29 05:51:19
Android Studio实现带边框的圆形头像
2023-11-30 01:52:23
![](https://img.aspxhome.com/file/2023/6/92576_0s.png)
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
![](https://img.aspxhome.com/file/2023/7/139637_0s.png)
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
![](https://img.aspxhome.com/file/2023/1/139261_0s.png)
Java 多线程传值的四种方法
2022-02-03 08:16:44
![](https://img.aspxhome.com/file/2023/4/79944_0s.png)
Android Tabhost使用方法详解
2023-10-02 12:46:46
详细介绍idea如何设置类头注释和方法注释(图文)
2022-05-08 20:22:41
![](https://img.aspxhome.com/file/2023/8/77458_0s.jpg)
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