1. 程式人生 > 實用技巧 >JavaWeb核心之Servlet

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建立了");

}