JSP基础

2021-01-24 01:29

阅读:617

YPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

标签:print   刷新   html   定位   实例   初始   ref   option   show   

一、什么是JSP
 
  JSP是由Sun公司倡导、许多公司参与而建立的动态网页技术标准。它在HTML代码中嵌入java代码片段(Scriptlet)和JSP标签,构成了JSP网页。在接收到用户请求时,服务器会处理java代码片段,然后生成处理结果的HTML页面返回给客户端,客户端的浏览器将呈现最终页面效果。
 
二、JSP技术特征
 
  1、跨平台
  2、业务代码分离
  3、组件重用(javabean)
  4、继承 Java Servlet功能
  5、预编译
 
三、page指令
 
1、language属性
  用于设置JSP页面使用的语言,目前只支持java语言,以后可能会支持其他语言,该属性默认值是java
2、extends属性
  用于设置 JSP页面继承的 Java类,所有 JSP页面在执行之前都会被服务器解析成 Servlet,而 Servlet是由 Java类定义的,所以 JSP和 Servlet都可以继承指定的父类。该属性并不常用,而且有可能影响服务器的性能优化。
3、import 属性
  用于设置 JSP导入的类包。JSP 页面可以嵌入 java代码片段,这些java代码在调用 API时需要导入相应的类包。
4、pageEncoding属性
  用于定义 JSP页面的编码格式,也就是指的文件编码。 JSP页面中的所有代码都使用该属性指的的字符集,如果该数据值为ISO-8859-1,那么这个jsp页面就不支持中文字符。通常设置编码格式为 GBK 或 UTF-8
5、contentType属性
  用于设置 JSP 页面的 MIME类型和字符编码,浏览去会据此显示网页内容。
 

    pageEncoding="UTF-8"%> 
 
 
 
 
Insert title here 
 
 
    这是我保存的jsp页面 
 
  12345678910111213
 
四、include指令
 
  该指令用于文件包含。该指令可以在 JSP页面中包含另一个文件的内容,但是它仅仅支持静态包含,也就是说被包含文件中的所有内容都被原样包含到该 JSP 页面中;如果被包含文件中有代码,将不被执行。被包含的文件可以是一段java代码、HTML代码或者是另一个 jsp页面。
一个index.jsp
 

    pageEncoding="UTF-8"%> 
 
 
 
 
Insert title here 
 
 
    当前的日期是: 
   
 
  1234567891011121314
一个date.jsp
 
 

    pageEncoding="UTF-8"%> 

    Date now=new Date(); 
    String dateStr; 
    dateStr=String.format("%tY年%tm月%td日", now, now,now); 
%> 
  1234567891011
 
五、taglib指令
 
  该指令用于加载用户自定义标签,使用该指令加载后的标签可以直接在 JSP 页面中使用。其语法格式为:
 
     
 
六、java代码块
 
实现九九乘法表
 

    pageEncoding="UTF-8"%>




