当前位置: 代码迷 >> Web前端 >> JAVAweb-JSP
  详细解决方案

JAVAweb-JSP

热度:1109   发布时间:2012-09-27 11:11:17.0
JAVAweb--JSP

JSP本身也是一个servlet

1.基本语法

1).html注释<!-- 注释内容 -->:

2).隐藏注释:<%-- ?--%>,这种注释JSP编译时会忽略,不会显示在客户的浏览器和源代码。这个要保密。

3).JAVA代码:

<% JAVA %>:JAVA的内容只能是申明变量,编译完成是service方法里的变量,也就是声明的变量是局部变量

可以执行类的调用

<%! %>:JAVA的内容申明变量和方法,但不能调用属性和方法;

编译完成后所声明的变量为类的一属性,方法为另一单独方法存在在类中

不能进行方法的调用

4).表达式:<%= 内容 %>,内容直接打印在页面,注意要有“;”;

编译完成后,在service中以out.println("内容");形式存在?

2.内置对象(前5个为常用的)

1).request:(常用方法均为getXXXX,获得页面传过来的信息)

request生命周期:当第二次请求时,上一次的request生命周期结束;

又重新获得request,虽然与上一个有相同的地址,但是值已经被刷新了。

**页面中如果想用setAttribute("name","value")中来进行传值,

用超链接或者是用response.sendRedirect()进行重定向跳转,值都会被刷新;

只能是用request.getRequestDischatcher("").forward(request,response);进行跳转

2).response

**request和response中所以用到的流均以二进制流进行传输

3).pageContext

.getSession();

4).session:

生命周期:

.getCreationTime();返回的时间也就是系统时间

.invalidate();取消该session,使其失效

5).application

用来展示共享的信息,相当于整个工程的全局变量

**可用来统计在线人数:session.isNew();session.get/setAttribute("")/("","");

6).out

7).config

8).page

9).exception

3.指令(page,include,taglib)

1).<%@ 指令 属性名="值" %>;属性名称大小写敏感,属性与属性之间空格隔开,不要有任何其他的符号

page:都是相对于当前页面

language="java";默认为java,不写也可以

import="";

session="";

pageEncoding="";默认是工程编码

errorPage="page-rul";处理错误异常所跳转的页面

isErrorPage="true";默认是false,这个在错误页面必须标识

2).include:在编译时可以将外部文件内容合并编译到一个servlet中

对也页面重复的内容可以写成单独的页面,然后在需要的时候在引入这个页面

**重复的head内容,应该清楚

<%@ include file="url"%>

**在JSP页面中,<%@ page pageEncoding="" %> <meta charset="">

前者是告诉编译器以神马方式编码,后者是告诉浏览器以神马编码解析文件

3).taglib:<%@ taglib uri="" prefix=""%>

4.JSP标签

jsp:useBean:一般的普通javaBean类

<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application">?

</jsp:useBean>

scope:是对使用的权限进行设置

**jsp:get/set 必须跟在一个jsp:userBean之后,而且jsp:get/set中的name与jsp:userBean中的id一样

jsp:getProperty:相当与javaBean类的get方法

<jsp:getProperty name="useBeanId" property="属性"/>

jsp:setProperty:相当与javaBean类的set方法

<jsp:setProperty name="useBeanId" property="属性" value="值"/>

jsp:include:

<jsp:include page="">

<jsp:param name="parameter" value="value" />//传递参数

</jsp:include>

***jsp:include与<%@ include file="" %>

A.前者在请求处理阶段执行引入,后者在编译阶段执行

5.EL表达式

尽量减少在页面书写JAVA表达式子

1).<%! 申明name的内容 %>

<%= "name" %> ==> ${"name"}

2).在EL表达式中,数字,字符串,布尔值和null了都可以被指定为文字值,展现出来都是一字符串

3).运算符基本相似,能识别的表达式都可以进行计算(与JavaScript中的eval(表达式)类似)

****声明好的变量需要执行ruquest.setAttribute(name,value);使用EL表达式${name}才能取得到value

****如果在内置对象中有多个同名的参数,读取顺序以下为标准进行查找,若为找到则返回null

pageContext --> request --> session --> application

4).存取器

[] :内加"",'',输出对象属性名对于的值

. ?:属性

**user["userName"] == user['userName'] == user.userName

**对于集合的List[].中为数组下标.

***牛叉的是,数组小标越界或不规范取不到值,但不会报错

**MAP操作,mapName.key.

5).隐藏对象


6.JSTL,取值都是用${}进行取,不能进行逻辑,但可以进行简单的运算

J2EE1.4之前的版本需要收到导入JAR包

配置:

<% taglib="" p%>

用途:输出值

?<c:set var="" value=""></c:set>

?<c:foreach var="" ></c:foreach>


?

****编码转码:

在地址栏中输入的内容包含参数(超连接<a href=""></a>或者是JS中的window.location.href="")

,request与response以及过滤器是不能对他进行编码的,如果当中的内容有中文,会出现乱码

Byet[] byte = request.getParameter("parameterName").getBytes("ISO-8859-1");

new String(byte,"utf-8");

或者是使用修改服务器的XML

在tomcat中的端口添加URIEncoding="utf-8"

**如果已经有对地址栏进行转码,再使用以上任一种方式,都会再次出现乱码;

因为原来的编码是以"ISO-8859-1",转换过后的编码已经不在是"ISO-8859-1",一个中文不再是原先的两个字节