急!研究三天都没有解决,参数传递问题。
--------------------编程问答-------------------- 你设置了编码,在传值的时候就后转码,转码后1的值可能是一个乱码,你调用了这个
Integer.parseInt(request.getParameter("id"));
就会出问题,你可以在这里抓一下异常,看看转换成整型是否成功 --------------------编程问答-------------------- 楼上说的对 --------------------编程问答-------------------- 你可以直接把id、rootid放在action中传递;而中文乱码问题采用:
String cont = new String(request.getParameter("cont").getBytes("ISO8859-1"),"gbk");
试试...
--------------------编程问答-------------------- 这一句是不用的request.setCharacterEncoding("GBK");写了就对提交的数据进行了两个编码(页面本来就使用了gbk编码),两次编码与一次编码后的数据结果应该不一样,若你必须用的话,在处理数据时还应该进行解码!
--------------------编程问答--------------------
说的有道理,应该就是转码出的问题,但是奇怪的是把id赋值两位数比如说是12就可以传过来,但是赋一个个位数字比如说是2,那参数传过来就为null了,不知道应该怎么解决这个问题? --------------------编程问答-------------------- 是格式问题~ --------------------编程问答--------------------
int id = Integer.parseInt(request.getParameter("id"));
int rootid = Integer.parseInt(request.getParameter("rootid"));
request.setCharacterEncoding("GBK");
String title = request.getParameter("title");
String cont = request.getParameter("cont");
这样试一试 --------------------编程问答-------------------- 首先你穿过的数据是编码过的 不管是不是乱码只要是有值就不会是null说以跟
request.setCharacterEncoding("GBK");没多大关系
异常是你将一个null转换真INT出现的,所以你先request.getParameter("id")
然后判断是不是null和正则表达式匹配是否是数字,
然后在转换 --------------------编程问答--------------------
这样的话request.setCharacterEncoding("GBK");就失去了意义,只有在第一个request之前用上才有用 --------------------编程问答--------------------
我明白你的意思,问题就在于加上了request.setCharacterEncoding("GBK");传过来的个位数字比如2,就变成了null,但是传过来的两位数字比如说是22就正常,然后把request.setCharacterEncoding("GBK");注销吊以后,一切变得正常了 --------------------编程问答-------------------- 可以直接在配置文件里配置乱码处理,这样就不用每个action的设置编码了,应该不会再出现这样的问题 --------------------编程问答-------------------- 差不多就是这个意思,楼主在传递数据过程中使用的不同的编码格式,可能自己没有注意到,文件保存格式也许不是gbk格式,但是楼主又使用了request.setCharacterEncoding("GBK");这个方法把参数转化成gbk编码格式,肯定是在转码过程中转码失败导致为空的。所以楼主要注意前后所有的文件格式都要保持一致这样就不会出现乱码或者转码失败的问题了。 --------------------编程问答-------------------- 我把两个测试用的文件全部内容贴出来,请大家帮我调剂一下,看看在你们那里能不能行,这次我把id设置成了type类型为text,以便于测试用,大家帮我试试id能不能接收到个位数字,比如1或者2,谢谢了。
B.jsp中的代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'B.jsp' starting page</title>
</head>
<body>
<form name="replay" action="D.jsp" method="post">
<table border="1">
<tr><td><input type="text" name="id" /></td></tr>
<tr><td><input type="text" name="rootid" /></td></tr>
<tr>
<td>
<input type="text" name="title" size="80">
</td>
</tr>
<tr>
<td>
<textarea cols="80" rows="12" name="cont"></textarea>
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
<a href='D.jsp'>跳转</a>
</body>
</html>
D.jsp中的代码如下:
--------------------编程问答-------------------- 啊啊啊啊 和楼主的问题一模样。楼主解决了嘛???
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@page import="java.sql.*" %>
<%
request.setCharacterEncoding("GBK");
int id = Integer.parseInt(request.getParameter("id"));
int rootid = Integer.parseInt(request.getParameter("rootid"));
String title = request.getParameter("title");
String cont = request.getParameter("cont");
%>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/bbs?useUnicode=true&characterEncoding=gbk";
String user = "root";
String password = "1234";
conn = DriverManager.getConnection(url, user, password);
Statement stat = conn.createStatement();
String sql1 = "insert into article values(null,2,1,'" + title + "','" + cont + "',now(),0)";
stat.executeUpdate(sql1);
%>
<html>
<head></head>
<body>
title=<%=title %>
id=<%=id %>
</body>
</html>
补充:Java , Web 开发