JSP程序运行原理、文档结构及简单输入输出实例分析 |
|
本文实例讲述了JSP程序运行原理、文档结构及pps入输出 。分享给大家供大家参考 。具体如下: 目标: 掌握Web应用的文档结构; 主要内容: 通过一个简单实例介绍Web应用的文档结构和运行原理; 实现内容:客户端验证 。 1、 文档结构 每个应用都有一个根目录,例如ch2;理论上可以放在任何地方,但是需要配置,简单的做法,直接放在了webapps这个目录下,在这个目录的应用会被自动加载 。 在WEB-INF中的配置文件是web.xml,每个web应用都会有这样一个配置文件 。 2、 运行方式 访问方式:http://192.168.0.222:8080/ch2/ch2.jsp 下面以ch2.jsp为例介绍访问过程: 1)客户端通过浏览器发送请求; 源文件Ch2.jsp的内容: DDDDDDDDDDDDDDDDDDDDDDDD 转换后的文件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 3、 无状态的请求应答模式 用户通过客户端发送请求,可以通过地址栏、超链接、按钮或者表单元素的事件请求 。不管采用什么方式发送请求,这些请求信息都会被封装成HttpServletRequest对象,服务器会把这个对象作为参数去调用页面对象,这个方法执行完会对客户端响应,之后这个HttpServletRequest对象就被删除了 。如果再次发送请求,会创建新的HttpServletRequest对象,上一次访问时候的信息都不存在了 。 4、 输入元素 输入通过表单元素完成 。常用的表单元素如下: 1)form 要提交信息,首先需要一个表单form,只有在form内的信息才可以提交 。 2)单行文本框 基本语法格式: <input type="text" name="username" value="请输入用户名"> 3)密码框 基本语法格式: 4)隐藏域 基本语法格式: 5)单选按钮 语法格式: 6)复选框 语法格式: 7)下拉列表 语法格式: 开始标识:<select name="select"> 8)多行文本域 语法格式: 9)提交按钮 <input type="submit" value="提交"> 10)重置按钮 <input type="reset" value="重置"> 11)普通按钮 也可以通过普通按钮完成表单提交,需要编写JavaScript代码 。 语法格式: 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中只需要访问这个对象即可,如何得到这个对象呢? 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程序设计有所帮助 。 |