一---Servlet原理分析图
Servlet是由web服务器调用,web服务器在收到浏览器请求之后,会:
二---Mapping问题
1)一个servlet请求可以指定一个映射路径
<!--servlet的请求路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> <!-- 网址模式--> </servlet-mapping>
2)一个servlet请求可以指定多个映射路径
<!--servlet的请求路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> <!-- 网址模式--> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello1</url-pattern> <!-- 网址模式--> </servlet-mapping> <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的请求路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello/*</url-pattern> <!-- 网址模式--> </servlet-mapping>
4)默认请求路径,虽然进的是s1模块,但这时访问的不再是index.jsp.而是HelloServlet
5)指定一些后缀或者前缀等等
<!--servlet的请求路径 注意点,*前面不能加项目映射的路径--> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>*.do</url-pattern> <!-- 网址模式--> </servlet-mapping>
6)修改默认的404页面
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.print("<h1>哥!这次真的找不到了。</h1>"); // 输出内容 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
注册:
<!-- 404页面 --> <!--注册servlet --> <servlet> <servlet-name>error</servlet-name> <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class> </servlet> <!--servlet的请求路径--> <servlet-mapping> <servlet-name>error</servlet-name> <url-pattern>/*</url-pattern> <!-- 网址模式--> </servlet-mapping>
测试:
输入/hello试试
6)优先级问题
指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求。