Insert title here


   
        long startTime=System.nanoTime();
        for(int i=1;i
            for(int j=1;j
                String str=j+"x"+i+"="+(i*j);
                out.print(str+"&nbsp");
            }
            out.print("
");
        }
        long endTime=System.nanoTime()-startTime;
        /* out.println(endTime); */
    %>
    生成九九乘法表,用时毫秒

1234567891011121314151617181920212223242526
 
七、JSP表达式
  JSP表达式可以直接把JAVA的表达式结果输出到JSP页面中。表达式的最终运算结果将被转换为字符串类型,因为在网页中显示的文字都是字符串,JSP表达式的语法格式为:(比如圆周率)
 
1
具体实例代码:
 
%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  --%>

    public String add(int a,int b){
        return ""+(a+b);
    }
%>  




Insert title here


    圆周率是:
   
   
   
   

123456789101112131415161718192021222324252627
 

八、获取请求参数值
语法:String request.getParameter(String parameter)
 
String request.getParameter(String parameter)1
实例演示:从show.jsp获取index.jsp页面中的id值
index.jsp
 

    pageEncoding="UTF-8"%>




Insert title here


    获取id的值

show.jsp
 

    pageEncoding="UTF-8"%>




Insert title here


 id的值为:
 

 name的值为:

1234567891011121314
运行结果为:
      id的值为:001 
  name的值为:null
 
 
九、获取Form表单信息
语法
 
String[] request.getParameterValues(String parameter)
具体实例演示
index.jsp
 

    pageEncoding="UTF-8"%>




Insert title here


   

        请输入用户姓名:

        选择性别:
       
       

        密码提示问题
       
           
           
       
       

        请输入问题答案:

        请选择个人爱好:
        唱歌跳舞
        户外登山
        网上冲浪
       

       
   

show.jsp
 

    pageEncoding="UTF-8"%>




Insert title here


用户名:


性别:


密码提示问题:


问题答案:


个人爱好:
    String[] like=request.getParameterValues("like");
    for(int i=0;i
        %>
       
       
    }
%>

运行结果为:
  
点击提交按钮之后:
    
 
 
十、获取请求客户端信息
 
request对象获取请求客户端信息
 

  方法
  返回值
  说明
 
  getHeader(String name)
  String
  返回指定名称的Http头信息

  getMethod()
  String
  获取客户端服务器发送请求的方法

  getContextPath()
  String
  返回请求路径

  getProtocol()
  String
  返回请求使用的协议

  getRemoteAddr()
  String
  返回客户端地址

  getRemoteHost()
  String
  返回客户端主机名称

  getRemotePort()
  int
  返回客户端发出请求的端口号

  getServletPath()
  String
  返回接受客户提交信息的页面

  getRequestURI()
  String
  返回部分客户端请求的地址,不包括请求的参数

  getRequestURL()
  StringBuffer
  返回客户端请求地址
 

实例演示:
创建客户端client.jsp
 

    pageEncoding="UTF-8"%>




Insert title here


   

           
  • 客户端使用协议:

  •        
  • 客户端发送请求方法:

  •        
  • 客户端请求路径:

  •        
  • 客户端IP地址:

  •        
  • 客户端主机名称:

  •        
  • 客户端端口号:

  •        
  • 接收客户信息的页面:

  •    

    运行结果为:
      客户端使用协议:HTTP/1.1
      客户端发送请求方法:GET
      客户端请求路径:/MyWebTest
      客户端IP地址:0:0:0:0:0:0:0:1
      客户端主机名称:0:0:0:0:0:0:0:1
      客户端端口号:4999
      接收客户信息的页面:/index.jsp
     
     
     
    十一、在作用域中管理属性
     
    request对象在作用域中管理属性
      语法
     
    Object request.setAttribute(String name,Object value)  1
    比如:
      request.setAttribute(“date”,new Date());//添加一个属性
    演示代码:
     


        pageEncoding="UTF-8"%>




    Insert title here


       
       

             
    • 获取date属性:

    •        

             
             
             
    • 删除之后获取date属性:

    •    

      运行结果为:
        获取date属性:Sun May 20 10:10:39 CST 2018 
        删除之后获取date属性:null
       
       
      十二、cookie管理
       
        cookie是小段的文本信息,通过使用cookie可以标识用户身份、记录用户名及密码、跟踪重复用户。cookie在服务器生成并发送给浏览器,浏览器将cookie的key/value保存到某个指定的目录中,服务器的名称与值可以有服务器端定义。
        通过cookie的getCookies()方法可以获取到所有的cookie对象集合,然后通过cookie对象的getName()方法获取到指定名称的cookie,再通过getValue()方法即可获取到cookie对象的值。另外,将一个cookie对象发送到客户端使用了response对象的addCookie()方法。
      实例演示:
        在index.jsp中读取cookie,在show.jsp中添加cookie
      index.jsp
       


          pageEncoding="UTF-8"%>




      Insert title here


         
         
              String welcome="第一次访问";
              String[] info=new String[]{"","",""};
              Cookie[] cook=request.getCookies();
              if(cook!=null){
                  for(int i=0;i
                      if(cook[i].getName().endsWith("abcCookInfo")){
                          info=cook[i].getValue().split("#");
                          welcome="欢迎回来!";
                      }
                  }
              }
          %>
         
         
         
         

              姓名:

              生日:

              邮箱:
             
         

      show.jsp
       

          pageEncoding="UTF-8"%>




      Insert title here


       
          String name=request.getParameter("name");
          String birthday=request.getParameter("birthday");
          String email=request.getParameter("email");
          /* 将这三个值写到cookie里,也即是添加cookie*/
          Cookie myCookie=new Cookie("abcCookInfo",name+"#"+birthday+"#"+email);
          response.addCookie(myCookie);
       %>
         

               
      • 姓名:

      •        
      • 生日:

      •        
      • 邮箱:

      •        
      • 返回

      •    

        运行结果为:
         
         

        十三、response对象
         
        response对象常用方法
         

          方法
          返回值
          说明
         
          addHeader(String name,String value)
          void
          添加HTTP文件头,如果同名的头存在,则覆盖

          setHeader(String name,String value)
          void
          设定指定名称的文件并头的值,如果存在则覆盖

          addCookie(Cookie cookie)
          void
          向客户端添加一个cookie对象

          sendError(int sc,String msg)
          void
          向客户端发送错误信息。例如:404网页找不到

          sendRedirect(String location)
          void
          发送请求到另一个指定位置

          getOutputStream()
          ServletOutputStream
          获取客户端输出流对象

          setBufferSize(int size)
          void
          设置缓冲区大小
         

        1、重定向
          重定向是通过使用sendRedrect()方法,将响应发送到另一个指定的位置进行处理
          比如:
            response.sendRedirect(“www.baidu.com”);
        2、处理HTTP文件头
          setHeader()方法通过两个参数–头名称与参数值的方法来设置HTTP头文件。
          比如:
         
        设置网页每5秒自动刷新一次
        response.setHeader("refresh","5");
        设置2秒钟后自动跳转至指定的页面
        response.setHeader("refresh","2;URL=welcom.jsp");1234
         
         
        十四、session对象
         
          session是与请求有关的会话对象,是java.servlet.http.HttpSession对象,用于保存和存储页面的请求信息。
          session对象的setAttribute()方法可以实现将信息保存在session范围内,而通过getAttribute()方法可以获取保存在session范围内的信息。
        示例:
         
        String sessionMessage="session练习";
        session.setAttribute("message",sessionMessage);

        String message=(String)session.getAttribute("message");
        out.print("保存在session范围内的值为:"+message);123456

        移除指定的绑定对象
          removeAttribute(String key)
          
        销毁session
          session.invalidate();
         
         
        十五、application对象
         
          application对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象的声明周期更长,类似于“全局变量”。
          
        application对象的常用方法
         

          方法
          返回值
          说明
         
          getAttribute(String name)
          Object
          通过关键字返回保存在application对象中的信息

          getAttributeNames()
          Enumeration
          获取所有application对象使用的属性名

          setAttribute(String key,Object obj)
          void
          通过指定的名称将一个对象保存在application对象中

          getMajorVersion()
          int
          获取服务器支持的Servlet版本号

          getServerInfo()
          String
          返回JSP引擎的相关信息

          removeAttribute(String name)
          void
          删除application对象中指定名称的属性

          getRealPath()
          String
          返回虚拟路径的真实路径

          getInitParameter(String name)
          String
          获取指定name的application对象属性的初始值
         

        程序演示:
        在web.xml中配置


          MyWebTest
         
            url
            localhost:3306
         
         
            name
            root
         
         
            password
            123456
         

         
            index.html
            index.htm
            index.jsp
            default.html
            default.htm
            default.jsp
         
        在index.jsp中获取application的初始值


            pageEncoding="UTF-8"%>




        Insert title here


           
               
                    String url=application.getInitParameter("url");
                    String name=application.getInitParameter("name");
                    String password=application.getInitParameter("password");
                    out.println("URL:"+url);
                    out.println("Name:"+name);
                    out.println("P


        评论


        亲,登录后才可以留言!