Servlet(二)
Servlet(二)
Mapping映射问题
-
指定一个映射路径:
-
<servlet-mapping> <servlet-name>name</servlet-name> <url-pattern>/xxx</url-pattern> </servlet-mapping> -
指定多个映射路径:直接指定多个路径
-
指定通用映射路径:
/xxx/* -
默认请求路径:
/* -
指定后缀或前缀:
*.xxx,前面不能加斜杠 -
指定路径的优先级高于默认路径
ServletContext
-
Web容器在启动的时候,会为每个web程序都创建一个对应的ServletContext对象,代表当前的web应用
-
获取对象:
this.getServletContext() -
共享数据:
context.setAttribute("key", value),context.getAttribute("key") -
获取初始化参数:
context.getInitParameter("url")-
<context-param> <param-name>url</param-name> <param-value>jdbc:mysql://localhost:3306/mybatis</param-value> </context-param>
-
-
请求转发:
context.getRequestDispatcher("path").forward(req, resp);- 转发后路径不会发生变化
-
读取资源文件:
-
在resources目录中新建properties
-
username=root password=123456 -
获取输入流:
-
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"); -
加载并获取:
-
Properties prop = new Properties(); prop.load(is); String username = prop.getProperty("username"); String password = prop.getProperty("password");
-
HttpServletResponse
基本方法和属性
-
负责向浏览器发送数据的方法:
getOutputStream(),getWriter() -
负责向浏览器发送响应头的方法:
setxxx() -
响应状态码:
SC_XXX
常见应用
-
向浏览器输出消息
-
下载文件:
-
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取下载文件的路径 String realPath = "xxxx\\1.png //下载文件名 String filename = realPath.substring(realPath.lastIndexOf("\\") + 1); //设置浏览器:下载而非内联,文件名UTF-8编码 resp.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(filename, "UTF-8")); //获取文件输入流 FileInputStream in = new FileInputStream(realPath); //创建缓冲区 int len = 0; byte[] buffer = new byte[1024]; //获取Servlet输出流 ServletOutputStream out = resp.getOutputStream(); //将文件写入缓冲区 while((len = in.read(buffer))> 0){ out.write(buffer, 0, len); } //关闭流 in.close(); out.close(); } -
重定向:
resp.setRedirect("path")- 等效于:
resp.setHeader("Location","path"),resp.setStatus(302) - 这里的路径要写全,包括设置的虚拟路径
- 等效于:
HttpServletRequest
- 获取前端传递的参数:
req.getParameter() - 通过请求转发:
req.getRequestDispatcher("path").forward(req,resp)

浙公网安备 33010602011771号