最近在用ssm实现一个简单的登录功能时,总是获取不到jsp页面传入的值,不知道是什么原因,sql语句是对的,测试也可以,input的name与bean中封装的字段也是对应的。不知道是啥子原因,好忧伤。
jsp:
<form action="/ssm/checkLogin" method="post">
<label>账号:</label>
<input type="text" id="name" name="name" placeholder="请输入账号" /></br>
<label>密码:</label>
<input type="password" id="password" name="password" placeholder="请输入密码"/></br>
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</form>
bean:
public class Category {
private int id;
private String name;
private String password;
sql:
<select id="login" resultMap="BaseResultMap" parameterType="com.how2java.pojo.Category">
select * from category_ where name=#{name,jdbcType=VARCHAR} and password=#{password,jdbcType=VARCHAR}
</select>
运行时打印出来这样:
DEBUG [http-apr-8081-exec-8] - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@d40f9a5]
DEBUG [http-apr-8081-exec-8] - ==> Preparing: select * from category_ where name=? and password=?
DEBUG [http-apr-8081-exec-8] - ==> Parameters: ???????°?(String), 111(String)
不只是获取的问题,在插入新数据时,操作可以成功,但插入的name也是乱码
检查 checkLogin 里面的对象数据是否OK
我是这么写的,大概是因为name获取不到,所以总是ad==null
@RequestMapping("/checkLogin")
public String checkLogin(Category user, Model model) {
Category ad = categoryService.login(user);
if (ad != null) {
model.addAttribute("user",ad);
return "success";
} else {
return "err";
}
}
@肥猫桂子: user的内容是什么,是不是前台数据提交到后台的时候数据都没有啊
@waiter: @waiter: user包括id,name,password ,前台提交的数据有name和password,现在是password可以获取的到,name没有
name乱码password正常显示>中文乱码
request.getParameter("参数名");字符编码默认IOS-8859-1,需要进行字符编码处理
request.setCharacterEncoding("UTF-8");
设置了字符集后再来取值就不会乱码了,这是post提交方式,get提交比较麻烦不建使用,而且不安全。