在JSP中可以使用许多不同的方式生成动态内容.
选择什么方式取决于项目大小和复杂程度.
- 直接调用Java代码:将所用代码放到JSP页面中
- 间接的调用Java代码:插入需要调用类的方法
- 使用JavaBean实用工具类:使用<jsp:useBean><jsp:getProperty><jsp:setProperty>
- 使用MVC构架:Servlet处理请求,查找数据,将数据储存在JavaBean,请求转发到JSP显示
- 使用JSP表达式语言:EL表达式,简写语法访问并输出对象属性。与JavaBean、MVC一起使用
- 使用定制标签:自定义标签,用类XML标签调用标签处理器
简述
JavaBean:遵循某些简单约定的常规Java类
规则:
- 通过getXxx/setXxx访问成员变量
- 拥有一个无参构造函数
- 不含public的成员变量
- 必定为public类
优点:
- 不需要Java代码
- 对象共享更简单
- 请求参数与对象属性之间方便对应起来
使用步骤:
- page指令导入类:<% page import="packageName.className">
- <jsp:useBean/>创建实例:<jsp:useBean id="beanName" class="beanClass" scope="page"/>
- id:用于区分实例
- class:具体的JavaBean类
- scope:作用范围,默认为page
- type:类型
- <jsp:setProperty/>:设置属性<jsp:setProperty name="idName" property="propertyName" value="propertyValue"/>
- name:已创建实例的对象名
- property:属性名
- value:属性值
- <jsp:getProperty/>:获得属性<jsp:getPropety name="idName" property="propertyName"/>
- name:已创建实例的对象名
- property:属性名
注意:
- 当想使用一个已经创建的对象,可以将class属性换成type
- JavaBean区分大小写,usebean和useBean是不同的
- 属性值需要单引号或双引号
- 标签结束为/>,不是>
利用表单
- JavaBean接收表单参数
- 表单传参
- 指定:<jsp:setProperty name="beanName" property="propertyName" param="paramName"/>
- 不指定:<jsp:setProperty name="beanName" property="*"/>:接受对应参数名
注意:JavaBean会自动根据属性进行类型转换
实例:
UserBean.java
ackage jsplearn.w9;
public class UserBean {
private String username;
private String password;
private String email;
public UserBean() {
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getEmail() {
return email;
}
}
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Please input:<br>
<form action="display.jsp">
UserName:<input type="text" name="username"><br>
Password:<input type="password" name="password"><br>
Email:<input type="text" name="email"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
display.jsp
<%--
Created by IntelliJ IDEA.
User: max
Date: 2018/11/6
Time: 13:36
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="user" class="jsplearn.w9.UserBean" scope="session"/>
<jsp:setProperty name="user" property="*"/>
<html>
<head>
<title>display</title>
</head>
<body>
UserName:<jsp:getProperty name="user" property="username"/><br>
Password:<jsp:getProperty name="user" property="password"/><br>
Email:<jsp:getProperty name="user" property="email"/><br>
</body>
</html>
运行结果: