项目场景:
在javaweb学习过程中发现idea环境下配置servlet会导致jsp显示源码的问题,重启Tomcat只有问题并没有得到解决
servlet配置如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 定义servlet-->
<servlet>
<!-- 与servlet-mapping中的servlet-name相对应-->
<servlet-name>welcome</servlet-name>
<!-- 实际处理的servlet的类全名-->
<servlet-class>com.example.servletproject25.WelcomeServlet</servlet-class>
</servlet>
<!-- 映射路径-->
<servlet-mapping>
<!-- 与servlet中的servlet-name相对应-->
<servlet-name>welcome</servlet-name>
<!-- 请求映射的路径,如action地址。其中“/”表示的是项目的根路径-->
<url-pattern>/WelcomeServlet</url-pattern>
</servlet-mapping>
</web-app>
servlet源码如下
package com.example.servletproject25;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class WelcomeServlet extends HttpServlet {
//处理Get方式的请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过response获取输出对象out(等价于JSP中的内置对象)
PrintWriter out =response.getWriter();
out.println("doGet -- HelloServlet");
//关闭输出
out.close();
}
//处理Post方式的请求
@Override
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException ,ServletException{
//通过response获取输出对象out
PrintWriter out=response.getWriter();
out.println("doPost -- Hello Servlet");
//关闭输出
out.close();
}
}
原因分析:
原因不明,在显示jsp时会以file协议进行查询
解决方案:
删除掉web.xml的配置后可正常运行,或者将servlet以注释的方式进行。