struts2遇到的坑
一、属性名称命名大坑
测试的action类
public class LoginAction2 {
private String pYear;//这样命名是个大坑 生成的get set第一个字母他不会给你大写
private String pingYear;//这样是可以的
public String getpYear() {
return pYear;
}
public void setpYear(String pYear) {
this.pYear = pYear;
}
public String getPingYear() {
return pingYear;
}
public void setPingYear(String pingYear) {
this.pingYear = pingYear;
}
//登录处理业务
public String login() {
System.out.println("pYear="+pYear);
System.out.println("pingYear="+pingYear);
return Action.SUCCESS;
}
// pYear=null
// pingYear=999
}
这样会造成数据获取不到,还不好找出这个错误。
二、业务方法以get开头。
这种情况完全可以避免只是给大家演示一下。
action类
public class LoginAction3 {
private String username;
private String password;
public String getUsername() {
System.out.println("username-----get");
return username;
}
public void setUsername(String username) {//处理方法
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
配置信息
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
".3.dtd">
<struts>
<package name="default" extends="struts-default" namespace="/">
<action name="login3" class="cn.sxt.action.LoginAction3" method="getUsername">
<result>/sucess3.jsp</result>
</action>
</package>
</struts>
jsp页面
登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="login3.action" method="post">
username:<input type="text" name="username"><br>
password:<input type="text" name="password"><br>
<input type="submit" value="login">
</form>
</body>
</html>
响应页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>username:${username}</h1>
<h1>password:${password}</h1>
</body>
</html>
看着没啥问题,但是我请求的username名字为succes的时候setUsername方法会执行两次。
比如我输入http://localhost:8080/struts2_data/login3?username=success struts2_data是我的项目名
或者在登录的jsp页面中username输入success
如果这个方法是查询方法,那么还没什么问题,但是如果这是个删除,修改操作那么程序就会报错。