javaWeb轻量级全体验_20190320

<%@ page[language=”脚本语言种类”][import=”包或类”][contentType=”MIME类型”]

[session=”true/false”][buffer=”缓冲区大小”]

[autoFlash=”true/false”][isThreadSafe=”true/false”]

[info=”text”][errorPage=”异常事件页面URL”][isErrorPage=”true/false”]%>

默认情况下,JSP文件中会自动导入如下类:

Java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*

4.session:session属性设置在jsp页面中是否需要使用session对象。如果为false,则在jsp程序中不能使用session对象以及scope=session 的 JavaBean 或EJB。此属性的默认值为true。

5.buffer

Buffer的值可以有none、8KB或是给定的kb值,值为none表示没有缓存,直接输出至客户端的浏览器中,此属性用来设定out对象缓存处理的缓冲区的大小。

  1. autoFlash

属性设置当缓冲区已满时,是否会自动刷新缓冲区。如果取值为false,当缓冲区溢出时会出现异常。

  1. isThreadSafe属性设置JSP页面是否可以多线程访问。如果值为true则此JSP页面可同时响应多个客户的请求;如果为false则在某个时刻内只能处理一个客户的请求。

4.7.2 include指令

Include指令用来在该指令处静态插入一个文件

<%@ include file=”文件路径” %>

或需要传递参数的:

  

4.8.2 forward动作:

         Forward动作指令用来重定向网页,即从当前网页的forward动作指令处转向执行另一个网页程序。

或者:

 

其中,page参数中的值是要转向的文件,可以是相对应用服务器的路径,也可以是相对当前目录的路径;如果要转向的网页是一个动态网页,如:jsp文件,则可以传递参数。

页面之间的重定向也可以使用response.sendRedirect(目的URL)方法来实现,response是JSP的内置对象。

4.8.4 useBean动作指令

其中,id参数是在JSP中这个bean组件的名称,只要是在它的有效范围内,均可使用这个名称来调用它;scope为bean的有效范围,他的取值有四种,page,request,session,application,默认情况下为page,值为page表示在当前JSP页面及当前页面所包含的静态文件中有效;

4.8.5 setProperty动作指令

这个动作指令用来设置Bean中属性的值,基本语法格式有如下四种:

第一种语法格式中,property=”*”,应用这种格式要求bean属性的名称与类型要和request对象中参数名称与类型一致,以此用bean中的属性来接受客户输入的数据,系统会根据名称来自动匹配。如果类型不一致,会根据bean中的类型进行转换。

  1. 转换为boolean ,方法为Boolean.valueOf(String str).booleanValue().
  2. 转换为Boolean,方法为Boolean.valueOf(String str)。
  3. 转换为byte,方法为Byte.valueOf(String str).byteValue().
  4. 转换为Byte,Byte.valueOf(String str)
  5. 转换为char,方法为Character.valueOf(String str).charValue().
  6. 转换为Character,方法为Character.valueOf(String str)
  7. 转换为double 方法为Double.valueOf(String str).doubleValue()
  8. 转换为Double,方法为Double.valueOf(String);
  9. 转换为int 方法为Integer.valueOf(String str).intValue()。
  10. 转换为Integer,方法为Integer.valueOf(String str)。
  11. 转换为float,方法为Float.valueOf(String str).floatValue()
  12. 转换为Float,方法为Float.valueOf(String str)
  13. 转换为long,方法为Long.valueOf(String s).longValue()
  14. 装换为Long,方法为Long.valueOf(String s)。

在同一个setProperty动作指令中不能同时存在param和value参数。

        

4.8.6 getProperty动作指令

getProperty动作指令用来获得bean的属性并将其转换为字符串,再在JSP页面中输出。使用的语法格式如下:

4.9 JSP中的中文字符处理

public String codeToString(String str){//处理中文字符串的函数

        String s = str ;

        try{

            byte tempB[] = s.getBytes("ISO-8859-1");

            s=new String(tempB);

            return s;

        }catch(Exception e) {

            return s;

        }

       

    }

05 JSP的内置对象

