Servlet优化
【摘要】 一些优化封装为了能处理不同的请求方式,我们得在service方法中进行判断,然后写不同的业务处理,这样能实现,但是每个Servlet类中都将有相似的代码,针对这个问题,有什么可以优化的策略么?package jgd;import javax.servlet.*;import javax.servlet.http.HttpServlet;import javax.servlet.http.H...
一些优化封装
为了能处理不同的请求方式,我们得在service方法中进行判断,然后写不同的业务处理,这样能实现,但是每个Servlet类中都将有相似的代码,针对这个问题,有什么可以优化的策略么?
package jgd;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class ServletDemo5 implements Servlet {
public void init(ServletConfig servletConfig) throws ServletException {
}
public ServletConfig getServletConfig() {
return null;
}
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 根据请求方式的不同,进行分别的处理
// 获取请求方式
// 先转换为http协议下的逻辑
HttpServletRequest request = (HttpServletRequest) servletRequest;
//获取到方法
String method = request.getMethod();
// 进行判断
if ("GET".equals(method)) {
// get方式的处理逻辑
} else if ("POST".equals(method)) {
// post方式的处理逻辑
}
}
public String getServletInfo() {
return null;
}
public void destroy() {
}
}
比如上面这段代码,我不想每次写的时候都写逻辑判断,这是一段重复的代码。我不想每次写。这里的逻辑处理还不是很多,如果很多很多的话,我们该如何如理?我们每次都需要这样处理的话,我们就应该进行封装调用。
现在我们自己定义一个类
package jgd;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class MyHttpServlet implements Servlet {
public void init(ServletConfig servletConfig) throws ServletException {
}
public ServletConfig getServletConfig() {
return null;
}
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 根据请求方式的不同,进行分别的处理
// 获取请求方式
// 先转换为http协议下的逻辑
HttpServletRequest request = (HttpServletRequest) servletRequest;
//获取到方法
String method = request.getMethod();
// 进行判断
if ("GET".equals(method)) {
doGet(servletRequest, servletResponse);
// get方式的处理逻辑
} else if ("POST".equals(method)) {
// post方式的处理逻辑
doPost(servletRequest, servletResponse);
}
}
protected void doPost(ServletRequest servletRequest, ServletResponse servletResponse) {
}
protected void doGet(ServletRequest servletRequest, ServletResponse servletResponse) {
}
public String getServletInfo() {
return null;
}
public void destroy() {
}
}
我们把方法定义好,参数安排好。可以让之后的类继承到这个类。然后实现调用统一的功能。
后面就简化了好多,这也是继承的好处。也是一种功能封装。
package jgd;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
@WebServlet("/demo6")
public class ServletDemo6 extends MyHttpServlet {
@Override
protected void doGet(ServletRequest servletRequest, ServletResponse servletResponse) {
// super.doGet(servletRequest, servletResponse);
System.out.println("get...");
}
@Override
protected void doPost(ServletRequest servletRequest, ServletResponse servletResponse) {
// super.doPost(servletRequest, servletResponse);
System.out.println("post..");
}
}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)