JavaBean在JSP中的应用就是三个标签:标签、标签、标签。

获取JavaBean的属性

在JavaBean中,为了防止外部直接对JavaBean属性的调用,通常将JavaBean中的属性设置为私有的(private),但需要为其提供公共的(public)访问方法,也就是getxxx()方法。

标签:
在jsp中可以使用Java代码创建JavaBean的实例对象,但是不推荐这样,为了降低耦合度,尽量使用标签来进行操作,语法如下:

属性解释:
其中id属性可以理解为所创建的对象的名称,class属性可以理解为需要被创建对象的JavaBean类,两者组合在一起可以理解为“JavaBean类 对象名=new JavaBean类()”(特别注意:str2只能是遵循JavaBean规范的类,不可以是其它的类)

标签:
在jsp中也通常使用标签来获取JavaBean的属性,不是使用Java代码,语法如下:

属性解释:
其中property属性可以理解为JavaBean中的属性,name可以理解为JavaBean实例对象的名字,两者组合在一起相当于Java代码中的:“JavaBean类对象.getxxx()”,其中getxxx为JavaBean属性的获得方法。

实例如下:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> //Produce_Information.jsp
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <jsp:useBean id="produce" class="com.wjh.Test.Produce"></jsp:useBean>
  8. <!--
  9. 该标签用于创建一个符合JavaBean规范的JavaBean实例对象,其中id属性是该对象的名称,class属性是被创建对象的类
  10. -->
  11. <div style="width: 500px;height: 500px; margin: 0 auto; left: 250px;">
  12. <ul>
  13. <li>
  14. 商品名称:<jsp:getProperty name="produce" property="name"/>
  15. </li>
  16. <li>
  17. 价格:<jsp:getProperty name="produce" property="price"/>
  18. </li>
  19. <li>
  20. 数量:<jsp:getProperty name="produce" property="count"/>
  21. </li>
  22. <li>
  23. 厂址:<jsp:getProperty name="produce" property="factoryAdd"/>
  24. </li>
  25. </ul>
  26. </div >
  27. </body>
  28. </html>
  1. package com.wjh.Test;
  2. public class Produce { //一个符合JavaBean规范的类
  3. /*
  4. 使用private对JavaBean的属性进行封装
  5. */
  6. private String name="电池";
  7. private double price=199.99;
  8. private int count=100;
  9. private String factoryAdd="广州市番禺区";
  10. /*
  11. JavaBean的getxxx()方法使用public修饰,使得外部可以获取其私有属性
  12. */
  13. public String getName() {
  14. return name;
  15. }
  16. public double getPrice() {
  17. return price;
  18. }
  19. public int getCount() {
  20. return count;
  21. }
  22. public String getFactoryAdd() {
  23. return factoryAdd;
  24. }
  25. }

运行结果:
image.png

对JavaBean属性赋值

在JavaBean中,不能通过使用“对象名.属性”直接对JavaBean属性赋值,因为它们一般都是被private修饰的,在jsp中一般使用标签来对JavaBean对象的属性赋值:
语法如下:

其中name属性可以理解为JavaBean对象名,property可以理解为JavaBean中的属性,两者组合在一起相当于Java代码中的“JavaBean对象.setxxx()”。

