1.什么是Servlet?

Java Servlet是运行在web服务器上的一个程序,它是客户端请求和服务器资源或者程序的一个中间层的架构。
所以Servlet由web服务器调用,可以获取并处理客户端的请求,也可以对请求做出响应的响应。

2.Servlet编程步骤

前置:在项目中导入了javax.servlet-api包,一般4.0.1版本的即可
1.自定义类:编写一个实现Servlet接口的类,或者直接继承HttpServlet类就可以了
2.注册:在项目中的web.xml中为自己编写的类注册一下,并指定一个虚拟映射路径
(在路径映射的时候,需要知道那里面的路径都是自动包含了配置Tomcat时指定的/{Artifact}目录了的
而不是像重定向那样,需要手动添加一下/Artifact目录)

3.ServletContext的功能和使用

1.共享数据
在一个WebApp中有一个全局唯一的ServletContext,它可以用来在不同的请求之间共享数据

// 在一个servlet中获取ServletContext对象并存入了一个键值对
ServletContext context = this.getServletContext();
String username = "LongXiaolan";
context.setAttribute("name", username);
// 在另一个servlet中可以获取ServletContext对象并把值取出来
ServletContext context = this.getServletContext();
String username = "LongXiaolan";
resp.getWriter().print(context.getAttribute("name"));

2.获取初始化参数
获取web.xml配置文件中写好的一些参数,感觉这个功能基本用不到了。。。。

3.请求转发(还是有点用的)
即为Servlet得到一个请求后,直接把这个请求转发给另一个Servlet
浏览器的url变,但是请求确实是转发给另一个Servlet来完成的
(请求转发不用加/{Artifact}目录,像之前一样的直接写就行了)

// 请求转发属于ServletContext的功能一条语句就可以实现了,当然用req对象也是可以的
this.getServletContext().getRequestDispatcher("/<请求的路径>").forward(req, resp);

4.获取资源文件
这个也用处不大了。。

4.实现重定向

重定向与请求转发不同,重定向时url会发生变化,相当于一个页面跳转吧
直接用HttpServletResponse resp对象就可以实现重定向,
但是要注意特殊之处:在路径中要加入/Artifact目录

// 重定向的时候必须在前面加上Artifact目录
// 这种属于重定向到其他请求,还可以重定向到jsp页面
resp.sendRedirect("/Servlet02/gp");