• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP程序运行原理、文档结构及简单输入输出实例分析

    本文实例讲述了JSP程序运行原理、文档结构及简单输入输出。分享给大家供大家参考。具体如下:

    目标:

    掌握Web应用的文档结构;
    掌握JSP的运行原理;
    掌握JSP的简单输入和输出。

    主要内容:

    通过一个简单实例介绍Web应用的文档结构和运行原理;
    通过一个简单的注册功能介绍基本的输入输出。

    实现内容:客户端验证。

    1、 文档结构

    每个应用都有一个根目录,例如ch2;理论上可以放在任何地方,但是需要配置,简单的做法,直接放在了webapps这个目录下,在这个目录的应用会被自动加载。
    在根目录下会有一个WEB-INF目录,这个目录中的文件不能被远程访问,主要存放配置文件和类文件、资源文件。

    在WEB-INF中的配置文件是web.xml,每个web应用都会有这样一个配置文件。
    在WEB-INF有两个文件用于存放类文件和资源文件,lib和classes,lib下面存放以压缩包jar形式存在的类库,classes直接存放类文件(包含包的信息)。
    页面文件(包括jsp文件、html文件、图片文件)可以放在根目录(ch2)下面,或者下面的子文件夹(不能放在WEB-INF)中。

    2、 运行方式

    访问方式:http://192.168.0.222:8080/ch2/ch2.jsp
    前提:把Web应用部署到服务器上,启动服务器。

    下面以ch2.jsp为例介绍访问过程:

    1)客户端通过浏览器发送请求;
    2)Web服务器接收这个请求,然后转给应用服务器;
    3)应用服务器会查找客户要访问的文件,假设访问的文件为ch2.jsp;分两种情况:
    第一次访问:应用服务器把JSP文件转换成Java文件;然后编译成class文件;然后加载类;实例化对象并初始化;
    后续访问:JSP文件对应的页面对象已经存在,直接查找到这个对象;
    4)应用服务器封装请求信息,然后调用相应的方法;
    5)应用服务器把方法执行结果(响应客户的内容)传递给Web服务器;
    6)Web服务器把这个结果发给客户端;
    7)客户端浏览器把接收到的html代码解析成网页。这个就是我们看到的结果。
    下面是运行过程中的几个文件内容。

    源文件Ch2.jsp的内容:

    DDDDDDDDDDDDDDDDDDDDDDDD
    %="FFFFFFFFFFFFFFFF"%>

    转换后的文件ch2_jsp.java:

    package org.apache.jsp;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
    public final class ch2_jsp extends org.apache.jasper.runtime.HttpJspBase
      implements org.apache.jasper.runtime.JspSourceDependent {
     private static java.util.List _jspx_dependants;
     private javax.el.ExpressionFactory _el_expressionfactory;
     private org.apache.AnnotationProcessor _jsp_annotationprocessor;
     public Object getDependants() {
      return _jspx_dependants;
     }
     public void _jspInit() {
      _el_expressionfactory = JspFactory.getDefaultFactory().getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
      _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
     }
     public void _jspDestroy() {
     }
     public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {
      JspFactory _jspxFactory = null;
      PageContext pageContext = null;
      HttpSession session = null;
      ServletContext application = null;
      ServletConfig config = null;
      JspWriter out = null;
      Object page = this;
      JspWriter _jspx_out = null;
      PageContext _jspx_page_context = null;
      try {
       _jspxFactory = JspFactory.getDefaultFactory();
       response.setContentType("text/html");
       pageContext = _jspxFactory.getPageContext(this, request, response,
       null, true, 8192, true);
       _jspx_page_context = pageContext;
       application = pageContext.getServletContext();
       config = pageContext.getServletConfig();
       session = pageContext.getSession();
       out = pageContext.getOut();
       _jspx_out = out;
       out.write("DDDDDDDDDDDDDDDDDDDDDDDD/r/n");
       out.print("FFFFFFFFFFFFFFFF");
      } catch (Throwable t) {
       if (!(t instanceof SkipPageException)){
        out = _jspx_out;
        if (out != null  out.getBufferSize() != 0)
         try { out.clearBuffer(); } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
       }
      } finally {
       if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
      }
     }
    }
    
    

    返回给客户端的信息(通过浏览器的查看源文件功能可以看到):

    DDDDDDDDDDDDDDDDDDDDDDDD
    FFFFFFFFFFFFFFFF

    3、 无状态的请求应答模式

    用户通过客户端发送请求,可以通过地址栏、超链接、按钮或者表单元素的事件请求。不管采用什么方式发送请求,这些请求信息都会被封装成HttpServletRequest对象,服务器会把这个对象作为参数去调用页面对象,这个方法执行完会对客户端响应,之后这个HttpServletRequest对象就被删除了。如果再次发送请求,会创建新的HttpServletRequest对象,上一次访问时候的信息都不存在了。
    所以服务器不会保存客户端以前访问的信息,称为无状态的请求应答模式。
    接下来介绍JSP技术的基本问题:输入输出。首先看如何完成输入。

    4、 输入元素

    输入通过表单元素完成。常用的表单元素如下:

    1)form

    要提交信息,首先需要一个表单form,只有在form内的信息才可以提交。
    开始标识form>
    结束标识/form>
    主要的属性:
    action属性:是目标文件的位置,要提交给谁处理;
    method属性:请求方式,有get和post
    注意:form不能嵌套。

    2)单行文本框

    基本语法格式:

    input type="text" name="username" value="请输入用户名">
    type="text" 就说明这是单行文本框;
    name表示文本框的名字,非常重要,在服务器需要根据名字取值;
    value给出初始值。

    3)密码框

    基本语法格式:
    input type="password" name="userpass" >
    用法与单行文本框基本相同。

    4)隐藏域

    基本语法格式:
    input type="hidden" name="userpass" >
    用于在多个页面之间传值,与当行文本框的用法也基本相同。

    5)单选按钮

    语法格式:
    input type="radio" name="sex" value="男">男
    input type="radio" name="sex" value="女">女
    一组单选按钮的名字应该保持一致,这样能够保证多个选项只选择一个。
    注意:单选按纽之后显示的内容与单选按纽没有关系,只是告诉用户这个单选按纽表示什么。

    6)复选框

    语法格式:
    input type="checkbox" name="fav" value="音乐">
    input type="checkbox" name="fav" value="体育">
    同一组复选框的值也应该保持一致,可以采用统一的方式取值。

    7)下拉列表

    语法格式:

    开始标识:select name="select">
    结束标识:/select>
    下拉框中的每个选项:option value="1">显示的信息/option>
    性别下拉框:
    select name="sex">
       option value="男">男/option>
       option value="女">女/option>
    /select>

    8)多行文本域

    语法格式:
    textarea name="">sdsfsddddddddd/textarea>
    要对文本域初始化,需要把初始值放在标签的开始和结束标识之间。
    注意:这一点与其它元素通过value属性赋值是不一样的。

    9)提交按钮

    input type="submit" value="提交">
    通常不需要名字。

    10)重置按钮

    input type="reset" value="重置">
    通常不需要名字。

    11)普通按钮

    也可以通过普通按钮完成表单提交,需要编写JavaScript代码。

    语法格式:
    input type="button" value="提交" onClick="…">

    5、 输入实例:注册页面

    参考代码register.jsp:

    %@ page contentType="text/html;charset=gb2312"%>
    请注册br>
    form method="post" name="fi1" action="process.jsp">
      用户ID:input type="text" name="userid">br>
      口令:input type="password" name="userpass">br>
      确认口令:input type="password" name="userpass1">br>
      性别:input type="radio" name="sex" value="男" checked>男
         input type="radio" name="sex" value="女">女br>
      爱好:input type="checkbox" name="fav" value="运动">运动
         input type="checkbox" name="fav" value="音乐">音乐
         input type="checkbox" name="fav" value="编程">编程br>
      学历:
        select name="degree">
          option value="本科">本科/option>
          option value="硕士">硕士/option>
          option value="专科">专科/option>
          option value="博士">博士/option>
        /select>br>
      备注:
        textarea name="comment">/textarea>br>
        input type="submit" value="提交">input type="reset" value="重置">
    /form>
    
    

    该页面能够完成用户信息的提交,当用户输入和选择完之后点击提交按钮,浏览器会把这个请求发送到服务器,根据form中的action属性的值,我们知道服务器会调用process.jsp进行处理。下面介绍如何编写process.jsp来获取用户输入信息。

    6、 获取信息

    前面介绍运行原理的时候说过,客户的请求信息,包括输入的和选择的信息,都会被封装在HttpServletRequest对象中,所以在process.jsp中只需要访问这个对象即可,如何得到这个对象呢?
    在JSP中提供了若干内部对象,其中之一是request,直接使用这个对象即可。对于内部对象,我们可以直接使用,不需要声明和实例化。
    获取请求信息可以通过下面的两个方法:
    getParameter(元素名字)
    getParameterValues(元素名字)
    前者用于获取单值元素的值,例如文本框、单选按钮、密码框等。后者用于获取多值元素的值,例如复选框、允许多选的列表框。

    7、 实例:注册信息显示

    process.jsp的源文件:

    %@ page contentType="text/html;charset=gb2312"%>
    注册信息如下:
    %
      String userid = request.getParameter("userid");
      String userpass = request.getParameter("userpass");
      String userpass1 = request.getParameter("userpass1");
      String sex = request.getParameter("sex");
      // 对性别进行编码转换
      sex = new String(sex.getBytes("8859_1"));
      String[] fav = request.getParameterValues("fav");
      // 该方法用于获取多值元素的值
      String degree = request.getParameter("degree");
      String comment = request.getParameter("comment");
      out.println("用户ID:"+userid);
    %>
    br>口令:%=userpass%>
    br>确认口令:%=userpass1%>
    br>性别:%=sex%>
    br>爱好:
    %
      if(fav!=null)
      for(String s:fav)
      {
       s=new String(s.getBytes("8859_1"));
       out.print(s);
      }
    %>
    br>学历:%=degree%>
    br>备注:%=comment%>
    
    

    注:此种方式的代码(Java代码与HTML代码嵌套)不提倡,这里仅仅是为了让这个程序比较完整。但是获取值和编码转换的代码需要掌握,以后在Servlet中会用,没有什么变化。

    8、 实训:完成图书添加界面,并把用户添加的信息重新显示出来。

    希望本文所述对大家的JSP程序设计有所帮助。

    您可能感兴趣的文章:
    • JSP动态生成验证码存储在session作用范围内
    • jsp引用servlet生成的验证码代码演示
    • 用jsp页面生成随机的验证数字码示例
    • 实现jsp验证码的简单小例子
    • JSP单选按钮验证、下拉框验证、复选框验证实现代码
    • jsp 页面上图片分行输出小技巧
    • jsp 使用jstl实现翻页实例代码
    • JSP和JSTL获取服务器参数示例
    • JSP入门教程之客户端验证、常用输出方式及JSTL基本用法
    上一篇:Java Web实现的基本MVC实例分析
    下一篇:jsp简单实现页面之间共享信息的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP程序运行原理、文档结构及简单输入输出实例分析 JSP,程序,运行,原理,文档,