Servlet

Servlet

隐式对象说明
responserequest 对象是 javax.servlet.httpServletRequest 类型的对象。 该对 象代表了客户端的请求信息,主要用于接受通过 HTTP 协议传送到服务器的数据。
responseresponse 代表的是对客户端的响应,主要是将 JSP 容器处理过的对象传回 到客户端。response 对象也具有作用域,它只在 JSP 页面内有效
sessionsession 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个 用户都生成一个 session 对象,用于保存该用户的信息,跟踪用户的操作状态
sessionsession 对象内部使用 Map 类来保存数据,因此保存数据的格式为 “Key/value”。 session 对象的 value 可以是复杂的对象类型,而不仅仅局限于字 符串类型
applicationapplication 对象可将信息保存在服务器中,直到服务器关闭,否则 application 对象中保存的信息会在整个应用中都有效。与 session 对象相比,application 对象生命周期更长,类似于系统的“全局 变量”。
outout 对象用于在 Web 浏览器内输出信息,并且管理应用服务器上的输出缓 冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲 区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输 出流。
pageContextpageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP 页面的 out. request. reponse. session. application 等对象。pageContext 对象的创建和初始化都是由容器来完成的,在 JSP 页面中可 以直接使用 pageContext 对象。
configconfig 对象的主要作用是取得服务器的配置信息。通过 pageConext 对象 的 getServletConfig() 方法可以获取一个 config 对象。当一个 Servlet 初始化时,容器把某些信息通过 config 对象传递给这个 Servlet。开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页 面提供初始化参数。
pagepage 对象代表 JSP 本身,只有在 JSP 页面内才是合法的。 page 隐含对 象本质上包含当前 Servlet 接口引用的变量,类似于 Java 编程中的 this 指针。
exceptionexception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用,在一般的 JSP 页面中使用该对象将无法编译 JSP 文件

实现Servlet的配置和部署

  <!-- 用户登录页面数据servlet -->
  <servlet>
	<servlet-name>loginServlet</servlet-name>  
	<servlet-class>com.zking.servlet.LoginServlet</servlet-class>
  </servlet>
  <!-- 配置映射 -->
  <servlet-mapping>
  	<servlet-name>loginServlet</servlet-name>
  	<url-pattern>/loginServlet.do</url-pattern>
  </servlet-mapping>

实现Servlet处理用户请求

public class DelAdminServlet extends HttpServlet{ // 重要:继承HttpServlet类 或者实现ServletConfig接口
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	doPost(req, resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	req.setCharacterEncoding("utf-8"); // 设置编码
	resp.setContentType("text/html;charset=utf-8");
	
	PrintWriter out = resp.getWriter();

     // 以下代码处理用户请求

	int nid = Integer.parseInt(req.getParameter("nid"));
	String uname = req.getParameter("uname");
     
	//调用删除的方法
	int i = 0;
	try {
		i = new NewsDao().delete(nid);
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	if (i > 0) {
		req.getRequestDispatcher("admin/admin.jsp?uname="+uname).forward(req, resp);
	}else {
		out.print("<script>alert('删除失败');location.href="+req.getContextPath()+"'/admin/admin.jsp';</script>");
	}
}

Servlet生命周期

servlet的生命周期就是从servlet出现到销毁的全过程。主要分为以下几个阶段:
加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求处理(服务阶段)—>销毁

服务器启动时(web.xml中配置load-on-startup=1,默认为0)或者第一次请求该servlet时,就会初始化一个Servlet对象,也就是会执行初始化方法init(ServletConfig conf),该servlet对象去处理所有客户端请求,service(ServletRequest req,ServletResponse res)
方法中执行,最后服务器关闭时,才会销毁这个servlet对象,执行**destroy()**方法。其中加载阶段无法观察,但是初始化、服务、销毁阶段是可以观察到的。

public class EmpServlet extends HttpServlet{
	//初始化servlet,调用init方法
	@Override
	public void init() throws ServletException {
		System.out.println("初始化时调用");
	}
	//开启服务
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
		System.out.println("开启服务时调用");
	}
	@Override
	protected void doGet(**加粗样式**HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
	}
	//销毁时调用destory
	@Override
	public void destroy() {
		System.out.println("销毁时调用");
	}
}

Servlet的生命周期分为:加载阶段、实例化阶段、初始化阶段、服务阶段、销毁阶段。上面我们说了servlet默认是第一次被访问的时候初始化的,这种情况当用户要使用的时候才创建,也可以在服务器一启动的时候就创建好servlet(这种方式一般不用),要实现这样的操作需要进行配置,在web.xml中进行配置

请添加图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值