实例如下:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> //Produce_Information对象
  2. <html>
  3. <head>
  4. <title>产品信息</title>
  5. </head>
  6. <body>
  7. <jsp:useBean id="produce" class="com.wjh.Test.Produce"></jsp:useBean>
  8. <!--
  9. 该标签用于创建一个符合JavaBean规范的JavaBean实例对象,其中id属性是该对象的名称,class属性是被创建对象的类
  10. -->
  11. <jsp:setProperty name="produce" property="name" value="小花花"></jsp:setProperty>
  12. <jsp:setProperty name="produce" property="price" value="13.14"></jsp:setProperty>
  13. <jsp:setProperty name="produce" property="count" value="520"></jsp:setProperty>
  14. <jsp:setProperty name="produce" property="factoryAdd" value="广州市番禺区小谷围街道"></jsp:setProperty>
  15. <!--
  16. 该标签用于给已创建的JavaBean对象中的JavaBean属性赋值的
  17. -->
  18. <div>
  19. <ul>
  20. <li>
  21. 商品名称:<jsp:getProperty name="produce" property="name"/>
  22. </li>
  23. <li>
  24. 价格:<jsp:getProperty name="produce" property="price"/>
  25. </li>
  26. <li>
  27. 数量:<jsp:getProperty name="produce" property="count"/>
  28. </li>
  29. <li>
  30. 厂址:<jsp:getProperty name="produce" property="factoryAdd"/>
  31. </li>
  32. </ul>
  33. </div >
  34. </body>
  35. </html>
  1. package com.wjh.Test;
  2. public class Produce {
  3. /*
  4. 使用private对JavaBean的属性进行封装
  5. */
  6. private String name;
  7. private double price;
  8. private int count;
  9. private String factoryAdd;
  10. /*
  11. JavaBean中的getxxx()方法用public,可以使外部访问JavaBean中的属性
  12. */
  13. public String getName() {
  14. return name;
  15. }
  16. public double getPrice() {
  17. return price;
  18. }
  19. public int getCount() {
  20. return count;
  21. }
  22. public String getFactoryAdd() {
  23. return factoryAdd;
  24. }
  25. /*
  26. JavaBean中的setxxx()方法用public,可以使外部的数据传进来给JavaBean属性赋值
  27. */
  28. public void setName(String name) {
  29. this.name = name;
  30. }
  31. public void setPrice(double price) {
  32. this.price = price;
  33. }
  34. public void setCount(int count) {
  35. this.count = count;
  36. }
  37. public void setFactoryAdd(String factoryAdd) {
  38. this.factoryAdd = factoryAdd;
  39. }
  40. }

运行结果:
image.png

解决中文乱码问题

在jsp页面中,处理中文字符经常会因为字符编码的问题出现乱码,特别是通过表单(form标签)传递中文数据时容易产生,解决方法有很多,可以通过request设置字符集等等;但这里推荐使用一个方法来处理,使需要进行传输的字符串经过这个方法。

实例如下:

  1. package com.wjh.Test;
  2. public class News {
  3. private String title;
  4. private String content;
  5. public News(){
  6. }
  7. public String getTitle() {
  8. return title;
  9. }
  10. public void setTitle(String title) {
  11. this.title = title;
  12. }
  13. public String getContent() {
  14. return content;
  15. }
  16. public void setContent(String content) {
  17. this.content = content;
  18. }
  19. }
  1. package com.wjh.Test;
  2. import java.io.UnsupportedEncodingException;
  3. public class CharactorEncoding {
  4. public CharactorEncoding(){
  5. }
  6. public String toString(String str){
  7. String text="";
  8. if(str!=null&&!"".equals(str)){
  9. try {
  10. text=new String(str.getBytes("ISO-8859-1"),"UTF-8");
  11. } catch (UnsupportedEncodingException e) {
  12. e.printStackTrace();
  13. }
  14. }
  15. return text;
  16. }
  17. }
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> //index.jsp
  2. <html>
  3. <head>
  4. <title>index</title>
  5. </head>
  6. <body>
  7. <form action="release.jsp" method="post">
  8. <table align="center" width="450" border="1">
  9. <tr>
  10. <td align="center" colspan="2" height="40">
  11. <b>新闻发布</b>
  12. </td>
  13. </tr>
  14. <tr>
  15. <td align="right">标题</td>
  16. <td>
  17. <input type="text" name="title" size="30">
  18. </td>
  19. </tr>
  20. <tr>
  21. <td align="right">内容</td>
  22. <td>
  23. <textarea name="content" rows="8" cols="40"></textarea>
  24. </td>
  25. </tr>
  26. <tr>
  27. <td align="center" colspan="2">
  28. <input type="submit" value="发布">
  29. </td>
  30. </tr>
  31. </table>
  32. </form>
  33. </body>
  34. </html>
  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> //release.jsp
  2. <html>
  3. <head>
  4. <title>release</title>
  5. </head>
  6. <body>
  7. <jsp:useBean id="news" class="com.wjh.Test.News"></jsp:useBean>
  8. <jsp:useBean id="encoding" class="com.wjh.Test.CharactorEncoding"></jsp:useBean>
  9. <jsp:setProperty name="news" property="*"></jsp:setProperty>
  10. <div align="center">
  11. <div id="container">
  12. <div id="title">
  13. <%=encoding.toString(news.getTitle())%>
  14. </div>
  15. <hr>
  16. <div id="content">
  17. <%=encoding.toString(news.getContent())%>
  18. </div>
  19. </div>
  20. </div>
  21. </body>
  22. </html>

运行结果:
image.png
image.png