论坛里有大神也有像笔者这样的小菜。
笔者最近在学javaweb,这段时间试着自己接触一些小的项目。
之中出现了问题,与大家分享。希望有同样问题的同学可以借鉴
少走弯路。
在jsp项目中,我们都知道在参数的传递中会出现中文乱码的情况。
在书中是这样一种处理:
方法1:
public String codeToString(String str){
String s=str;
try{
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
}catch(Exception e){
return s;
}
}
这种方法是定义了一个codeToString方法对中文字符进行处理。方法很简单。下面试一个小的实例:
<%@ page contentType="text/html; charset=gb2312"%>
<%!
public String codeToString(String str){
String s=str;
try{
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
}catch(Exception e){
return s;
}
}
%>
<html>
<head>
<title>ChineseString</title>
</head>
<body>
<form name="form1" action="chineseString.jsp" method="post">
请输入您的姓名:
<input type="text" name="username">
<input type="submit" name="submit" value="提交">
</form><br>
<%
if(request.getParameter("username")==null)
out.println("您没有输入姓名");
else
out.println("你输入的姓名为:"+codeToString(request.getParameter("username")));
%>
</body>
</html>
方法2:
请看实例,在代码中添加一条代码就可以,这是笔者在视屏教学中碰到的:
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="com.baidu.cn.vo.Emp,com.baidu.cn.factory.*" %>
<%@ page import="java.text.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
//下面这一行代码就是处理中文字符的。
<% request.setCharacterEncoding("GBK");%>
</head>
<body>
<%
Emp emp=new Emp();
emp.setEmpno(Integer.parseInt(request.getParameter("empno")));
emp.setEname(request.getParameter("ename"));
emp.setJob(request.getParameter("job"));
emp.setSal(Float.parseFloat(request.getParameter("sal"))) ;
try{
if(DAOFactory.getIEmpDAOInstance().doCreate(emp)){
%>
<h3>信息添加成功!</h3>
<%
} else {
%>
<h3>信息添加失败!</h3>
<%
}
%>
<%
}catch(Exception e){
e.printStackTrace() ;
}
%>
</body>
</html>
方法3:
直接上代码,笔者就是用这样办法处理的。笔者用的是javaBean封装JDBC。公共数据库的访问连接类的开发用的是DAO实现的。
废话少说,直接上代码。
这种方法是网上某大神写的,原理同方法1,但是很有用,相比也较为简单。<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>登录检查</title></head> <body> <% User user=null; boolean flag; user =new User(); //解决用户名不能为中文的问题!!!!!!!1!!!!!!! String name=new String(request.getParameter("name").getBytes("ISO8859-1"),"GBK"); String password=new String(request.getParameter("password").getBytes("ISO8859-1"),"GBK"); user.setName(name); user.setPwd(password); flag=CommodityDAOFactory.getCommodityDAOInstance().checkLogin(user); %> <% if(flag){ // 登陆成功 %> <jsp:forward page="ShowCommodity.jsp"/> <% } else { // 登陆失败 %> <jsp:forward page="login.jsp"/> <% } %> </body> </html>