JSP初步2--4月24号学习总结

1.Action (动作指令),包含include,forward,useBean//运行期间,被请求时才会被系统编译

1)<jsp:include page="URL" flush="true" >

<jsp:param name="p_name" value=" "/>//写入参数名,值,就可以动态的传入参数

    </jsp:include>

与<%@include file="URL" /> 不同,<jsp:include ;是运行期间被请求是才会编译,前者是直接原封不动的写入到页面中,然后进行编译,两者有差别

2)<jap:forward page="URL" >

<jsp:param name=" " value=" " />

   </jsp:forward>

将一个jsp的内容传到page所指向的那个jsp或者servlet进行处理,可以设置指定的参数,URL地址不会发生改变,与后者有同一个request ,此跳转是在服务器内部进行的跳转。

区别于response.sendRedirect("URL"),这两者的作用都是跳转页面,不过这是在浏览器端进行的,当浏览器访问此页面是,它告诉浏览器直接访问要跳转的页面,故URL地址发生改变,而且是不同的request()参数

3)<jsp:useBean id="counterBean" class="bean.CounterBean" >//见下面

<jsp:setProperty name="counterBean"  property="count" value="1"/>//相当于调用里面的set方法,设置count的值

<jsp:getProperty name="counterBean" property="count" />//相当于调用get方法,并将其输出=out.println

  </jsp:useBean>

//假设一个Bean叫CounterBean.java,package在bean文件夹中,此时这句话就等于:CounterBean counter = new CounterBean();  等同于new出一个对象,名叫这个。

Bean的概念我也没搞清楚,其基本要素有:

1.必须有一个不带参数的构造器,JSP创建Bean时会调用它;

2.类中应该没有任何的公共实例变量,即不允许直接访问实例变量,而且变量名称首字母应该小写;

3.有get/set方法来读写变量的值,并且方法名称中首字母应该大写。//不推荐使用裸类,应该package进包中。

Bean有个scope属性,值可以是:Page//默认是这个,即对本页面有效;

    request //在同一个request范围内有效

   session //在相同的session中有效

  application  //在程序Tomcat运行全局内有效

Bean可以通过param指定表单元素名称,property指定对应的Bean中属性名称,从而建立了两个变量的关联,等于调用set方法,将表单数据写入Bean属性中。例:

<jsp:setProperty name="entry" property="numltems" param="numltems" /> 其中param="numltems"相当于value=<%="request.getAttrubte("numltems") " %>。

Bean还有个用法 ,用* 来设置property,将所有属性与参数关联,只当有表单页面提交到此含Bean的JSP中时,且表单中所有name属性名都与Bean中的属性名一一对应是,才可以表示每个属性都调用了set方法,设置为提交的值。例:

<jsp:useBean id="counterBean" class="bean.CounterBean" >//见下面

<jsp:setProperty name="counterBean"  property="*" />

2.JSP中的内置对象:out ,request,respone,pageContext,session,application,config,exception,page。

要求:写出常见内置对象的名称及常用方法。

1)out 写入输出流,常用的有out.print(" "),out.println(" ")//比较容易记

2)request 取得客户端的信息,常用方法:request.getParameter("String name")//获取参数的值;request.getAttribute(String name)//返回指定的name的值,如果没有则返回null;

request.sertAttribute(String name,Object o )//将一个对象绑定到指定name中,名值对的形式;request.setCharacterEncoding("UTF-8")//指定服务器穿过了的编码方式;getRemoteHost()//返回客户端的IP地址

3)response 发送给客户端的对象 ,常用方法:response.sendRedirect("URL")//让客户端访问指定的URL(跳转);response.addCookie(Cookie cookie)//将Cookie发送给客户端保存

4)session 客户端与服务器的通信方式,有一个SessionID来唯一标示,常用方法:session.getID()//返回sessionID的值;session.getAttribute(String name)//返回name的值,没有则返回null;session.setAttribute(String name,Object o)//将一个对象绑定到会话指定name中,名值对的形式;

5)application 保存服务开始运行是的所有共享信息,知道服务器关闭才会消亡,常见的方法:app.getAttribute(String name)//获得name的值;app.setAttribute(String name,Object o)//将一个对象绑定到会话指定name中,名值对的形式,会一直保存下去;

applicaton.removeAttribute(String name);  //删除绑定到application中指定名称的对象

6)待补充

3.JSP和Servlet的互相跳转。

JSP跳转Servlet,十分简单,用<jsp:forward />或者response.sendRedirect("URL"),不过要注意两者的区别,不是共享一个request。

Servlet跳转JSP,固定的方法:getServletConfig().getServletContext().getRequestDispatcher("URL").forward(req,rsp);

先得到Servlet的web.xml配置,然后拿到Servlet的上下文全局状态,最后拿到请求分发起的路径调用forward方法,跳转成功。

猜你喜欢

转载自blog.csdn.net/x3499633/article/details/70666320