JavaServlet原理
servlet原理
servlet是由web服务器调用
1.1Mapping问题#
-
一个servlet可以指定一个映射路径
<!-- 一个servlet对应一个Mapping:映射--> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <!-- 请求路径--> <url-pattern>/hello</url-pattern> </servlet-mapping>
-
一个servlet可以指定多个映射路径
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello2</url-pattern> </servlet-mapping>
-
一个servlet可以指定通用映射路径
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello/*</url-pattern> </servlet-mapping>
注意下面这样重启服务就不会默认进入到index.jsp页面了(不推荐使用)
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
-
指定一些后缀或者前缀等等
<!-- 可以自定义后缀实现请求映射 注意点:*前民不能加项目映射的路径 /hello/*.do 是不可以的 但是/hello/hi.do是可以的 --> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
-
优先级问题
制定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求
<servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>com.zyy.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello/hi.do</url-pattern> </servlet-mapping> <!-- 404--> <servlet> <servlet-name>errorServlet</servlet-name> <servlet-class>com.zyy.servlet.ErrorServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>errorServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
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 HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>你好!</h1>"); out.println("</body>"); out.println("</html>"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
作者:Cn_FallTime
出处:https://www.cnblogs.com/CnFallTime/p/15937394.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术