JavaWeb核心之Servlet
JavaWeb核心之Servlet
(1)Servlet介面中的方法
1)init(ServletConfig config)
何時執行:servlet物件建立的時候執行
ServletConfig : 代表的是該servlet物件的配置資訊
2)service(ServletRequest request,ServletResponse response)
何時執行:每次請求都會執行
ServletRequest :代表請求 認為ServletRequest 內部封裝的是 http請求的資訊
ServletResponse :代表響應 認為要封裝的是響應的資訊
3)destroy()
何時執行:servlet銷燬的時候執行
(1)Servlet的生命週期(面試題)
1)Servlet何時建立
預設(伺服器啟動時)第一次訪問servlet時建立該物件
2)Servlet何時銷燬
伺服器關閉servlet就銷燬了
3)每次訪問必然執行的方法
service(ServletRequest req, ServletResponse res)方法
問題:對XXXServlet進行了10次訪問,init(),destory(),service(),doGet(),doPost() 一共執行力多少次?request物件建立幾個?response建立幾個?
init():一次 (建立時) destory():一次(銷燬時) service():10次(執行一次建立一次) doGet(),doPost()屬於service()
request物件建立10個(執行一次建立一次) response建立10個(執行一次建立一次)
(1)HttpServlet類的方法
1)init()
2)doGet(HttpServletRequest request,HttpServletResponse response)
3)doPost(HttpServletRequest request,HttpServletResponse response)
4)destroy()
Servlet的配置
其中url-pattern的配置方式:
1)完全匹配 訪問的資源與配置的資源完全相同才能訪問到、
2)目錄匹配 格式:/虛擬的目錄../* *代表任意
3)副檔名匹配 格式:*.副檔名
注意:第二種與第三種不要混用
/aaa/bbb/*.abcd(錯誤的)
登入頁面
建立Dynamic Web專案
在Webcontebt裡新建jsp檔案
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="/WW/LoginServlet" method="post"> 使用者名稱:<input type="text" name="uname"><br> 密碼:<input type="password" name="pwd"><br> <input type="submit" value="註冊"><br> </form> </body> </html>
action="/WW/LoginServlet"需要執行的地址
LoginServlet頁面
public class LoginServlet extends HttpServlet { private UserService userService=new UserService(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String uname=request.getParameter("uname"); String pwd=request.getParameter("pwd"); int row=userService.login(uname, pwd); if(row>0){ response.getWriter().write("chenggong");; }else{ response.getWriter().write("shibai"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
UserService頁面
public class UserService { private UserDao userDao=new UserDao(); public int login(String uname,String pwd){ int row=0; try { row=userDao.login(uname, pwd); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return row; } }
UserDao頁面
public class UserDao { public int login(String uname,String pwd) throws SQLException{ Connection conn=JDBCUtils.getConn(); String sql="INSERT INTO USER (uname,pwd) VALUES(?,?) "; PreparedStatement pst=conn.prepareStatement(sql); pst.setString(1, uname); pst.setString(2, pwd); int row=pst.executeUpdate(); JDBCUtils.close(conn, pst); return row; } }
JDBCUtils類
public class JDBCUtils { //獲取連線物件 public static Connection getConn(){ Connection conn=null; try { Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/shop?characterEncoding=utf8"; String uname="root"; String ped="123456"; conn=DriverManager.getConnection(url,uname,ped); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } //釋放資源方法 public static void close(Connection conn,PreparedStatement pst){ if(pst!=null){ try { pst.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //查詢 public static void close(Connection conn,PreparedStatement pst,ResultSet rs){ if(pst!=null){ try { pst.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("hello dandan...");//往客戶端列印
}
public void init(ServletConfig arg0) throws ServletException {
//獲取ServletName
System.out.println(arg0.getServletName());
//獲取初始化引數
System.out.println(arg0.getInitParameter("driver"));
//ServerContext con=arg0.getServletContext();
System.out.println("Servlet建立了");
}