您的位置:首页 > 编程语言 > Java开发

JSP--Java server Pages

2017-10-10 05:40 369 查看
JSP--Java server Pages
本身就是一个servlet
直接在HTML中内嵌Java代码
JSP程序由Servlet Engine先将其转换成Servlet代码,接着将它编译成类文件载入执行
只有当客户端第一次请求JSP时,才需要将其转换和编译
request.getAtrribute("name") 和 request.getParameter(“name”)的区别:
request/response/session/application理解为一个存放name-value对的容器
request.getAtrribute("name")(Object类型)(保存的是name-value对
request.getParameter(“name”)(String类型)(接收传递的参数
JSP传统语法:
(servlet只有一个实例,init()初始方法只有在第一次接收请求时执行一次)
Declaration:声明

<%!

int count=0; (成员变量)

void m(){} (声明成员方法可行)

%>

任意的<%! %>中的代码在最外层类块内

Scriptlet:小程序段

<%

int count=0;(局部变量)

oid m(){} (不可行,<%%>本身就是一个成员方法,不能在方法里面声明方法)

%>

Expression:表达式

<%= count %> (输出变量count的值到浏览器)

=后面必须是字符串变量或者是可以被转换成字符串的表达式

不需要;结束
任意的<%= %>和<% %>中的代码在同一个方法_jspService内

Comment:注释

<!-- html注释 --> (浏览器可以看见)

<%-- jsp注释1 --%> (浏览器不能看见,目的给程序员自己看的)

<%

// jsp注释2(浏览器不能看见)

/*

jsp注释3(浏览器不能看见)

*/

%>

Directives:(编译指令) 在编译期间的指令 程序还未开始运行

指明与JSP Container的沟通方式,编译期间指明这个页面的特定
<%@ page

language="java"

import="java.util.Data"

errorPage="a.jsp" //出错以后会在显示的页面内容(出错后显示a.jsp页面)

isErrorPage="true|false" //当期页面是不是一个显示出错的页面

contentType="text/html;charset=gb2312" //当前页面的内容类型
%>

<%@include file="fileURL" %>

首先把另外一个文件的内容原封不动的放进来然后在继续编译整个文件
限制:不能向fileUR中传递参数
不能abc.jsp?user=aaa

Action:(动作指令
在运行期间的指令--没有百分号|%
<jsp:useBean>

可以在JSP中使用已经定义好的Bean

Bean的基本要素:(Bean不要使用裸体类,应放到package里)

必须有一个不带参数的构造器。在JSP元素创建Bean时会调用空构造器

Bean类没有任何的公共实例变量(成员变量的访问修饰符是private)。变量名首字母小写

设置(public)的getter/setter来读/写成员变量的值

格式:

<jsp:useBean

id="beanName" //(对象实例)

class="package BeanClass" //(Bean类名称)

type="typeNmae" //可以是父类或本类一般用法(父类引用指向子类对象)type="java.lang.Object"

scope="page|request|session|application" //(作用范围)

/>

<jsp:useBean id="cb" calss="bean.CounterBean"/>

相当于

<%@page import="bean.CounterBean"%>

<% CounterBean cb= new CounterBean(); %>

<jsp:>

<jsp:setProperty>

<jsp:getProperty>

<jsp:useBean id="cb" calss="bean.CounterBean">

<jsp:setProperty name="cb" property="count"

value="<%=request.getParameter("proName")%>"/>

<jsp:setProperty name="cb" property="count"

param="proName"/> (类型自动转换)

<%-- <%cb.setCount(23);%> --%>

通过*号来设置所有属性名称与form表单传递的参数的名称相同的属性值

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

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

<%-- <%= cb.getCount()%> --%>

<jsp:useBean />

request.setCharacterEncoding("GBK");
requset传递参数过来,先把request里面的参数转换成GBK格式
提交---设置提交的值
检查乱码:在提交值和设置值之前打印出检测的值
转码:(前提是知道原先的编码)

String name = request.getParameter("name");

<%= new String(name.getBytes("IS08859-1"), "GBK")%>
<jsp:include>

用于动态包含JSP或HTML文件等

除非这个指令会被执行到,否则它是不会被Tomcat等JSP Engine编译

格式:(可以传递参数)

<jsp:include page="URLSperc" flush="true"/>

<jsp:include page="URLSperc">

<jsp:param name="paramName" value="ParamValue"/> //参数传值

</jsp:include>
和编译指令<%@include file="URL"%>的区别:

<jsp:include page="url">是运行期间被执行了才会被动态编译包含;能传递参数

<%@include file="url"%>是编译期间就被编译包含;不能传递参数

<jsp:forward>(页面跳转)

用于将一个JSP的内容送到page所指定的JSP程序或者Servlet中处理(URL)

格式:

<jsp:forward page="URL" flash="true"/>

<jsp:forward page="URL">

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

</jsp:forward>

<jsp:forward page="url">和response.sendRedirect("“url”)的区别:

<jsp:forward page="url">使用同一个request(只有一次请求)

response.sendRedirect("url")是两个不同的request(有两次不同的请求)

response.sendRedirect("URL");(页面重定向跳转)
内置对象 :(9个)
JSP常用的内置对象已经常用方法(不带横线的就是)

out:println(); write() newLine();(输出一个换行符)

request:getParameter("name");getParameterNames(); getParameterValues();

response:addCookie(); addHeader();sendError(int 404);(错误码)sendRedirect();setContentType(“text/html;charset=utf-8”);

pageContext:(页面的运行环境)编译之后放到某个地方去运行,那个地方就是pageContext

session:setAttribute(Stirng name, Object value); (Object类型) getAttribute(String name); boolean isNew();

application:对应的方法是--ServletContext setAttribute(Stirng name, Object value); (Object类型) getAttribute(String name); boolean isNew();

config:web.xml文件

exception:

page:当前页面
Servlet和JSP的通信:

从JSP调用Servlet:

<jsp:forward page="url">

response.sendRedirect("url");

从Servlet调用JSP:(HttpServlet) this.getServletConfig().getServletContext().getRequestDispatcher("url").forward|include(req, resp);

response.sendRedirect("url");
JSTL
EL
taglib
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: