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().