Logo

郎哥编程

JavaBean应用案例

2021-10-03 615

1、 使用JavaBean解决中文乱码

在JavaWeb应用中,若客户端和服务端的字符编码不能保持一致,就会出现中文乱码现象。解决中文乱码最好的方法是保持客户端和服务端的字符编码一致,若因各种原因前后端字符编码不能保持一致,就需要在前后端进行字符编码转换。

例如前端JSP页面使用的是ISO_8859_1编码,后端存储的是UTF-8编码,当客户端向服务端提交表单时,就需要将ISO_8859_1编码转换为UTF-8编码。

案例1:编写字符编码转换JavaBean,将客户端提交GBK编码的表单数据转换为UTF-8编码。

(1)在java目录bean包下创建名称为Book的类,封装图书名称、摘要、作者信息,主要代码如下:

package com.example.bean;
public class Book {
    // 图书名称
    String  name;
    // 图书摘要
    String brief;
    // 作者
    String author;
 
    public Book() {
    }
 
    public String getName() {
        return name;
    }
 
    public String getBrief() {
        return brief;
    }
 
    public String getAuthor() {
        return author;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setBrief(String brief) {
        this.brief = brief;
    }
 
    public void setAuthor(String author) {
        this.author = author;
    }

(2)创建对字符编码进行处理的JavaBean,在bean包下新建PressEncoding类,在该类编写toUTF8()方法对字符编码进行转换。主要代码如下:

public class PressEncoding {
    // 构造方法
    public  PressEncoding(){
    }
 
    // 字符编码转换
    public String toUTF8(String str) {
        String text = "";
        // 检测str是否为NULL或空
        if( str != NULL && !"".equals(str) )
        {
            try{
                text = new String(str.getBytes(StandardCharsets.ISO_8859_1),"UTF-8");
 
            }catch (UnsupportedEncodingException e){
                e.printStackTrace();;
            }
        }
        return text;
    }
}

String对象的getBytes()方法将str编码到byte序列,String类的构造方法将byte序列按照指定的编码进行解码。

(3) 在beansample目录下创建book.jsp,放置图书信息,主要代码如下:

<form action="dobook.jsp" method="post">
    <div>图书名称:<input type="text" name="name"></div>
    <div>图书摘要:<input type="text" name="brief"></div>
    <div>作者:<input type="text" name="author"></div>
    <div><input type="submit" value="提交"></div>
</form>

(4)在beansample目录下创建dobook.jsp,对提交的图书信息进行处理。主要代码如下:

<head>
    <title>Title</title>
    <jsp:useBean id="encode" class="com.example.bean.PressEncoding"></jsp:useBean>
    <jsp:useBean id="book" class="com.example.bean.Book"></jsp:useBean>
    <jsp:setProperty name="book" property="*" />
</head>
<body>
<div>
    <div>图书名称:<%= encode.toUTF8(book.getName())%></div>
    <div>图书摘要:<%= encode.toUTF8(book.getBrief())%></div>
    <div>作者:<%= encode.toUTF8(book.getAuthor())%></div>
</div>
</body>

2、 对时间进行封装的JavaBean

JavaBean是可重用组件,它可以是一个实体对象,也可以是一个业务逻辑处理。下面编写一个对时间进行封装的JavaBean.。

案例2:编写一个封装时间的JavaBean,通过该对象可以获取当前时间,同时也可以获取今天是星期几。在JSP页面实例化该对象,显示当前时间和星期几。

(1)在项目java目录bean包下创建DateTool类,主要代码如下:

package com.example.bean;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
public class DateTool {
     // 当前时间
    String  dataTime;
    //  星期
    String  week;
    // 实例化日历对象
    Calendar calendar = Calendar.getInstance();
 
    public String getDataTime() {
        // 获取当前时间
        Date date = calendar.getTime();
        // 实例化时间格式化对象
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年mm月dd日 hh:mm:ss");
        // date对象格式化为时间字符串
        dataTime = dateFormat.format(date);
        return dataTime;
    }
 
    public String getWeek() {
        // 定义星期数组
        String weeks[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        int weekIndex = calendar.get(Calendar.DAY_OF_WEEK);
        week = weeks[weekIndex];
        return week;
    }
}

Calendar是日历对象,该对象的getTime()方法可以获取当前时间,get(Calendar.DAY_OF_WEEK)可以获取当前day是星期几。

SimpleDateFormat是时间格式化对象,可以将Date对象指定的时间格式化为我们需要的时间格式。

(2)在项目beansample目录下,建立datesample.jsp,显示当前时间和今天是星期几。主要代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <jsp:useBean id="datetool" class="com.example.bean.DateTool"></jsp:useBean>
</head>
<body>
<div>
    <div>当前时间:<jsp:getProperty name="datetool" property="dataTime"/></div>
    <div><jsp:getProperty name="datetool" property="week"/></div>
</div>
</body>
</html>


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论