Jsp的内置对象在jsp页面中无须声明就可以直接使用,其中内置对象常用的有:request,response,session,application,out,config,pageContext。

  1. request 对象与HttpServletRequest类关联,是javax.servlet.ServletRequest的一个子类。用request对象可以获取客户端提交的数据,如表单中的数据,网页地址后带的参数等。
  2. response对象与HttpServletResponse类关联,可用来向客户端输入数据。
  3. session 对象与HttpSession类关联,可用来保存在服务器与一个客户端之间需要保留的数据,当客户端关闭网站(或称为系统)的所有网页时,session变量会自动清除。Http是一个无状态的协议,不保留会话之间的协议,通过session对象扩展了Http的功能。
  4. application application对象与ServletContext类关联,一旦创建(在服务器开始提供服务时,即第一次被访问时application对象就会被创建),就会一直保持直到服务器关闭服务器为止。所以application对象可用来提供一些全局的数据和对象。
  5. out 对象实际上是使用PrintWriter类来向客户端浏览器输出数据。
  6. config 对象是ServletConfig类的一个对象,是JSP配置处理程序的句柄,在JSP页面范围内有效。
  7. pageContext 用来管理属于JSP中特殊可见部分中已命名对象的访问。

 

Request对象方法:

  1. getAttribute():

此方法将参数name指定的属性值作为一个Object对象返回;如果参数name中给定的名字不存在相应的属性则返回null,调用方法如下:

public Object getAttribute(String name)

 

  1. public java.util.Enumeration getAttrbuteNames()

此方法得到一个Enumeration(枚举型)对象,其中的值为此请求中可用的属性的名称

  1. public String getCharacterEncoding()

此方法返回请求中所用的字符编码的名称,如果未指定字符编码则返回null,调用方法如下:

Public String getCharacterEncoding()

  1. public String getContentType()

此方法返回请求的MIME类型,如果类型未知则返回null

  1. public String getContextPath()

此方法得到请求URL中请求的应用上下文路径。如果当前Web应用就是Tomcat安装目录的webapps子目录中的ROOT,则getContextPath()方法会返回””;如果为其他目录,则返回相对于Web应用服务器的根目录的子目录。如果当前Web应用为webapp,则getContextPath()方法的返回值为“/webapp”

  1. public String getLocalAddr() 此方法返回接受请求的Web服务器的地址
  2. public String getLocalName() 此方法返回接受请求的Web服务器的机器名
  3. public String getMethod() 此方法得到请求所用的Http请求类型,如GET、POST、PUT等
  4. public String getParameter(String name)此方法得到请求中指令的参数值,其结果作为String,如果参数不存在则会返回null
  5. public java.util.Map getParameterMap() 此方法得到请求中所有参数的一个Map对象,其中参数名为键,字符串数组作为值  
  6. public java.util.Enumeration getParameterNames() 此方法获得所有请求参数名称的枚举
  7. public String[] getParameterValues(String name) 此方法得到所有参数值的数组,数组的内容为请求中指定参数name的多个值。如果在请求中找不到name参数则返回null
  8. public String getProtocol() 此方法返回请求所用协议的名称和版本,其形式为:协议名称/主版本号.副版本号,如HTTP/1.1
  9. public String getQueryString() 此方法返回请求URL中所包含的位于路径之后的查询字符串
  10. public String getRemoteAddr() 此方法返回发送请求的客户端IP地址
  11. public String getRemoteHost()此方法得到发送请求的客户端机器名,如果无法获得机器名则返回IP地址
  12. public String getRemotePort() 此方法获得客户端或发送请求的最后一个代理的端口号
  13. public String getRequestURI()返回请求路径URI
  14. public StringBuffer getRequestURL() 得到请求URL,包括协议、服务名、端口号和URL路径。
  15. public int getServerPort() 得到接收请求的服务器端的端口号
  16. public String getServletPath() 此方法获得当前请求URL中标识Servlet的部分,如果是JSP页面则是JSP页面的完整上下文路径
  17. public HttpSession getSession() 此方法得到与当前相关联的HttpSession对象,如果此请求还没有回话则创建一个新的HttpSession对象并返回这个对象
  18. public void removeAttribute(String name) 从请求中删除指定名称name的属性
  19. public void setCharacterEncoding() 此方法设置读取请求数据时所使用的字符编码,此方法必须在调用request的所用其他方法之前调用,其后才能再行读取参数
  20. public Object setAttribute(String name,Object attribute) 此方法将指定的属性对象attribute用名称保存于请求中
    • getParameter()获取的是客户端设置的数据。 
      getAttribute()获取的是服务器设置的数据。 
      ②getParameter()永远返回字符串 
      getAttribute()返回值是任意类型

 

