-
什么是Servlet?
Servlet是一个特殊的Java类(必须实现特定的接口)
运行在服务器上(Tomcat)
处理客户端的请求,并作出响应。(JSP:和用户交互的界面,显示动态数据)
Servlet是以多线程的方式运行的。 -
为什么需要使用Servlet?
(1)用于处理功能的JSP,放在类中实现更加的合理。
(2)有利于代码分离。 -
如何编写Servlet?
看是否需要导入jar包(javax.servlet-api-4.0.1.jar),继承HttpServlet,重写service(request,response)配置Servlet:
方式1:web.xml
<servlet>
<servlet-name>Servlet名称</servlet-name>
<servlet-class>Servlet路径</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet名称</servlet-name>
<url-pattern>/Servlet名称</url-pattern>
</servlet-mapping>
方式二:注解。Servlet添加@WebServlet("/Servlet名称")
-
服务器何时创建的Servlet对象?创建了多少个Servlet对象?
首次访问Servlet时候创建的
多次请求Servlet,Tomcat只创建一个Servlet对象处理多次请求。
如果配置了,则Tomcat启动时就会创建Servlet对象。 -
Servlet(405错误)表示请求方式与处理方式不匹配。
一个Servlet既能处理get请求,也能处理post请求的方式:
(1)service
(2)doGet和doPost相互调用
doGet(){
doPost();
}
-
Servlet生命周期
(1)加载和实例化(<load-on-startup>)
(2)初始化 init();
(3)服务 service()/doGet()/doPost()
(4)销毁 destroy(); -
Servlet中的session (服务器,安全)
(1)创建session:
HttpSession session=request.getSession();
当客户端没有session对象时,服务器会给客户端创建新session;如果客户端已有session,则会获取客户端的session。
HttpSession session=request.getSession(true);
当客户端没有session对象时,服务器会给客户端返回null;如果客户端已有session,则会获取客户端的session。
HttpSession session=request.getSession(false);
(2)设置session的有效时间(默认30分钟):
session.setMaxInactiveInterval(秒);
(3)存取session
setAttribute()/getAttribute()
(4)清除session
session.removeAttribute();
session.invalidate(); -
Servlet中Cookie的使用(客户端,不安全)
(1)创建Cookie
Cookie cookie=new Cookie(“name”,“value”);
(2)读写Cookie
给客户端写入Cookie:response.addCookie(cookie);
从客户端读取Cookie:Cookie[]cs=request.getCookies(); -
Session和Cookie的对比
(1)存取方式
session服务器上
cookie客户端上
(2)存取内容
session存对象,大小没有限制
cookie存字符串(非中文),大小有限制
(3)有效期
session默认30分钟
cookie默认未关闭浏览器一直有效(-1)
(4)安全性
session安全,可以存储重要的数据
cookie不安全,存储辅助的数据 -
在Servlet中使用application
ServletContext application=this.getServletContext();
application.setAttribute(“username”, “名字");