1.在jsp頁面向servlet提交請求時,可以給每一個請求都附帶一個參數method。多個jsp頁面共用一個servlet。如:
//獲取參數
String method = request.getParameter("method");
//分發請求
try{
if("view".equals(method)){
this.view(request,response);//顯示結果
}
if("save".equals(method)){
this.save(request,response);//保存
}
if("update".equals(method)){
this.update(request,response);//修改
}
if("delete".equals(method)){
this.delete(request,response);//刪除
}
}catch(Exception e){
e.printStackTrace();
}
2.若覺得每次都要設置編碼太麻煩,可以使用過濾器,如EncodingFilter。實現Filter接口,並且Filter接口中定義的三個方法都要在EncodingFilter中實現,其中doFilter()實現主要功能,裏邊加一段代碼:
request.setCharacterEncoding("utf-8");
然後在web.xml中配置即可。當然,控制訪問頁面的權限也可以使用過濾器。
3.表單默認使用method="get"方式提交,get方式的請求是沒有請求體(body)的,所有參數都附加到url後傳遞給服務器。
表單中enctype,默認情況下這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據。
即不設置enctype時表單只會把文件名上傳到服務器,而設置後會把本地文件以二進制的形式附加到請求體body中,供服務器接收。
4.java中所有servlet都要實現(implements)javax.servlet.Servlet這個接口的所有方法,共3個。
public interface Servlet{
void init(ServletConfig config);
void service(ServletRequest request,ServletResponse response);
void destroy();
}
doGet()和doPost()是HttpServlet覆蓋service()方法後分支出來的輔助方法,實際上服務器調用的還是service().