6.3、Servlet原理
Servlet是由web服务器调用,web服务器在收到浏览器请求之后,会:
6.4、Mapping问题
1.一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2.一个Servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello4</url-pattern>
</servlet-mapping>
3.一个Servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
4.默认请求路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
5.指定一些前缀或者后缀等等
<!--可以自定义后缀实现请求映射
注意点:*前面不能加项目的映射路径
hello/hi.gongyi
/hi.gongyi-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.gongyi</url-pattern>
</servlet-mapping>
6.优先级问题
制定了固有的映射路径优先级最高,如果找不到,就走默认的处理请求
指定404页面
1)servlet
public class ErrorServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
writer.println("<h1>404页面找不到</h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req,resp);
}
}
2)映射
<servlet>
<servlet-name>error</servlet-name>
<servlet-class>com.gongyi.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
彩蛋
1.idea中运行maven web后,会在target目录下生成一个war包,这是web打包后的核心文件