JSP初学者3

reponse代表服务器对客户端的响应。大部分时候,程序无须使用response来响应客户端请求,因为有更简单的响应对象——out,它代表页面输出流。 但out无法响应生成非字符内容(out是JspWriter的实例,JspWriter是Writer的子类,writer是字符流)

response是HttpServletResponse接口的实例,该接口提供了一个getOutputStream()方法,该方法返回响应输出字节流。

getOutputStream() has already been called for this response异常出现的原因和解决方法: jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的原因。

解决方案,添加如下代码: out.clear();  out = pageContext.pushBody();

重定向是response的另一个用途,与forword不同,重定向会丢失所有的请求参数和request范围的属性,因为重定向会生成第二次请求,与前一次请求不在 同一request范围内 HttpServletResponse提供了一个sendRedirection(String path)方法,该方法用于重定向到path资源

增加Cookie也是使用response内置对象完成的,  void addCookie(Cookie cookie) 增加cookie的步骤:1)创建Cookie实例,Cookie的构造器为Cookie(String name,String value); 2)设置Cookie的生命周期;3)向客户端写Cookie

session对象代表一次用户对话,通常用于跟踪用户的会话信息,是HttpSession的实例,常用方法: setAttribute(String attName,Object attValue):设置session范围内attName属性的值为attValue getAttribute(String attName): 返回session范围内attName属性的值

session机制通常用于保存客户端的状态信息,这些状态信息需要保存到web服务器的硬盘上,所以要求session里的属性值必须是可序列化的,否则将会引起不可序列化的异常。

Servlet和JSP的区别在于: 1)Servlet中没有内置对象,原来JSP中的内置对象都必须有程序显式创建 2)对于静态的HTML标签,Servlet都必须使用页面输出流逐行输出

Servlet是个完整的java类,这个类的service()方法用于生成对客户端的响应

为了让Servlet能响应用户请求,还必须将Servlet配置在Web应用中。 从Servlet3.0 开始配置Servlet有两种方式:1)在Servlet类中使用@WebServlet Anonotation进行配置 ;2)通过在web.xml文件中进行配置

创建Servlet实例有两种时机: 1)客户端第一次请求某个Servlet时,系统创建该Servlet的实例 2)web应用程序启动时立即创建Servlet实例,即load-on-startup Servlet   形式为: @WebServlet(loadOnStartup=1)

配置Servlet时,还可以增加额外的配置参数,可以实现提供更好的可移植性,避免将参数以硬编码方式写进程序代码里 为Servlet配置参数有两种方式: 1)通过@WebServlet的initParams属性来制定 2)通过web.xml文件的<servlet.../>元素中添加<init-param.../>子元素来指定 访问Servlet配置参数通过ServletConfig对象完成,该对象提供方法:String getInitParameter(java.lang.String name) :用于获取初始化参数

 

你可能感兴趣的:(jsp)