做第一个javabean就遇到了一个棘手的编码问题,哈哈,终于在大家的共同研究之下吧问题给解决了,这里做个小结,以便以后借鉴~!!
首先来看看我这个javabean购物车所牵涉到得文件:
carts.html
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<form action="carts.jsp" method="post">
请选择:
<select name="item">
<option>红糟肉5</option>
<option>香喷鸭杂5</option>
<option>荔枝肉5.5</option>
<option>秋刀鱼5</option>
<option>咖喱鸡饭65</option>
</select>
<input type=submit name="submit" value="add">
<input type=submit name="submit" value="remove">
</form>
注意,这里最上面加了一个meta用来设置编码格式
然后 carts1.html
<form action="carts.jsp" method="post">
请选择:
<select name="item">
<option>红糟肉5</option>
<option>香喷鸭杂5</option>
<option>荔枝肉5.5</option>
<option>秋刀鱼5</option>
<option>咖喱鸡饭65</option>
</select>
<input type=submit name="submit" value="add">
<input type=submit name="submit" value="remove">
</form>
这个carts1与carts不同的是没没有那个编码设置
再来看carts.jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'carts.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="mycarts" scope="session"
class="com.mycompany.bean.MyCarts" />
<jsp:setProperty name="mycarts" property="*" />
<%mycarts.processRequest(request);%>
<h5>
你的购物车:
</h5>
<hr />
<%--显示购物车中的商品--%>
<%
String[] items =mycarts.GetItems();
for(int i=0;i<items.length;i++)
{
out.println("<li>"+items[i]+"</li>");
}
%>
<hr />
<jsp:include page="carts1.html" />
</body>
</html>
注意,include操作使用的是carts1.html而不是carst.html如果include使用carts.html就会出现编码问题.
下面来看我的javabean
package com.mycompany.bean;
import javax.servlet.http.*;
import java.io.UnsupportedEncodingException;
import java.util.Vector;
import java.util.Enumeration;
public class MyCarts
{
Vector v =new Vector();
String submit=null;
String item=null;
private void addItem(String name)
{
if(name!=null)
{
v.addElement(name);
}
}
private void deleteItem(String name)
{
if(name!=null)
{
v.removeElement(name);
}
}
public void setItem(String s)
{
this.item=s;
}
public void setSubmit(String s)
{
this.submit=s;
}
public String[] GetItems()
{
//创建一个数组
String[] str =new String[v.size()];
v.copyInto(str);
return str;
}
//处理用户的请求
public void processRequest(HttpServletRequest request)
{
//表示用户回车添加商品
if(submit==null)
{
addItem(item);
}
if(submit.equals("add"))
{
addItem(item);
}
if(submit.equals("remove"))
{
deleteItem(item);
}
reset();
}
//当一次请求结束时,清空变量
private void reset()
{
submit=null;
item=null;
}
}
没有特殊的地方,这里就不做解释了!
通过这个实例,我想说明几点:
一:首先我们必须要把各个页面的编码设置成统一格式,jsp一般都是utf-8,那又在那里设置呢?答案是在你的.jsp页面或.html右键单击,选择"References",如果你在jsp页面上单击的就选择"java",如果你在html页面上单击就选择"html",选择后你就会看到一个编码下拉框,这时你选择第一个(utf-8) 就可以了,所有向关联的页面都要这个统一设置哈!
二:当我这样设置后,还是解决不了问题,然后我就在.jsp页面的<body> 下方加入如下代码:
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%>
三:到此,问题解决了90%,还有一个问题没有解决,这就是为什么我要做两个html页面分别是carts.html 和 carts1.html 。其中,carts.html是启动显示页面,而carts1.html是用来嵌入carst.jsp页面的,因为这个页面的顶上没有设置编码,如果设置了编码又被嵌入到carts.jsp就会出现乱码了,因为carts.jsp被设置了两次编码了,我不知道是ub是这个原因,但我把carts1.html嵌入后就不会有乱码出现了。
还有一个问题,就是我在carts.html中加入了一个meta设置编码格式,这个也是必须加的,如果不加传递到javabean里的内容就不是utf-8编码了,当然显示出来就会是乱码了哈~!!!
所能总结的就是这么多了~~如果有没有提到的还希望大家提出!!!
分享到:
相关推荐
Java Web应用开发 45 课堂案例-应用JavaBean实现编码转换.docx 学习资料 复习资料 教学资源
javabean添加删除修改代码,在页面中实现,可以直接使用,自己注意不要出现乱码问题
问题描述:存在一个JavaBean,它包含以下几种可能的属性: 1.boolean/Boolean 2.int/Integer 3.String 4.double/Double 属性名未知, 现在要给这些属性设置默认值, 以下是要求的默认值:String类型的默认值为字符串 ...
主要介绍了javaBean的基础知识及常见乱码解决方法的相关资料,需要的朋友可以参考下
JavaBean技术基础知识,编码规则,JSP中如何使用javaBean。
简单的jsp与Javabean例子,介绍了设置属性和得到属性的方法,以及如何解决乱码
jsp与servlet文件上传代码,可以上传中文文件名,不乱码 jsp与javaBean文件上传代码,但上传中文文件名乱码 刚写完的。
jsp的标准动作的用法,适合初学者,里头含有他人关于中文乱码的 总结,实验报告加源代码掌握如何操作session对象,会使用session相关的属性和方法,Map、Set对象的用法。;利用session实现购物车功能。
本系统基于Java平台,采用设计模式:MVC(模型--视图--控制),采用的技术:Jsp+JavaBean+Struts+JDBC,数据库:MySQL Struts采用Struts 1.2 版本,MySQL采用MySQL5.0 系统特色: 1,栏目无限级分类,形成树型结构,可以...
jsp的标准动作的用法,适合初学者,里头含有他人关于中文乱码的总结,实验报告加源代码
核心:解决了日期格式转化和导出XML中文乱码问题 介绍:有时候,我们需要把javabean的内容保存到文件,或者通过网络传递。这时候,把javabean转化为xml是一个常用的方式。但java本身提供的操作xml的方式有些麻烦,而...
JSP+JavaBean留言本 一款JSP+JavaBean留言本程序源码,后台用户名是admin,密码是qipeng 如果不行,可以打开数据库...留言本推荐环境为Tomcat6.0,如果用5.0,可能会出现乱码,因为5.0对中文的支持还是有一定的问题。
jar包只有两个dom4j和jaxen 后者是xml转javabean用到的,否则会报异常:java.lang.NoClassDefFoundError: org/jaxen/JaxenException。 项目可以直接运行,中间测试数据乱码地方不影响,可以自己替换文字
本系统基于Java平台,采用设计模式:MVC(模型 视图 控制),采用的技术:Jsp+JavaBean+Struts+JDBC,数据库:MySQL Struts采用Struts 1.2 版本,MySQL采用MySQL5.0 系统特色: 1,栏目无限级分类,形成树型结构,可以随意...
java 编码规范 javaAPIjava 编码规范 javaAPI
定义了一些常用的方法,比如中文字体处理(解决乱码问题),数据库数据转换为HTML格式显示的方法等。 7. javascript脚本 用来检查表单数据是否为空。 <script> //用于管理员登陆的验证 function check() { ...
毕竟数据是根本嘛,首先我用的是hibernate+servlet,但是在jsp页面传参到servlet的时候中文一直乱码,我尝试了好多方法,最后还是解决了。 第一,首先看清项目的编码,jsp页面的编码 第二,修改tomcat 下面的server....
采用ECLIPSE编写,可直接导入eclipse,方便易用,支持分页功能,连接MYSQL数据库,代码内有详细注释和乱码转换原因解释及解决.是JSP初学者的入门好程序,本人近期内还将推出model1(jsp+javabean)版以及mvc(jsp+javabean+...
4.2 中文乱码处理的JavaBean的编写 7 4.3 客户基本信息的JavaBean的编写 7 4.4 提交客户信息的JavaBean的编写 8 4.5 查询、分页JavaBean的编写(QuestString.java) 9 4.6 显示系统时间的JavaBean的编写 14 5 用户登录...