運作環境:
JDK1.8.0_172
JRE1.8.0_172
apache-tomcat-9.0.8
1、這是我的web案例WEB12


2、C3POutils的主要語句
3、 2.html
4、loginServlet代碼如下:
package login;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import cn.itcast.C3poUtils;
import cn.itcast.User;
@SuppressWarnings("serial")
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//debug測試輸出
System.out.println("get");
doPost(request,response);//因為不知道為什麼post方法直接調用了doGet方法。
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//debug測試輸出
System.out.println("post");
//username=tom&password=12345
//1擷取使用者名和密碼
String username = request.getParameter("name");//程式到這裡發現提取不了username=null;
String password = request.getParameter("password");//password=null
//2從資料庫中驗證使用者名是否正确
try {
// 1.擷取核心類queryRunner
QueryRunner qr = new QueryRunner(C3poUtils.getDataSource());
// 2.編寫sql語句
String sql = "select * from user where name=? password=?";
//3.為占位符設定值
Object[] params = {username,password};
// 4.執行查詢操作
User user = qr.query(sql, new BeanHandler<User>(User.class), params);
//User user = qr.query(sql, new BeanHandler<User>(User.class), username,password);這樣寫也可以
//3根據傳回結果給使用者顯示不同的顯示資訊
if(user!=null) {
//響應方法
response.getWriter().write(user.toString());
}else {
response.getWriter().write("sorry!your name or password is wrong");
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
5、User類(寫好get/set,toSting):
6、c3po-config.xml檔案代碼:
問題就在黃色線部分:
1.post方法送出後調用的是doGet()方法(據說是沒寫method才會被預設doGet())?
2.在進入了doPost()中的時候,擷取不了元素value?