JSPとサーブレットのエラーメッセージ出力のしかた
解決したいこと
JSPからサーブレットに何かしらのパラメーターを送りそのパラメーターに対して入力チェックをし、その入力チェックがエラーならJSPにエラーメッセージを送り、その後の処理は終わる処理と、エラーなしだったらsqlに追加や編集の処理をしたい。
現在詰まっていることは、入力チェックエラーしているにも関わらず(デバッグで確認済)、その後の処理がされSQLが実行されるというのが今の状況です。
発生している問題・エラー
form.jsp
<form action = "./Add_products" method = "post">
<div class = "form-item">
<dt>商品コード</dt>
<dd><input type="text" name = "Code"></dd>
</div>
<div class = "form-item">
<dt>商品名</dt>
<dd><input type="text" name = "Name"></dd>
</div>
<div class = "form-item">
<dt>単価</dt>
<dd><input type="text" name = "Tanka"></dd>
</div>
<input type = "submit" value = "送信">
</form>
該当するソースコード
add.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String code = request.getParameter("Code");
String name = request.getParameter("Name");
String tanka = request.getParameter("Tanka");
//nullチェック
if(code != null && name != null && tanka != null){
//半角英数字true
String str[] = {code,name,tanka};
for (int i = 0; i < str.length -1; i++){
if(str[i].matches("^[A-Za-z0-9]+$")){
;
}else {
String error = "半角で入力してください";
request.setAttribute("error", error);
RequestDispatcher dispatcher = request.getRequestDispatcher("form.jsp?message="+error);
dispatcher.forward(request, response); //理想はここで処理を抜けたい
}
}
}
//現状下記の処理が実行される。
try{
Class.forName("com.mysql.jdbc.Driver");
Connection products = DriverManager.getConnection("jdbc:mysqlURL");
Statement state = products.createStatement();
try{
int res = state.executeUpdate("insert into products(code,name,price) values('" + code + "','" + name + "','" + tanka + "')");
}catch(Exception ex){
ex.printStackTrace();
}
state.close();
} catch (ClassNotFoundException e){
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
response.sendRedirect("Products.jsp");
}
エラーになったときに処理を抜けれるか知りたいです。
上記のコードよりほかの書き方がいいとあればご教授願いたいです。
宜しくおねがいします。
0