• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > JSP程序运行原理、文档结构及简单输入输出实例分析

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

作者:老李-大连 字体:[增加 减小] 来源:互联网 时间:2017-05-11

老李-大连通过本文主要向大家介绍了jsp程序设计实例教程,jsp小程序,jsp程序,一个简单的jsp程序,简单的jsp程序等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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);
  }
 }
}

</div>

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

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="音乐">音乐
 



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-11JSP动态网站开发环境配置详细方法第1/2页
  • 2017-05-11struts2的select标签用法实例分析
  • 2017-05-11JBuilder2005实战JSP之切换控制 图文步骤
  • 2017-05-11jsp实现文件上传下载的程序示例
  • 2017-05-11在.jsp中非表单请求action的几种方式总结
  • 2017-05-11jsp要实现屏蔽退格键问题探讨
  • 2017-05-11Java中关于XML的API
  • 2017-05-11实例解析JSP中EL表达式的各种运用
  • 2017-05-11JSP中的倒数计时和自动跳转页面
  • 2017-05-11JDBCTM 指南:入门5 - ResultSet

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JSP中 Session和作用域的使用
    • jsp简单自定义标签的forEach遍历及转义字符示例
    • 成为一个成功Jsp程序员的九步
    • Spring AOP代理详细介绍
    • jsp form表单方法示例
    • 一个简单的JAVA字符集过滤器实现
    • J2SE中的序列化之继承
    • JSP简介
    • JSP实现计算器功能(网页版)
    • jdk与jre的区别 很形象,很清晰,通俗易懂

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有