EJSP技术—关键在于把业务逻辑的方法封装到值对象—javaBean中实现。下面两篇代码。第一个Person.java. 就是一个例子。第二个 JSP页面就是实际运用中会遇到的细节问题
package cn.hncu.jspV2.domain;
import java.util.List;
//EJB
public class Person {
private String name="abc";
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Person() {
super();
}
public Person(String name, String pwd) {
super();
this.name = name;
this.pwd = pwd;
}
////////////////业务逻辑方法//////////////////////////
//用this对象中的信息访问dao层,进行登录
public boolean login(){
if(name!=null && name.startsWith("hncu")&&
pwd!=null && pwd.length()>5){
return true;
}
return false;
}
public boolean save(){
//把this对象中的信息进行保存(注册)
//略...
return true;
}
public List<Person> getAll(){
//调用dao
return null;
}
}
<%@page import="cn.hncu.jspV2.domain.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>讲解JSP的几代开发技术</title>
</head>
<body>
<h2>JSP的第2代开发技术:JSP+EJB</h2>
<br/>
<br/>
<form action="<%=request.getContextPath()%>/jsps/v2/login.jsp" method="post">
Name:<input type="text" name="name"/><br/>
Pwd:<input type="password" name="pwd"/><br/>
<input type="submit" value="登录"/>
</form>
<hr/>
<!-- 有一些专用于对javaBean进行操作的jsp标签 -->
<h3>以下演示一些专用于对javaBean进行操作的jsp标签</h3>
<!-- 创建(声明)JavaBean,,id为我们理解的对象名 -->
<jsp:useBean id="p" class="cn.hncu.jspV2.domain.Person"></jsp:useBean>
<%//上一行等价于:
//cn.hncu.jspV2.domain.Person p = new cn.hncu.jspV2.domain.Person();
%>
<!-- 给JavaBean设置属性 -->
<!-- 下一行的作用:给名为p的JavaBean设置name属性为:张三 ,, name为我们理解的对象名-->
<jsp:setProperty property="name" value="张三" name="p"/>
${p.name}
<br/><br/>
<jsp:useBean id="u1" class="cn.hncu.jspV2.domain.User"></jsp:useBean>
<jsp:setProperty property="name" name="u1" value="李四"/>
<!--JavaBean中Integer类型的属性,直接用字符串格式去赋值,内部会自动帮我们转换成Integer的 -->
<jsp:setProperty property="age" name="u1" value="30"/>
<!-- 这种方式不行
< jsp:setProperty property="birth" name="u1" value="2017-07-18"/ >
-->
<!-- String与基本数据类型的属性赋值,我们只要给字符串格式就行,jsp标签会帮我们自动转换的。
其它的复杂类型如Date,不行!,对这种情况,我们得在javaBean自己手写代码转换,把对应属性的setter-getter方式写成面向String处理 -->
<!--注意,jsp底层是通过下面的property推测出对应的setter-getter方法名,而且进行调用。因此这里property的取值要根据bean中的setter-getter方法名反推,若直接用bean的属性名来赋可能会出问题 -->
<jsp:setProperty property="birthday" name="u1" value="2008-07-08"/>
输出u1-bean的信息: ${u1.name},${u1.age},${u1.birthday}<br/>
${u1}
<hr/>
<h2>以下讲解javaBean的作用域和 接收表单参数技术</h2>
<!-- 作用域:默认放在page(代表pageContext)中,,当然我们也可以指定放在request,session或application容器中,通过给scope属性赋值 -->
<jsp:useBean id="u2" class="cn.hncu.jspV2.domain.User" scope="request"></jsp:useBean>
<%
User uu = (User) pageContext.getAttribute("u2", PageContext.PAGE_SCOPE );
out.println("uu:"+uu);
//User uu2 = (User) request.getAttribute("u2");
User uu2 = (User) pageContext.getAttribute("u2",PageContext.REQUEST_SCOPE); //等价于上一句,,还可用常量:SESSION_SCOPE,APPLICATION_SCOPE
out.println("<br/>uu2:"+uu2);
%>
<br/>
<h3>以下表单用于演示: 用jsp标签接收表单参数</h3>
<form action="<%=request.getContextPath()%>/jsps/v2/login2.jsp" method="post">
Name:<input type="text" name="name"/><br/>
Pwd:<input type="password" name="pwd"/><br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>