ここにこのURLがあるとしましょう
<s:url action ="profile" var ="profile_url">
<s:param name = "id">${user.userId}</s:param>
</s:url>
<s:a href = "%{profile_url}">My Profile</s:a>
パラメータIDにはint
値のみが含まれます。つまり、私のActionクラスの内部です。
public class ViewProfileAction extends ActionSupport{
public String execute(){
//someServiceLayer.getUser(id);
return "success";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private int id;
}
ユーザーがリンクをクリックする限り、すべてがうまくいくように見えるので、ユーザーがリンクをクリックすると、URLは次のようになります。
localhost:8090/HelloStruts2/profile?id=1
しかし、ユーザーがURLを直接操作した場合はどうなるでしょうか。彼はブラウザに文字または文字を手動で入力しましたか?このような
localhost:8090/HelloStruts2/profile?id=b
ユーザーがそれを行った場合、例外が発生するか、エラーが発生すると確信しています。
私の質問では、URLパラメータをどのように検証しますか?または、ユーザーがそのようなことをした場合(パラメーターに文字または負の数を入力した場合)、ユーザーid
を別のページにリダイレクトします。