web基础开发(二)

小伙伴们!昨天的课程我们已经初步了解web程序开发---jsp,并且介绍了jsp的九大内置对象,今天将继续追随着昨天脚步,继续jsp的学习,加油!!

response

response是httpservletresponse的实例,它包含了响应客户端的信息。作用域只能对本次页面的响应有效,对其他页面无效。

常用方法:


  <% 
  response.setContentType();//设置响应mime类型
  PrintWriter outer = response.getWriter();
  outer.print();
  //获取response输出对象。但是需要注意的地方是
  //和out内置对象区别,如果你同时用这两种方法输出,response的输出在
  //内置对象输出之前,除非你使用内置对象的flush();先把out输出内容强制输出到客户端。
  out.print();
  response.sendRedirect(xxx.jsp);//重定向
  %>

请求转发和请求重定向区别

请求重定向:客户端行为。 response.sendRedirect(xxx.jsp),从本质上讲,相当于两次请求,第一次请求对象不会保存,地址栏的url也会变化。

请求转发:服务器行为。  request.getRequestDispatcher().forward(),从本质上讲,相当于一次请求,第一次请求对象会保存,地址栏url不会变化。

session

session:表示客户端和服务器端的一次对话。在web应用程序可以理解为:用户浏览网页到关闭浏览器的时间。session是保存在服务器的内存中,和用户是一一对应的。

用户在多个jsp之间切换,服务器是怎么知道一个用户,就是通过session,session是保存用户状态的机制。

session是httpsession的实例。


 <% 
  long time  = session.getCreationTime();//返回session的创建时间。
  String id = session.getId();//返回session在jsp创建的时候唯一id。
  session.setAttribute(name, value);//给session对象设置属性键值对。
  session.getAttribute(name);//根据key拿对应session中的属性值。
  session.getMaxInactiveInterval();//返回两次请求间隔多长时间取消session。
  session.setMaxInactiveInterval();//设置两次请求间隔时间取消session。
  %>

session生命周期

session创建

session活动

  • 某次会话中通过超链接打开页面属于同一个会话(注意session不能超时)
  • 只要当前页面没有全部关闭,重新打开新的页面,访问该项目还是同一个会话(注意session不能超时)
  • 除非全部关闭所有的页面,在访问项目jsp,就是另外的会话(session不超时),当session超时,肯定是另外会话。

注意原来的会话,还存在旧的会话还在服务端,这个就会话是非活动的会话。除非会话设置取消时间到了,就没有。

session销毁

  1. 调用 session.invalidate();
  2. session超时,session默认超时时间30分钟。
  3. 服务器重新启动

application对象

实现数据的共享,相当于全局变量。application对象开始于服务器的启动,到服务器的关闭。

<%
  application.setAttribute(arg0, arg1);//给application设置属性
  application.getAttribute(name);//根据属性名返回对应的application的属性
%>

page对象(object)

page对象就是指向jsp本身对象,有点像javase的this,指当前对象。

常用方法:

pageContext

  • pagecontext提供了jsp页面所有对象,及名字空间访问。
  • pagecontext可以访问本页面的session和application的属性值。
  • pagecontext是页面所有功能的集大成者

常用方法:

 <%
 JspWriter jw =  pageContext.getOut();//获取客户端的输出。
 HttpSession hs = pageContext.getSession();//返回当前页面的httpsession对象。
 ject o =  pageContext.getPage();//返回当前的object对象
 ServletRequest sr = pageContext.getRequest();//返回当前页面的request对象。
 ServletResponse sr1 = pageContext.getResponse();//返回当前页面的response对象。
 pageContext.setAttribute(name, value);//给当前页面设置属性值。
 pageContext.getAttribute(name);//获取当前页面的对应的属性值。
 pageContext.forward(relativeUrlPath);//从当前页面跳转另一个页面。
 %>

config

config对象是在一个servlet初始化,他的信息包含servlet所包含的参数,以及服务器有关信息。

	config.getServletContext();//获取servletcontext对象
 	config.getInitParameter(name);//获取参数化的值
 	Enumeration EM =  config.getInitParameterNames();//获取参数名的枚举。

Exception对象

exception是一个异常对象,一个页面发生异常,就需要使用这个。如果一个jsp页面要应用此对象,必须把iserrorpage属性值设置为true,才能使用exception内置对象。

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"  contentType="text/html; charset=ISO-8859-1" isErrorPage="true"	errorPage="xxxx.jsp"//交给哪个页面去处理  %>


	exception.getMessage();//打印异常信息
  	exception.getStackTrace();//打印异常堆栈信息


经过上面的学习,jsp的九大内置对象已经学习完毕了。

javabean

javabean:就是符合某种特定规范的java类,好处是能减少代码的重复,减少冗余。

java的设计原则:

  1. 公有类
  2. 无参的构造方法
  3. 属性私有
  4. get和set方法

jsp动作元素

动作元素为请求处理阶段提供信息,动作标签遵循xml语法,有一个包含元素名的开始标签,可以有属性,内容。

   <jsp:useBean id="myuser" class="com.example.server.User" scope="page"/>

注意点:

  1. id后面就是javabean的实例。
  2. class的类名,需要从包名写起,scope是作用域。
  3. 注意jsp动作标签不需要在<%%>中。
  4. 注意jsp动作标签有开始标签也有结束标签。

setproperty(给javabean实例赋值)

   <jsp:useBean id="myuser" class="com.example.server.User" scope="page"/>
   <jsp:setProperty name="myuser" property="*"/>//自动匹配,跟表单关联
   <jsp:setProperty name="myuser" property="username"/>//给指定的属性名设置值,跟表单关联。
   <jsp:setProperty name="myuser" property="username" value="liujin"/>//手工赋值
   <jsp:setProperty name="myuser" property="username" param=""/>//跟request参数关联,这个参数是表单url跳转的action后面带的参数

需要注意的事,setproperty中name是填写javabean的实例,也就是上面javabean中的id。property后面是*,是自动匹配,如何匹配是根据你表单中提交的name属性的值,和javabean中的属性名,是否一致,如果一致,就直接调用属性的set方法。

getproperty

  <jsp:setProperty name="myuser" property="username">


name属性还是javabean的实例。property对应的是属性名。





















































































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值