Servlet中常用的方法说明

发布于:2023-01-10 ⋅ 阅读:(449) ⋅ 点赞:(0)

一、Servlet生命周期中的方法

因为Servlet中没有main()方法,不能独立运行,其运行主要靠Tomcat服务器控制和调度。

生命周期:指的是ServletContext中何时创建Servlet容器,调用其doGet()、doPost()等做出请求、响应的方法,何时进行销毁其实例的方法。

1、init (ServletConfig config),在 Servlet 实例创建之后执行

public void init(ServletConfig config) throws ServletException {
System.out.println("实例创建了Servlet");
}

 2、service ( ServletRequest req, ServletResponse res)方法,由 Servlet 容器调用,用来处理客户端的请求

protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("服务调用了Service()方法");
}

doGet()方法 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

doPost()方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//调用doGet方法才会起作用,统一处理
		doGet(request, response);
	}

3、destroy ( )由 Servlet 容器调用,释放Servlet对象所使用的资源,销毁Servlet对象

public void destroy() {
System.out.println("实例销毁了Servlet对象");
}

 二、request请求中的方法

 1、setCharacterEncoding (String charset )、设置请求体的字符编码

request.setCharacterEncoding("utf-8");

 2、getParameter ( String name ) 、获取请求参数

String uname = request.getParameter("uname");

3、String[ ] getParameterValues (String name )、返回指定请求参数的全部值 

String[] hobbys = request.getParameterValues("hobby");

 4、setAttribute (String name, Object object )、在请求中保存名称为name的属性

request.setAttribute("lo", findLo);

5、getAttribute ( String name )、获取名称为name的属性值 

Login log = (Login)request.getAttribute("lo");

6、removeAttribute (String name)、清除请求中名字为name的属性 

session.removeAttribute("bname");

7、 getRequestDispatcher( String path )、返回指向指定路径的请求分发对象

request.getRequestDispatcher("login.do").forward(request, response);

         请求转发,是一种服务器的行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保 存,地址栏中的 URL 地址不会改变,得到响应后,服务器端再将响应发送给客户端,从始至终只有一个请求发出。

        request 域对象中的数据在一次请求中有效,则经过请求转发,request 域中的数据依然存在,则在 请求转发的过程中可以通过 request 来传输/共享数据。

三、response响应中的方法 

 1、getWriter ( )、返回PrintWriter对象,用于向客户端发送文本

PrintWriter out = response.getWriter();

	String html="<!DOCTYPE html>\r\n"
				+ "<html>\r\n"
				+ "	<head>\r\n"
				+ "		<meta charset=\"utf-8\">\r\n"
				+ "		<title></title>\r\n"
				+ "	</head>\r\n"
				+ "	<body>\r\n"
				+ "		<h1>性别:"+log.getLid()+"</h1>\r\n"
				+ "		<h1>用户名:"+log.getLname()+"</h1>\r\n"
				+ "		<h1>密码:"+log.getLpwd()+"</h1>\r\n"
				+ "		<h1>性别:"+log.getLsex()+"</h1>\r\n";
		html+= "</body>\r\n"
				+ "</html>";
			out.print(html);

2、setCharacterEncoding (String charset )、设置响应的字符编码 

	response.setCharacterEncoding("utf-8");

 3、response.setContentType("text/html;charset=utf-8");设置发送到客户端的响应的内容类型

response.setContentType("text/html;charset=utf-8");

4、sendRedirect(String location)、发送一个临时的重定向响应到客户端,以便客户端访问 新的URL;重定向;

response.sendRedirect("login.do");

 通过观察浏览器我们发现第一次请求获得的响应码为 302,并且含有一个 location 头信息。并且地址 栏最终看到的地址是和第一次请求地址不同的,地址栏已经发生了变化。

        重定向是一种客户端的行为。客户端发出第一个请求,被服务器接收处理后,服务器会 进行响应,在响应的同时,服务器会给客户端一个新的地址(下次请求的地址 response.sendRedirect(url);),当客户端接收到响应后,会立刻、马上、自动根据服务器给的新地址 发起第二个请求,服务器接收请求并作出响应,重定向完成。

转发与重定向的区别 

 四、Cookie对象【会话技术】

 使用场景:服务器无状态,不记录用户信息。把用户信息存储在浏览器上。

Cookie的创建:Cookie zhanghao = new Cookie("username",username);

//			让浏览器存储数据
			response.addCookie(zhanghao);
//		获取cookie
		Cookie[] cookies = request.getCookies();

 五、session对象(session会话技术) 

使用场景:浏览器与服务器一直在进行request、response交流,服务器无状态,不知道具体的请求,响应,于是我们把信息记录在session会话中 。

浏览器和服务器用session保持会话,只要会话不结束,都会有同一个session,在同一个会话中。

1、HttpSession getSession( )、返回和此次请求相关联的session,如果没有给客户端分配session, 则创建一个新的session

// 如果session对象存在,则获取;如果session对象不存在,则创建
HttpSession session = request.getSession();

2、setAttribute(String key, Object value)、以key/value的形式保存对象值

// 设置session域对象
session.setAttribute("uname","admin");

3、getAttribute(String key)、通过key获取对象值 

// 获取指定名称的session域对象
String uname = (String) request.getAttribute("uname");

 4、removeAttribute(String key)、从session中删除指定名称(key)所对 应的对象

// 移除指定名称的session域对象
session.removeAttribute("uname");

5、invalidate()、让session失效

// 销毁session对象
session.invalidate();

 cookie和session的区别

六、ServletContext对象 

ServletContext 对象,又称 Application 对象;在 WEB 容器启动的时候,会为每一个 WEB 应用程序创建一个对应的 ServletContext 对象。 

// 获取ServletContext对象
ServletContext servletContext = request.getServletContext();
// 设置域对象
servletContext.setAttribute("name","zhangsan");
// 获取域对象
String name = (String) servletContext.getAttribute("name");
// 移除域对象
servletContext.removeAttribute("name")

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到