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();//获得当前项目的工程路径
-
请求转发需要一个相对路径
-