public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//response.setContentType("text/html; charset=GB2312");
PrintWriter out = response.getWriter();
String countryname = request.getParameter("countryname");
//out.print(countryname);
String ablename = request.getParameter("name");
String ablesex = request.getParameter("sex");
String age = request.getParameter("age");
if(age.equals("") || age == null)
age = "0";
int ableage = Integer.parseInt(age);
String peple = request.getParameter("peple");
String ableaddress = request.getParameter("address");
String education = request.getParameter("education");
String cellphone = request.getParameter("education");
String ableqq = request.getParameter("qq");
String telephone = request.getParameter("telephone");
String ableemail = request.getParameter("email");
String work = request.getParameter("work");
String other1 = request.getParameter("other1");
String other2 = request.getParameter("other2");
String other3 = request.getParameter("other3");
String specialty = request.getParameter("specialty");
String wish = request.getParameter("wish");
if(other1 == null){
other1 = "";
}
if(other2 ==null){
other2 = "";
}
if(other3 == null){
other3 = "";
}
String other = other1 + other2 + other3;
Ables able = new Ables();
able.setCountryname(countryname);
String couname = able.getCountryname();
out.println(couname);
able.setAbleaddress(ableaddress);
able.setAbleage(ableage);
able.setAbleemail(ableemail);
able.setAblename(ablename);
able.setAbleqq(ableqq);
able.setAblesex(ablesex);
able.setCellphone(cellphone);
able.setEducation(education);
able.setOther(other);
able.setWork(work);
able.setWish(wish);
able.setTelephone(telephone);
able.setSpecialty(specialty);
able.setPeple(peple);
addAble(able,couname);
//response.sendRedirect("../index.jsp");
}
private void addAble(Ables able,String name){
Connection conn = DB.getConn();
String sql = "insert into ables(countryname,ablename,ablesex,ableage,peple,ableaddress,education,cellphone,telephone,ableqq,ableemail,work,other,specialty,wish) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
//String sql = "insert into ables(ablename)values(?)";
PreparedStatement pstmt = DB.perpare(conn, sql);
//PreparedStatement pstmt = DB.perpare(DB.getConn(), "insert into ables(ablename)values(?)");
// Ables newable = able;
System.out.println(able.getCountryname());
System.out.println(name);
// try {
// pstmt.setString(1, newable.getCountryname());
// pstmt.setString(2, newable.getAblename());
// pstmt.setString(3, newable.getAblesex());
// pstmt.setInt(4, newable.getAbleage());
// pstmt.setString(5, newable.getPeple());
// pstmt.setString(6, newable.getAbleaddress());
// pstmt.setString(7, newable.getEducation());
// pstmt.setString(8, newable.getCellphone());
// pstmt.setString(9, newable.getTelephone());
// pstmt.setString(10, newable.getAbleqq());
// pstmt.setString(11, newable.getAbleemail());
// pstmt.setString(12, newable.getWork());
// pstmt.setString(13, newable.getOther());
// pstmt.setString(14, newable.getSpecialty());
// pstmt.setString(15, newable.getWish());
// int count = pstmt.executeUpdate();
// } catch (SQLException e) {
// e.printStackTrace();
// } finally {
// DB.close(pstmt);
// DB.close(conn);
// }
}
这个Servlet的作用是往数据库中填加信息,在接受从客户端发来的数据时,还不是乱码,如:out.print语句已经试过,并将那些数据封装在bean中,但在调用下面函数时,在函数中的数据却是乱码,如System.out.println已经在后台验证。这个问题奇怪的很,希望大家看一下,不知遇到过没有。谢谢!
乱码问题是本“问答”专栏中最常见的,主要是多种编码方式并存,应用,数据库,浏览器甚至IDE,任何一个不匹配都让人抓狂。现在几乎上面的东东都支持UTF-8,其优点在网上都有。因此,我开始一个项目,让这些都统一成UTF-8了,以免留下后遗症。
其实,out.print和System.out.println应该都是一样的,应该都是“GB2312”的,依据是
[quote]//response.setContentType("text/html; charset=GB2312"); [/quote]
只不过你在显示时,和所处的环境相关,导致不能渲染内容罢了。
[quote]//out.print(countryname);[/quote]
如果你把这句修改成
[quote]System.out.print(countryname);[/quote]
一定也是乱码;
如果你的客户端是GBK编码的,
在该句
[quote]PrintWriter out = response.getWriter(); [/quote]
之前添加
[quote]request.setCharacterEncoding("GBK");[/quote]
应该就可以了.
另外,编码处理,最好用过滤器统一处理; 要不慢慢扩散开了,就不好收场了.