既然parameter和attribute都是传递参数,为什么不直接使用parameter呢?

①服务器端不能通过setParameter(key, value)来添加参数,因为没有这个函数

所以如果需要在服务器端进行跳转,并需要想下个页面发送新的参数时,则没法实现。但是Attribute可以,可以通过setAttribute(),将值放入到request对象,然后在其他页面使用getAttribute获取对应的值,这样就达到一次请求可以在多个页面共享一些对象信息

    • parameter返回值是字符串,意味着不能传递其他的对象,如Map,List,但是attribute则可以存放任意类型的Java对象
    1. response对象

public abstract interface javax.servlet.http.HttpServletResponse extends javax.servlet.ServletResponse;

response对象的常用方法有如下一些:

      1. public void  flushBuffer() throws IOException 此方法强制将response缓冲区中的所用内容写到客户端
      2. public int getBufferSize() 此方法得到response的实际缓冲区大小,如果没有使用缓冲区则返回0。
      3. public String getCharacterEncoding() 此方法得到当前response中的字符集名称
      4. public String getContentType() 此方法获得response中所发送的MIME类型
      5. public ServletOutputStream getOutputStream() throws IOException 此方法返回一个可用于在response中写入二进制数据的输出流ServletOutputStream。在JSP页面中建议不使用这个方法,因为JSP页面中的数据文文本数据.
      6. Public PrintWriter getWriter() throws IOException 此方法返回一个可以与在response中写入文本数据的PrintWriter。在JSP页面中建议不使用此方法,因为它可能会影响Web容器的一些内在机制。
      7. Public void SendRedirect(String location) throws IOException 此方法用于进行页面重定向,参数location要导向目标地址,可以是相对路径也可以是绝对路径。
      8. Public void setBufferSize(int size)此方法设置response的响应缓冲区大小
      9. Public void setCharacterEncoding(String encoding) 设置response的响应字符编码,也就是Content-Type中的charset属性值,此方法必须在调用getWriter()方法前调用。
      10. Public void setContentType(String type) 此方法设置repsponse的Content-Type类型,如果其中包括了charset属性值,则会设置字符编码,此方法必须在调用getWriter()方法前调用。

5.3.2 使用Cookie

 Cookie是服务器发送给客户端浏览器的体积较小的纯文本信息,以后当用户访问同一个Web服务器时,浏览器会把他们发送给服务器。通过让服务器读取原先保存在客户端的信息,为浏览器提供一系列的方便。

但在安全性要求较高的场合下,建议不要使用Cookie。浏览器只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

Cookie存放在客户端,首先要新建一个Cookie,然后设置其属性,在通过response对象的addCookie()方法将其放入客户端,获取Cookie对象可调用request对象的getcookies()方法。

创建方法:Cookie(String cookieName,String cookieValue);

Cookie对象的名称和值都不能包含空白符以及下列字符:

[]()=,”/?@:

getComment()/setComment() :获取/设置Cookie的注释

getDomain()/setDomain():获取/设置Cookie适用的域

使用这两个方法可以指示浏览器把Cookie返回给同一域内的其他服务器。注意域必须以点开始(例如.sitename.com)

getMaxAge()/setMaxAge():获取/设置Cookie过期之前的时间,以秒计。如果不设置该值,则Cookie只在当前会话内有效,即在用户关闭浏览器之前有效,而这些Cookie不会保存到磁盘上。

GetName()/setName():获取/设置Cookie的名称。本质上,名称和值是需要程序员始终关心的两个部分。由于HttpServletRequest的getCookies方法返回的是一个Coolie对象的数组,因此通常要用循环语句来访问这个数组并查找特定名称,然后getValue检查它的值。

GetPath()/setPath():获取/设置Cookie适用的路径。如果不指定路径,Cookie将返回当前页面所在目录及其子目录下的所有页面。

getSecure()/setSecure():获取/设置一个booelan值,该值表示Cookie是否只能通过加密的连接(即SSL)发送。

GetValue()/setValue():获取/设置Cookie的值。名称和值实际上是程序员始终关心的两个方面。

getVersion()/setVersion():获取/设置Cookie所遵从的协议版本。默认版本0遵循原先Netscape规范;版本1遵从RFC2109,但尚未得到广泛的支持。

你可能感兴趣的:(javaweb,基础知识)