您的位置:首页 > 编程语言 > Java开发

用Jsp+Servlet+JavaBean写的注册登陆界面,解决中文乱码

2014-05-16 15:58 525 查看
话说这学期课是真多啊,忙成一个球了!还好从昨天开始,我们学校就举办运动会了,大二以上年级休息四天,哈哈哈



不要太羡慕啊~

今天上午写了一个注册+登陆页面

使用的技术主要有:Jsp Servlet Javabean

遇到的问题:JavaBean的getName()方法若为中文则显示乱码,就这个问题我真是历尽千辛万苦啊,contentType,pageEndoing统一的设成gbk不行,设置了字符编码过滤器后session.setAttribute(session_name,session_value)设置的值和session.getAttribute(session_name)已经可以显示中文,但使用Javabean的类userBean的getName()方法还是乱码,此时心中顿时感觉有一万头神马呼啸着狂奔而过...后来在网上看到一篇帖子,它的思想是在写一个JavaBean类将字符编码转换一下(http://hi.baidu.com/ixuzpycgedbnsvq/item/1b07e633fcc166f5e6bb7a6f),这样转码之后,就完全可以支持中文了

#Jsp reg.jsp 注册页面

<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="description" content="MySpace By Young Studio" />
<link rel="stylesheet" href="css/frame.css" media="screen" />
<link rel="stylesheet" href="css/test.css" media="screen" />
<script type="text/javascript" src="js/test.js"></script>
<title>Register_test</title>
</head>
<body>
<div id="content">
<header>
<h1>RegSpace</h1>
</header> <hr />
<!--注册表单-->
<div id="reg">
<form name="form1" method="post" action="regCheck.jsp">

<div>姓名:<input type="text" name="name" class="formInput" placeholder="如:张三" autofocus="autofocus"/>
<label class="la" id="Lname"></label></div><br />

<div>年龄:<input type="number" name="age" class="formInput" placeholder="如:17" />
<label class="la" id="Lage"></label></div><br />

<div>体重:<input type="number" name="weight" class="formInput" placeholder="如:75" />
<label class="la" id="Lweight"></label></div><br />

<div>班级:<select size="1" id ="selclass" name="selclass" >
<option value="计121-1"  selected="selected">计121-1</option>
<option value="计121-2" >计121-2</option>
<option value="计122-1" >计122-1</option>
<option value="计122-2" >计122-2</option>
<option value="计123-1" >计123-1</option>
<option value="计123-2" >计123-2</option>
<option value="计124-1" >计124-1</option>
<option value="计124-2" >计124-2</option>
<option value="计124-2" >计125</option>
</select>
<label class="la" id="Lclass"></label></div><br />

<div>密码:<input type="password" name="pwd" class="formInput" placeholder="xxxx" />
<label class="la" id="Lpwd"></label></div><br />

<div>重复密码:<input type="password" name="repwd" class="formInput" placeholder="xxxx" style="margin-left:8px;position:relative;" />
<label class="la" id="Lrepwd"></label></div><br />

<div>Email:<input type="email" name="email" class="formInput" placeholder="xxx@xx.xx" style="margin-left:33px;position:relative;" />
<label class="la" id="Lemail"></label></div><br />

<div>简介:<textarea name="brief" class="formTextarea" placeholder="我来自…"></textarea>
<label class="la" id="Lbrief"></label></div><br />

<input type="submit" value="注册" class="formInput" onClick="return reg();" />
</form>
</div><!--#reg-->
</div><!--#content-->
</body>
</html>
#Jsp regCheck.jsp 注册检查页面

<%@ page contentType="text/html; charset=gbk" language="java"  import="user.userBean"%>
<jsp:useBean id="love" class="user.userBean" scope="page" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="description" content="MySpace By Young Studio" />
<link rel="stylesheet" href="css/frame.css" media="screen" />
<link rel="stylesheet" href="css/test.css" media="screen" />
<script type="text/javascript" src="js/test.js"></script>
<title>Login_test</title>
</head>
<body>
<div id="content">
<header>
<h1>LoginSpace</h1>
</header> <hr />
<!--注册表单-->
<div id="maincotent">
<fieldset>
<legend>用户注册</legend>
<p>欢迎你!</p>
<%
request.setCharacterEncoding("gbk");
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
session.setAttribute("name",name);
session.setAttribute("pwd",pwd);
out.println(name);
out.println("<p>点击<a href='login.jsp'>这里</a>登陆</p>");
%>
</fieldset>
</div><!--#maincontent-->
</div><!--#content-->
</body>
</html>
#Jsp login.jsp 登陆页面



<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
<meta name="description" content="MySpace By Young Studio" />
<link rel="stylesheet" href="css/frame.css" media="screen" />
<link rel="stylesheet" href="css/test.css" media="screen" />
<script type="text/javascript" src="js/test.js"></script>
<title>Login_test</title>
</head>
<body>
<div id="content">
<header>
<h1>LoginSpace</h1>
</header> <hr />
<!--登陆表单-->
<div id="maincontent">
<fieldset>
<legend>用户登陆</legend>
<form name="form1" method="get" action="loginCheck.jsp">

<div>用户:<input type="text" name="name" class="formInput" autofocus="autofocus"/>
<label class="la" id="Lname"></label></div><br />

<div>密码:<input type="password" name="pwd" class="formInput"  />
<label class="la" id="Lage"></label></div><br />

<input type="submit" value="登陆" class="formInput" onClick="return loginChk();" />

</form>
</fieldset>
</div><!--#maincontent-->
</div><!--#content-->
</body>
</html>


#Jsp loginCheck.jsp 登陆检查页面

<%@ page contentType="text/html; charset=gbk" language="java" pageEncoding="gbk" import="user.MyTools" %>
<jsp:useBean id="demo" class="user.userBean" scope="application" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="description" content="MySpace By Young Studio" />
<link rel="stylesheet" href="css/frame.css" media="screen" />
<link rel="stylesheet" href="css/test.css" media="screen" />
<script type="text/javascript" src="js/test.js"></script>
<title>Login_test</title>
</head>
<body>
<div id="content">
<header>
<h1>LoginSpace</h1>
</header> <hr />
<!--loginCheck-->
<div id="maincontent">
<fieldset>
<legend>用户登陆</legend>
<jsp:setProperty name="demo" property="*" />
<%
String name  = session.getAttribute("name").toString();
String pwd   = session.getAttribute("pwd").toString();
String cname = MyTools.toChinese(demo.getName());  //使用MyTools的方法将字符转码
                                String cpwd  = MyTools.toChinese(demo.getPwd());//使用MyTools的方法将字符转码
                                if(name.equals(cname) && pwd.equals(cpwd))
{
response.sendRedirect("welcome.jsp");
}
else
{
response.sendRedirect("errorPage.jsp");
}
%>
</fieldset>
</div><!--#maincontent-->
</div><!--#content-->
</body>
</html>
#Jsp welcome.jsp 登陆成功页面



<%@ page contentType="text/html; charset=gbk" language="java" import="user.MyTools" %>
<jsp:useBean id="demo" class="user.userBean" scope="application" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="description" content="MySpace By Young Studio" />
<link rel="stylesheet" href="css/frame.css" media="screen" />
<link rel="stylesheet" href="css/test.css" media="screen" />
<script type="text/javascript" src="js/test.js"></script>
<title>Welcome</title>
</head>
<body>
<div id="content">
<header>
<h1>Space</h1>
</header> <hr />
<!--welcome-->
<div id="maincontent">
<fieldset>
<p>欢迎您!</p>
<p><%=MyTools.toChinese(demo.getName())%></p> //使用MyTools的getName方法将字符转码
</fieldset>
</div><!--#maincontent-->
</div><!--#content-->
</body>
</html>
#Jsp errorPage.jsp 登陆失败页面



<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" isErrorPage="true" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="description" content="MySpace By Young Studio" />
<link rel="stylesheet" href="css/frame.css" media="screen" />
<link rel="stylesheet" href="css/test.css" media="screen" />
<script type="text/javascript" src="js/test.js"></script>
<title>ErrorPage</title>
</head>
<body>
<div id="content">
<header>
<h1>ErrorPage</h1>
</header> <hr />
<!--errorPage-->
<div id="reg">
<fieldset>
<%
out.println("登陆失败");
out.println("<p>点击<a href='login.jsp'>这里</a>重新登陆</p>");
%>
</fieldset>
</div><!--#reg-->
</div><!--#content-->
</body>
</html>


#Servlet 使用过滤器实现转码编码

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ManageFilter implements Filter {
protected String encoding = "gbk";
protected FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig) throws ServletException{
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException{
HttpServletRequest res = (HttpServletRequest)request;
res.setCharacterEncoding(encoding);
chain.doFilter(request,response);
}
public void destroy(){
this.filterConfig = null;
}
}


#JavaBean userBean

package user;

public class userBean {
private String name;
private String pwd;
public userBean(){}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setPwd(String pass){
pwd = pass;
}
public String getPwd(){
return pwd;
}
}
#JavaBean 字符转码

package user;
import java.io.UnsupportedEncodingException;

public class MyTools {
public static String toChinese(String str) {
if (str == null)
str = "";
try {
// 通过String类的构造方法将,指定的字符串转换为“gbk”编码
str = new String(str.getBytes("ISO-8859-1"), "gbk");
} catch (UnsupportedEncodingException e) {
str = "";
e.printStackTrace();
}
return str;
}
}
#web.xml 配置如下

<?xml version="1.0" encoding="gb2312"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.4">
<filter>
<filter-name>ManageFilter</filter-name>
<filter-class>ManageFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ManageFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


主要思路

1.打开 reg.jsp 进行注册(regCheck.jsp进行注册判断,如成功将用户名和密码存入session,并使用servlet过滤器将字符编码转换为gb2312,避免中文乱码)

2.注册成功后点击 登陆 进入登陆界面(login.jsp)

3.填写注册时的用户名和密码,点击submit(loginCheck.jsp进行注册判断,使用JavaBean将输入值与session存入值进行等值判断,若相等,重定向至welcome.jsp,若不等,重定向到errorPage.jsp)

展示效果如下







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: