JavaBean在JSP中的应用就是三个标签:
获取JavaBean的属性
在JavaBean中,为了防止外部直接对JavaBean属性的调用,通常将JavaBean中的属性设置为私有的(private),但需要为其提供公共的(public)访问方法,也就是getxxx()方法。
在jsp中可以使用Java代码创建JavaBean的实例对象,但是不推荐这样,为了降低耦合度,尽量使用
属性解释:
其中id属性可以理解为所创建的对象的名称,class属性可以理解为需要被创建对象的JavaBean类,两者组合在一起可以理解为“JavaBean类 对象名=new JavaBean类()”(特别注意:str2只能是遵循JavaBean规范的类,不可以是其它的类)
在jsp中也通常使用
属性解释:
其中property属性可以理解为JavaBean中的属性,name可以理解为JavaBean实例对象的名字,两者组合在一起相当于Java代码中的:“JavaBean类对象.getxxx()”,其中getxxx为JavaBean属性的获得方法。
实例如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> //Produce_Information.jsp
<html>
<head>
<title>Title</title>
</head>
<body>
<jsp:useBean id="produce" class="com.wjh.Test.Produce"></jsp:useBean>
<!--
该标签用于创建一个符合JavaBean规范的JavaBean实例对象,其中id属性是该对象的名称,class属性是被创建对象的类
-->
<div style="width: 500px;height: 500px; margin: 0 auto; left: 250px;">
<ul>
<li>
商品名称:<jsp:getProperty name="produce" property="name"/>
</li>
<li>
价格:<jsp:getProperty name="produce" property="price"/>
</li>
<li>
数量:<jsp:getProperty name="produce" property="count"/>
</li>
<li>
厂址:<jsp:getProperty name="produce" property="factoryAdd"/>
</li>
</ul>
</div >
</body>
</html>
package com.wjh.Test;
public class Produce { //一个符合JavaBean规范的类
/*
使用private对JavaBean的属性进行封装
*/
private String name="电池";
private double price=199.99;
private int count=100;
private String factoryAdd="广州市番禺区";
/*
JavaBean的getxxx()方法使用public修饰,使得外部可以获取其私有属性
*/
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public int getCount() {
return count;
}
public String getFactoryAdd() {
return factoryAdd;
}
}
对JavaBean属性赋值
在JavaBean中,不能通过使用“对象名.属性”直接对JavaBean属性赋值,因为它们一般都是被private修饰的,在jsp中一般使用
语法如下:
其中name属性可以理解为JavaBean对象名,property可以理解为JavaBean中的属性,两者组合在一起相当于Java代码中的“JavaBean对象.setxxx()”。
实例如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> //Produce_Information对象
<html>
<head>
<title>产品信息</title>
</head>
<body>
<jsp:useBean id="produce" class="com.wjh.Test.Produce"></jsp:useBean>
<!--
该标签用于创建一个符合JavaBean规范的JavaBean实例对象,其中id属性是该对象的名称,class属性是被创建对象的类
-->
<jsp:setProperty name="produce" property="name" value="小花花"></jsp:setProperty>
<jsp:setProperty name="produce" property="price" value="13.14"></jsp:setProperty>
<jsp:setProperty name="produce" property="count" value="520"></jsp:setProperty>
<jsp:setProperty name="produce" property="factoryAdd" value="广州市番禺区小谷围街道"></jsp:setProperty>
<!--
该标签用于给已创建的JavaBean对象中的JavaBean属性赋值的
-->
<div>
<ul>
<li>
商品名称:<jsp:getProperty name="produce" property="name"/>
</li>
<li>
价格:<jsp:getProperty name="produce" property="price"/>
</li>
<li>
数量:<jsp:getProperty name="produce" property="count"/>
</li>
<li>
厂址:<jsp:getProperty name="produce" property="factoryAdd"/>
</li>
</ul>
</div >
</body>
</html>
package com.wjh.Test;
public class Produce {
/*
使用private对JavaBean的属性进行封装
*/
private String name;
private double price;
private int count;
private String factoryAdd;
/*
JavaBean中的getxxx()方法用public,可以使外部访问JavaBean中的属性
*/
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public int getCount() {
return count;
}
public String getFactoryAdd() {
return factoryAdd;
}
/*
JavaBean中的setxxx()方法用public,可以使外部的数据传进来给JavaBean属性赋值
*/
public void setName(String name) {
this.name = name;
}
public void setPrice(double price) {
this.price = price;
}
public void setCount(int count) {
this.count = count;
}
public void setFactoryAdd(String factoryAdd) {
this.factoryAdd = factoryAdd;
}
}
解决中文乱码问题
在jsp页面中,处理中文字符经常会因为字符编码的问题出现乱码,特别是通过表单(form标签)传递中文数据时容易产生,解决方法有很多,可以通过request设置字符集等等;但这里推荐使用一个方法来处理,使需要进行传输的字符串经过这个方法。
实例如下:
package com.wjh.Test;
public class News {
private String title;
private String content;
public News(){
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package com.wjh.Test;
import java.io.UnsupportedEncodingException;
public class CharactorEncoding {
public CharactorEncoding(){
}
public String toString(String str){
String text="";
if(str!=null&&!"".equals(str)){
try {
text=new String(str.getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return text;
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %> //index.jsp
<html>
<head>
<title>index</title>
</head>
<body>
<form action="release.jsp" method="post">
<table align="center" width="450" border="1">
<tr>
<td align="center" colspan="2" height="40">
<b>新闻发布</b>
</td>
</tr>
<tr>
<td align="right">标题</td>
<td>
<input type="text" name="title" size="30">
</td>
</tr>
<tr>
<td align="right">内容</td>
<td>
<textarea name="content" rows="8" cols="40"></textarea>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="发布">
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> //release.jsp
<html>
<head>
<title>release</title>
</head>
<body>
<jsp:useBean id="news" class="com.wjh.Test.News"></jsp:useBean>
<jsp:useBean id="encoding" class="com.wjh.Test.CharactorEncoding"></jsp:useBean>
<jsp:setProperty name="news" property="*"></jsp:setProperty>
<div align="center">
<div id="container">
<div id="title">
<%=encoding.toString(news.getTitle())%>
</div>
<hr>
<div id="content">
<%=encoding.toString(news.getContent())%>
</div>
</div>
</div>
</body>
</html>
运行结果: