获取客户端传递的请求参数:
加载程序、初始化、服务、销毁、卸载
刚开始运行Servlet时,会调用一次init()和service()
每一次刷新界面都会调用service(), 对用户发来的请求进行调用
关闭tomcat服务器就会显示销毁的数据
延迟5s销毁:
会重写父类中的service程序,则java程序中不在调用其他服务,只调用当前重写的service()程序(不调用doPost和doGet方法)
当没有service方法时,会根据用户的请求进行调用doGet方法和doPost方法
public void init() throws ServletException
init(ServletConfig config)
context.setAttribute("name", "nic"); String name = context.getAttribute("name");
获取初始化参数 String url = context.getInitParameter("url"); 设置配置文件 <context-param> <param-name>url</param-name> <param-value>jdbc:mysql://localhost:3306/4g</param-value> </context-param>
<init-param>
标签为servlet配置一些初始化参数。1.getInitParameter(String name): name 指定初始化参数名称的 String return 包含初始化参数值的 String
在javax.servlet.http.Cookie包中 添加cookie示例: Cookie c = new Cookie("username","peter"); //新建一个Cookie对象 c.setMaxAge(24*60*60); // 设置过期时间1天,以秒为单位 c.setMaxAge(0); // 删除这个Cookie response.addCookie(c); // 保存cookie到客户端 Cookie[] cs = request.getCookies();//获取请求中的Cookie // 获取Cookie数组 for(Cookie c : cs) 通过for来遍历
// 两层含义:第一层当没有session对象时,创建一个session对象 // 如果有了session对象,则直接使用 HttpSession session = request.getSession(true); session.getId() // 获取sessionID // 设置信息,前面是对象,后面是信息 session.setAttribute("username", "kelly"); // 获取对象信息 session.getAttribute("username"); // 利用链接查看session out.println("<br>" + "<a href=" + "ShowSession" + ">查看session</a>");
//获取类型 String type = request.getParameter("type"); // if (type.equals("redirect")) { response.sendRedirect("RequestServlet2?type=" + type); }else { RequestDispatcher rd = request.getRequestDispatcher("RequestServlet2"); //使用request获取委派对象,URL可以以‘/’开头,也可以不以‘/’开头 //使用上下文获取委派对象时,URL一定要以'/'开头 //包含,客户端得到的返回信息是两个文件共同输出的结果 rd.include(request, response); //控制权的完全转向,客户端得到的返回信息是来自于转向后文件的输出 //rd.forward(request, response); }
调用HttpServletResponse.sendRedirect方法重定向的访问后,由初始的URL地址变成重定向的目标URL; 调用RequestDispatcher.forward方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
RequestDispatcher.forward方法共享相同的request对象和response对象, 它们属于同一个访问请求和响应过程; 而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。 所以sendRedirect重定向两个servlet之间不能接收到信息,但通过session会话是可以共享的
• 标识Servlet支持文件上传 • @MultipartConfig注解 • 通过表单file控件(<input type="file" name="uploadfile">)的名字直接获取Part对象 • Part part = request.getPart("uploadfile"); • 获取提交的文件的文件名称 • part.getSubmittedFileName(); • 将文件保存到制定的本地路径 • part.write(savePath); (1)读取打开指定文件 • FileInputStream fis = new FileInputStream(filepath); • (2)根据下载的文件类型设定响应头的ContentType • response.setContentType(mimetype); • (3)设定浏览器对于文件的打开方式Content-disposition • response.setHeader("Content-disposition","inline"); • (4)获取response对象的输出流,将读取到的文件字节返回至客户端 • while(fis.read(in, 0, in.length) != -1) { • response.getOutputStream().write(in);}