JSP运行机制
JSP容器管理JSP页面生命周期的两个阶段:转换阶段和执行阶段。当有一个对JSP页面的客户请求到来时,JSP容器检验JSP页面的语法是否正确,将JSP页面转换为Servlet源文件,然后调用javac工具类编译Servlet源文件生成字节码文件,这一阶段是转换阶段。接下来,Servlet容器加载转换后的Servlet类,实例化一个对象处理客户端的请求,在请求处理完成后,响应对象被JSP容器接收,容器将HTML格式的响应信息发送到客户端,这一阶段是执行阶段。
JavaBean
为了分离页面中的HTML代码和Java代码,一个很自然的想法就是单独编写一个类来封装页面的业务逻辑。在JSP技术中,负责完成业务逻辑的类,可以用JavaBean组件来实现。
JavaBean组件本质上就是一个Java类,只不过这个类需要遵循一些编码的约定。在JSP页面中,既可以像使用普通类一样实例化JavaBean类的对象,调用它的方法,也可以利用JSP技术中提供的动作元素来访问JavaBean。
一个标准的JavaBean组件具有以下几个特性:
(1)它是一个公开的类
(2)它有一个默认的构造方法,也就是不带参数的构造方法.
(3)它提供setXXX()方法和getXXX方法来让外部程序设置和获取JavaBean的属性。
(4)它实现java.io.Serializable或者java.io.Externalizable接口,以支持序列化。
使用三个动作元素<jsp:useBean>,<jsp:Property>和<jsp:getProperty>来访问JavaBean
举例说明:
建立一个JavaBean类:UserBean
<span style="font-size:24px;">package org.sunxin.ch09.beans;
import java.io.Serializable;
public class UserBean implements Serializable {
private String name;
private int sex;
private String education;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public String getEducation() {
return education;
}
public void setEducation(String education) {
this.education = education;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}</span>
reg.html
<span style="font-size:24px;"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>用户信息填写</title>
</head>
<body>
<form action="reg.jsp" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>性别:</td>
<td>
<input type="radio" name="sex" value="1" checked>男
<input type="radio" name="sex" value="0">女
</td>
</tr>
<tr>
<td>学历</td>
<td>
<select size=1 name="education">
<option value="" selected>...</option>
<option value="高中">高中</option>
<option value="大学">大学</option>
<option value="硕士">硕士</option>
<option value="博士">博士</option>
</select>
</td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="mail"></td>
</tr>
<tr>
<td><input type="reset" value="重填"></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html></span>
reg.jsp
<span style="font-size:24px;"><%@ page language="java" contentType="text/html; charset=GB2312"%>
<%
request.setCharacterEncoding("GB2312");
%>
<jsp:useBean id="user" scope="session" class="org.sunxin.ch09.beans.UserBean"/>
<jsp:setProperty name="user" property="*"/>
<jsp:setProperty name="user" property="email" param="mail"/>
注册成功!</span>
userinfo.jsp
<span style="font-size:24px;"><%@ page language="java" contentType="text/html; charset=GB2312"%>
<jsp:useBean id="user" scope="session" type="org.sunxin.ch09.beans.UserBean"/>
你的姓名:<jsp:getProperty property="name" name="user"/><br>
你的性别:<%
int sex=user.getSex();
if(1==sex){
out.println("男");
}else if(0==sex){
out.println("女");
}
%><br>
你的学历:<jsp:getProperty property="education" name="user"/><br>
你的E-mail:<jsp:getProperty property="email" name="user"/>
</span>
填写用户信息
注册成功:
注册成功后,信息保存到session中,访问:http://localhost:8080/userinfo.jsp
总结
JSP技术还有很多,现在只是了解了解,以后用到然后再总结。