Java教程

JAVAweb复习-JSP

本文主要是介绍JAVAweb复习-JSP,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.JSP基本概念和基本构成

JSP 是Java Server Pages 的缩写,是由 Sun 公司倡导、许多公司参与,于1999 年推出的一种动态网页技术标准

基本构成:

基本构成

2.jsp指令标签

JSP指令标签一共有3种:page指令,include指令,taglib指令。
语法如下:

<%@ page     属性= “值” %>
<%@ include  属性= “值” %>
<%@ taglib   属性= “值” %>

注意:“<%”与之后的“@”之间不能有空格。

(1)page指令

page指令:page 指令用来定义整个JSP页面的一些属性的值

用一个page指令指定多个属性的值
<%@ page 属性1=“值1” 属性2=“值2” …%>

  • 例如:
    <%@ page import="java.util.*" ,"java.io.*" , "java.awt.*" %>
  • 当你为import 指定多个属性值时,JSP 引擎把JSP 页面转译成的java 文件中会有如下的import 语句:
import java.util.*;
import java.io.*;
import java.awt.*;

用多个page指令指定多个属性的值

<%@ page 属性1="值1"%>
<%@ page 属性2="值2"%>
  • 例如,我们可以用page指令定义JSP 页面的contentType属性的值是“text/html;charset= utf-8 ”,这样,我们的页面就可以显示中文。如,
    <%@ page contentType="text/html;charset= utf-8 " %>

  • 其中, 属性值总是用单引号或引号双号括起来

  • 可以使用多个page 指令给属性import 几个值,但其它属性只能使用一次page 指令指定该属性一个值。如,

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.util.*", "java.awt.*" %>
  • 下列用法是错误的
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page contentType="text/html;charset=GB2312" %>

注:page 指令的作用对整个页面有效,与其书写的位置无关,但习惯把page 指令写在JSP 页面的最前面

page指令常用属性
language、import、contentType、session、buffer、auotFlush、isThreadSafe 、info、errorPage、iserrorPage

<%@ page language="java" %>
<%@ page import="java.lang.*","javax.servlet.*","javax.servlet.jsp.*","javax.servlet.http.*" %>
<%@ page contentType="text/html ; charset=ISO-8859-1" %>
<%@ page buffer= "24kb" %>
<%@ page info= "this is a sample" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>

(2)include指令

include 指令用于在 JSP 页面中静态包含一个文件
include 指令的语法如下:

<%@ include file="包含文件的路径与名称" %>

(3)taglib指令

用于导入标签库,taglib 指令的语法如下:

<%@taglib uri="标签库uri" prefix="前缀" %>

uri属性:用来指定标签库的存放位置。
prefix属性:指定该标签库必须使用的前缀。

如:

<%@taglib uri="/struts-tags" prefix="s" %>

3.jsp动作标签

动作标签是一种特殊的标签,它影响JSP 运行时的功能。JSP中6个动作为:
1.Include、2.Forward、3.UseBean、 4GetProperty、 5.SetProperty、 6.Plugin 7.Param

JSP动作的语法为:

<jsp:动作名称 属性1="属性1的值1" 属性2="属性2的值2"……/>

(1)include动作

Include动作的语法如下:

<jsp:include page="包含文件的路径与名称"/>
<jsp:include page="a.jsp" />

(2)forward动作

forword动作的语法如下

<jsp:forward page="跳转文件的路径与名称"/>
<jsp:forward page='b.jsp'></jsp:forward>

(3)useBean动作

useBean动作的语法如下

<jsp:useBean id="bean的名字" class="bean类路径与类名" scope="可用范围"/>

创建JavaBean有两种方式:

使用嵌入java代码的方式,其代码如下:
<%
reg.Register register=new reg.Register();
%>
使用useBean标签的方式,其代码如下:
<jsp:useBean id="register" class="reg.Register" scope="request"/>

(4)getProperty与setProperty动作

getProperty与setProperty动作的语法如下

<jsp:setProperty name="bean的名字" property="属性名" value="值"/>
<jsp:getProperty name=”bean的名字” propertry="属性名"/>

(5)param与params动作

param动作的语法如下

<jsp:param name= “名字” value=”指定给param 的值”>

