一、servlet
1、基础概念
servlet 技术主要应用于动态页面开发。是一种独立于操作系统平台和网络传输协议的服务端的Java应用程序,它用来拓展服务器的功能,可以生成动态的 web 页面。
2、在maven 中用 servlet 写的 hello world
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("Hello world");
}
// @Override
// protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// doPost(req, resp);
// }
}
在 pom.xml 中引入的 servlet 依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>compile</scope>
</dependency>
运行结果:(还要注意路径)
PS:若 Tomcat 能运行 JSP 但运行不了 servlet,(可能配置问题或者路径问题)
则按照此路径找到该文件:
打开后,按下面的修改即可:
<!-- <Context> -->
<Context xmlBlockExternal="false">
3、生命周期
servlet 生命周期:指servlet 容器创建 servlet 实例,响应客户请求后最后销毁的全过程。
描述:
(容器加载servlet类)当第一次有web客户请求servlet服务或当web服务启动;
(创建servlet实例对象)容器环境根据客户环境创建一个或多个servlet对象实例,并把这些实例加入到servlet实例池中;
(servlet初始化)容器环境调用servlet的初始化方法init()进行初始化,并向servlet传递参数;
(容器生成请求和响应对象)容器利用HttpServletRequest和HttpServletQesponse对象,封装从客户端收到的HTTP请求和由servlet生成的响应;
(调用service方法提供服务)容器调用HttpServlet . service()提供服务,并将请求和响应对象传递给该方法,再从请求对象读取HTTP请求数据,通过session对象访问状态信息,并用HttpServletQesponse对象生成HTTP响应数据;
(用destroy方法注销servlet)当web服务器和容器关闭时,会调用HttpServlet . destroy()方法关闭所有打开的资源,并进行一些关闭前处理。
二、cookie 和 session
1、工作流程
cookie:是客户端的机制。
服务器把每个用户的数据以cookie的形式(比如用户名、密码等)写给用户各自的浏览器,当用户使用浏览器再次访问服务器中的web资源时,就会带着各自的数据去,这样web资源处理的就是用户各自的数据了。
session:是服务器端的机制。
服务器 可以为每个用户浏览器创建一个session对象,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session对象中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据并为用户服务。
PS:可参考:http://t.csdn.cn/Ty0O0
2、区别
(1)存储位置:cookie存储在客户端;session存储在服务端。
(2)安全性:cookie以文明方式存储在客户端,安全性相对较弱,较容易遭到不法获取;session存在服务器内存中,安全性相对较强。
(3)存取方式:cookie只能保存ASCII;session可以保存任意数据类型。
(4)有效期:cookie可设置为长时间保存;session一般有效时间较短,客户端关闭或session超时都会失效。
(5)存储大小:cookie可存储数据最大为4K;session可存储数据远高于cookie。