现在的位置: 首页 > 综合 > 正文

12-1-26进步一小点

2018年01月11日 ⁄ 综合 ⁄ 共 2278字 ⁄ 字号 评论关闭

1关于jsp的directive

在编译前的指令,在编译前就将相关内容放源码中

<%@include file="example.jsp"%>

在该句子jsp引擎会将example.jsp的完整的内容放在该处,然后在进行编译

2关于action,运行时的指令

<jsp:forward page="example.jsp"/>

表示将从当前页面跳转到example.jsp, 这里客户端的request是一成不变的,当到达example.jsp的时候,还是这个request,

于此对应的还有个response.sendRedirect("example.jsp"),

当我们访问该页面的时候,会告诉我们你自己去方面example.js,相当于我们客户端再发一个request到example.jsp

3java里面的bean

广义的就是一个类

狭义的就是满足属性的首字母是小写,有个带空参数的构造函数,具有getters setters,满足gui

在jsp中使用bean ,是不能够使用裸体类的,必须给他打包,这点很重要

下面再来说说jsp中的useBean

<jsp:useBean  id="t" class="Package.T"/>

<jsp:setProperty name="t" property="count" value="1"/>

<jsp:getProperty name="t" property="count"/>

这上面的三句话 就是一一对应J2se中T t=new T(); t.setCount(1); System.out.println(t.getCount());

这是另外一种写法,作为程序员我们推荐下面的j2se。

关于访问jsp界面,这里只需要将对应的.class放在webapps中 我们自己对应的classes中(我们自己定义的Servlet运行环境下的classes中), 如果打包了 一定要记得按包路径存放。

其他的访问按照静态界面的方法,没特殊性

下面在上面的基础上更加深层次的探讨useBean

对于<jsp:useBean  scope=>

这里的scope默认是的page, 一旦离开该页面该bean是无效的,理解为局部变量最为合适

如果是request,表示在同一请求内是有效的,我们现在将

<jsp:useBean id="t" scope="request" class="T"/>换做j2se的理解方式,我们采用更加严密的形式加以解释:

为了方便解释,我们采用的是裸体类,一般是在jsp中类是要写全的

T t=request.getAttribute("t");

if(t==null){

t=new T();

request.setAttribute("t",t);

}

上面的几句则是比较严密的等价表示,在同一个请求中,我们在一个界面中new了之后,在利用到<jsp:forward page="a.jsp"/> 这个时候

跳转到a.jsp 仍然是我们原有的request,这个时候在a.jsp中,如果也存在

<jsp:useBean id="t" scope="request" class="T"/>,首先会看看该对象是否存在,如果不存在,则我们才new,

一旦原有界面有了该对象,我们直接利用原有的对象操作相关属性。

当scope="session"的时候,上面的四句j2se中的request直接用session替换就可以,这里一定要记住,在jsp中,例如request,

session这些本来需要在servlet自己调用req.getSession(true)才可以获得的对象,在这里我们是直接可以拿起来使用

在jsp的环境中,这些对象已经为我们生成好了,我们只管拿起这些对象从里面取东西,设置东西。

此时我们唯一要担心的是这个session什么情况变化,一般是对应的ie变了 session就变了

当scope="application"的时候,此时只要我们servlet的运行环境不改变(一般不重启tomcat就行了),application是不会改变的

4学习下jsp中一些比较给力的转换,添加

<jsp:setProperty name="" property="" param=""/>这里的第三个参数param,传统都是value=""

这里设置成param=""我们可以理解为value="<%= request.getParmeter("") %>" ,一般request.getParameter()返回的是String类型  如果我们的bean类中的成员变量是非String类型, 这里填写param后,jsp则会帮我们自动把String ->我们需要的类型

<jsp:getProperty  name="" property="count">如果bean类中没有count成员变量,则jsp自动在count前面添加get组成getcount()将得到的返回值显示给我们,这点比较人性化。

补充:关于利用表单提交给指定的页面(exp.jsp)的时候,此时在exp.jsp中使用request.setCharacterEnconding("GBK")

其作用就是将表单的作为request端,其传进来的数值,先转为GBK标准的编码,再给我exp.jsp中的相关参数。

这里再补充一个关于String 的方法,也是转字符的,在new String(str.getBytes("ISO8859_1"),"GBK")

其中str.getBytes("")是按照该标准将字符串str转为对应的字节数组,然后在按照GBK这样编码标准转化为新的字符串

抱歉!评论已关闭.