步骤 1 : 拓扑图点亮 步骤 2 : 什么时候编译 步骤 3 : JspServlet 步骤 4 : 测试 步骤 5 : 比较可运行项目,快速定位问题
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.servlets;
import cn.how2j.diytomcat.catalina.Context;
import cn.how2j.diytomcat.http.Request;
import cn.how2j.diytomcat.http.Response;
import cn.how2j.diytomcat.util.Constant;
import cn.how2j.diytomcat.util.JspUtil;
import cn.how2j.diytomcat.util.WebXMLUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
public class JspServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static JspServlet instance = new JspServlet();
public static synchronized JspServlet getInstance() {
return instance;
}
private JspServlet() {
}
public void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws IOException, ServletException {
try {
Request request = (Request) httpServletRequest;
Response response = (Response) httpServletResponse;
String uri = request.getRequestURI();
if ("/".equals(uri))
uri = WebXMLUtil.getWelcomeFile(request.getContext());
String fileName = StrUtil.removePrefix(uri, "/");
File file = FileUtil.file(request.getRealPath(fileName));
File jspFile = file;
if (jspFile.exists()) {
Context context = request.getContext();
String path = context.getPath();
String subFolder;
if ("/".equals(path))
subFolder = "_";
else
subFolder = StrUtil.subAfter(path, '/', false);
String servletClassPath = JspUtil.getServletClassPath(uri, subFolder);
File jspServletClassFile = new File(servletClassPath);
if (!jspServletClassFile.exists()) {
JspUtil.compileJsp(context, jspFile);
} else if (jspFile.lastModified() > jspServletClassFile.lastModified()) {
JspUtil.compileJsp(context, jspFile);
}
String extName = FileUtil.extName(file);
String mimeType = WebXMLUtil.getMimeType(extName);
response.setContentType(mimeType);
byte body[] = FileUtil.readBytes(file);
response.setBody(body);
response.setStatus(Constant.CODE_200);
} else {
response.setStatus(Constant.CODE_404);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2020-06-23
JspServlet这段逻辑是否多余?
4 个答案
HOW2JZkk817 跳转到问题位置 答案时间:2020-10-15 哈哈哈哈哈,站长的回答有点意思
how2j 跳转到问题位置 答案时间:2020-09-24 @佛说 我还没有回答呢,按照题主自己的回答,这个问题其实并不存在嘛
佛说 跳转到问题位置 答案时间:2020-09-22 我感觉是不多余的,但是站长回答的意思是多余还是非多余呢,,
BeachFish 跳转到问题位置 答案时间:2020-06-23 呃,问题收回。没毛病
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|