学习第二天——Servlet

Sevrlet

第一个servlet程序

实现类:HttpServlet类

配置xml类的路径 

 <servlet>
     <servlet-name>sc1</servlet-name>
     <servlet-class>su.study.context.ServletContext_1</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>sc1</servlet-name>
     <url-pattern>/sc1</url-pattern>
 </servlet-mapping>

Severlet原理

浏览器发出request,通过路径url找到对应的映射,开启运行java程序;

java程序继承HttpServlet类,实现Servlet接口。

映射:

  • 一条路径对应一个映射

  • 多条路径对应一个映射

  • 可以使用通配符和前后缀

优先级:

固定路径优先级更高

ServletContext

Context数据共享

 //放入Context容器
 ServletContext servletContext = this.getServletContext();
 String name = "asd";
 servletContext.setAttribute("name",name);
 //从Context容器拿出
 ServletContext servletContext = this.getServletContext();
 String name = (String) servletContext.getAttribute("name");
 resp.setContentType("text/html");//类型
 resp.setCharacterEncoding("utf-8");//编码
 resp.getWriter().print("name"+name);

InitParameter

xml配置默认值

 <context-param>
     <param-name>id</param-name>
     <param-value>201900282</param-value>
 </context-param>
 String id = servletContext.getInitParameter("id");

读取资源文件

  • 在Java目录下的文件

  • 在resources目录下的文件

public class ServletContext_5 extends HttpServlet {
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         //将文件写入流
         InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
         //流封装到Properties对象中
         Properties properties = new Properties();
         properties.load(is);
         //获取对象中的数据
         String user = properties.getProperty("username");
         String password = properties.getProperty("password");
         //输出到web上
         resp.getWriter().print(user+":"+password);
     }
 }

需要解决maven资源导入问题

文件都会放在class文件下

eg:路径为同级目录下开始的相对路径,不是绝对路径

HttpServletResponse/HttpServletRequest

  • 请求转发/重定向

     //重定向
     resp.sendRedirect(req.getContextPath()+"/t1");
     //请求转发
     req.getRequestDispatcher("/t1").forward(req,resp);

    注意路径问题:

    • 重定向是一种客户端操作

    • 请求转发是一种服务器操作

    • 重定向需要一个绝对路径

       req.getContextPath();//获得当前项目的工程路径
    • 请求转发需要一个相对路径

猜你喜欢

转载自blog.csdn.net/qq_46631261/article/details/121237030