JSP--Java server Pages

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")( Objec t类型)( 保存的是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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值