<jsp:include page="a.jsp" >
      <jsp:param value="this is param" name="id"/>
  </jsp:include>

4.jsp内置对象

JSP内置对象

(1)request对象的常用方法

String  getParameter(String name)
- 根据键去获取request中存放对象的值。参数name就是键

String[ ] getParameterValues (String name)
- 根据页面表单中的输入控件名称获取对应的多个值,一般用于获取复选框、复选列表框等输入控件,获取里边输入的多个值;参数name表示输入控件的名称

request对象的其他方法

  1. getProtocol() 获取客户向服务器提交信息所使用的通信协议,比如HTTP/1.1等。
  2. getServletPath() 获取客户请求的JSP 页面文件的目录。
  3. getContentLength() 获取客户提交的整个信息的长度。
  4. getMethod() 获取客户提交信息的方式,比如:post 或get。
  5. getHeader(String s) 获取HTTP 头文件中由参数s指定的头名字的值,一般来说s参数可取的头名有:accept、 referer 、 accept-language 、content-type、accept-encoding、 user-agent 、host、 content-length 、 connection 、cookie 等,比如,s 取值user-agent将获取客户的浏览器的版本号等信息。
  6. getHeaderNames() 获取头名字的一个枚举。
  7. getHeaders(String s) 获取头文件中指定头名字的全部值的一个枚举。
  8. getRemoteAddr() 获取客户的IP 地址。
  9. getRemoteHost() 获取客户机的名称(如果获取不到,就获取IP 地址)。
  10. getServerName() 获取服务器的名称。
  11. getServerPort() 获取服务器的端口号。
  12. getParameterNames() 获取客户提交的信息体部分中name 参数值的一个枚举。

(2)response对象的常用方法

void setContentType (String name)
  设置作为响应生成的内容的类型和字符编码
void sendRedirect (String name)
  发送一个响应给浏览器,指示其应请求另一个URL

(3)session对象的常用方法

void setAttribute(String name,Object value)
以键/值的方式,将一个对象的值存放到session 中,参数name是键,表示一个对象的值保存在session中的时候给该值取的名字;参数value是对象名。
Object getAttribute(String name)
根据键去获取session中存放对象的值。参数name就是键,它来源于setAttribute方法中的参数name。

(4)application对象的常用方法

public void setAttribute(String name ,Object obj);
  以键/值的方式,将一个对象的值存放到application中,参数name是键,表示一个对象的值保存在application中的时候给该值取的名字;
  参数obj是对象名。如果添加的两个对象的关键字相同,则先前添加对象被清除。
public Object getAttibue(String name);
  根据键去获取session中存放对象的值。参数name就是键,它来源于setAttribute方法中的参数name。
  由于任何对象都可以添加到application对象中,因此用该方法取回对象时,应强制转化为原来的类型。

(5)out对象的常用方法

out.print(Boolean),out.println(boolean) 
  用于输出一个布尔值。
out.print(char),out.println(char) 
  输出一个字符。
out.print(double),out.println(double) 
  输出一个双精度的浮点数。
out.print(fload),out.println(float)
  用于输出一个单精度的浮点数。
out.print(long),out.println(long)
  输出一个长整型数据。
out.print(String),out.println(String) 
  输出一个字符串对象的内容。

5.forward和redirect

request.getRequestDispatcher("new.jsp").forward(request, response);   //转发到new.jsp
response.sendRedirect("new.jsp");   //重定向到new.jsp

区别:
1.数据共享方面:

  • forward:转发页面和转发到的页面可以共享request里面的数据
  • redirect:不能共享数据
    2.地址栏显示方面:
  • forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
  • redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的URL.
    3.本质区别:
    转发是服务器行为,重定向是客户端行为

6.Include指令和Include动作的区别:

在视觉效果上看,<%@ include %>指令标签,与<jsp:include />动作标签没有什么太大的差别
区别:

  • 指令执行速度相对较快,灵活性较差(只编译一个文件,但是一旦有一个文件发生变化,两个文件都要重新编译) 动作执行速度相对较慢,灵活性较高
  • 在使用时,如果是静态页面,则使用Include指令;如果是动态页面,则使用Include动作。
这篇关于JAVAweb复习-JSP的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!