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

Student(html+JavaBean+BeanUtil)+解决中文乱码问题

2014-12-02 15:27 357 查看
-----------------------------------------------------------RequestDemo3.java

总结:这里并没有设置,从客户端传进来的流的编码格式,所以java程序中会自动判定成ISO-8859-1,没有中文字符的

编码分析


输入编码问题:

                 服务器->浏览器的编码格式由服务器决定

                浏览器->服务器的编码格式由浏览器决定,

                 所以这里设置UTF-8是从html而来的


                 总归一句话,浏览器的东东起源于服务器,所以当服务器接受浏览器的东西时,如果是本服务器发的网页,请设置                                      好本网页的编码,本服务器的java程序才能用中文。。。。。接受。!!!!                                            

                                                                                                request.setCharacterEncoding("UTF-8")

request里面也就一个set方法!!!!

笔记:request.setCharacterEncoding(写的是从html来的编码格式)

package cn.ITHong.Request;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import cn.ITHong.domain.Student;

public class RequestDemo3 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}

<pre name="code" class="java"><span style="white-space:pre">	</span>public void test1(HttpServletRequest request) {
Student s = new Student();
try {
request.setCharacterEncoding("UTF-8");
} catch (Exception e1) {
e1.printStackTrace();
}
System.out.println("封装前:"+s);
try {
BeanUtils.populate(s, request.getParameterMap());
}  catch (Exception e) {
e.printStackTrace();
}
System.out.println("封装后:"+s);
}


public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test1(request);}}


----------------------------------------------------------Student.html

总结:radio checkboxs 即使表单中有对应名称输入域,如果一个不选择,则什么数据都不会给服务器。(注意空指针异常)

如果选择了其中一个(radio) 或多个(checkboxs)则把他们的value的取值提交给服务器。

如果选择了一个(radio)或多个(checkboxs),他们又没有value取值,则提交给服务器的值是on。

请求参数的编码:

浏览器当前使用什么编码,就以什么编码提交请求参数一致。<meta http-equiv="content-type" content="text/html" ;charset="UTF-8">

这里用post方式,所以才能用中文哦

用get是不能用中文的->[b]  request.setCharacterEncoding("UTF-8")的限制。。。。[/b]

[b]所以开发中到目前为止还是建议用post[/b]

<!DOCTYPE html>
<html>
<head>
<title>学生信息注册</title>

<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

</head>

<body>
<form action="/Web07/servlet/RequestDemo3" method="post">
姓名:<input type="text" name="name"/><br />
密码:<input type="password" name="password"/><br />
性别:<input type="radio" name="gender" value="1"/>男
<input type="radio" name="gender" value="0"/>女<br />
已婚:<input type="checkbox" name="married" /><br />
爱好:<input type="checkbox" name="hobby" value="fb"/>足球
<input type="checkbox" name="hobby" value="bb"/>篮球
<input type="checkbox" name="hobby" value="tb"/>乒乓球<br />
故乡:<select name="city">
<option value="BJ">北京 </option>
<option value="SD">山东</option>
<option value="ST">汕头</option>
</select><br />
简介:<textarea name="description" rows="3" cols="38"></textarea><br />
<input type="hidden" name="id" value="438"/><br />
<!--  记住图片要用"../"的格式,不然没有".."能在Myeclipse显示,但是网页不能显示 -->
<input type="image"  src="../picture/1.jpg" >
</form>
</body>
</html>


---------------------------------------------------------Student.java(domain)

package cn.ITHong.domain;

import java.util.Arrays;

public class Student {
private String name;
private String password;
private String gender;
private boolean married;
private String[] hobby;
private String city;
private String description;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Student [name=" + name + ", password=" + password + ", gender="
+ gender + ", married=" + married + ", hobby="
+ Arrays.toString(hobby) + ", city=" + city + ", description="
+ description + ", id=" + id + "]";
}

}



记住红孔的文件很重要,一般都会忘记加进去的。所以要记得

没有Collections的出错


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