JSP项目中连接数据库出现中文用户名无法通过登录验证问题的解决

论坛里有大神也有像笔者这样的小菜。

笔者最近在学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实现的。

废话少说,直接上代码。

<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>


这种方法是网上某大神写的,原理同方法1,但是很有用,相比也较为简单。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值