前端页面发送的请求方式要与服务器端需要的请求方式一致 服务器需要前端发送POST,那么前端就应该发送POST请求,否则服务器应当提示错误信息服务器需要前端发送GET,那么前端就应该发送GET请求,否则服务器应当提示错误信息 2、怎么完成以上的需求 在Javaweb程序中想办法获取该请求是什么类型的请求 当我们获取到请求方式以后,在Javaweb程序中可以使用Java语言进行判断 if("POST".equals(method)) { //....... } else if("GET".equals(method)) { //....... } 3、怎么在Javaweb程序中获取请求方式 重点: HTTP的请求协议全部信息会被自动封装到 javax.servlet.http.HttpServletRequset 对象中 在 HtppServletRequest 接口类型中有一个方法:String getMethod();可以获取请求方式 HtppServletRequest extends ServletRequest //将ServletRequest强制转换为带有Http的接口类型 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; //获取浏览器发送的请求方式 String method = httpServletRequest.getMethod(); System.out.println(method); 问题:HttpServletRequest 继承自 ServletRequest,为什么可以直接向上转型,将父类转换为子类? 其实 service() 方法的两个参数servletRequest、servletResponse,实际上并不是 new servletRequest() ,Tomcat内部实际上是 new HttpServletRequest() ,所以本质上servletRequest是HttpServletRequest,所以我们进行强转并不会报错;同理, service() 的另一个参数servletResponse本质上也是HttpservletResponse对象。 //Tomcat内部创建service()的两个参数对象,实际上是使用了多态 ServletRequest request = new HttpServletRequest(); ServletResponse response = new HttpServletResponse(); 4、在每一个Servlet类中都编写了以下程序,来保证前端请求方式和后台需要的请求方式一致的: //将ServletRequest、ServletResponse强制转换为带有Http的接口类型 HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse; httpServletResponse.setContentType("text/html;charset=UTF-8"); PrintWriter writer = httpServletResponse.getWriter(); //获取浏览器发送的请求方式 String method = httpServletRequest.getMethod(); System.out.println(method); //login是处理登陆的,要求前端必须发送POST请求 if("GET".equals(method)) { //后台报出错误 writer.print("405-您应当发送POST请求"); //前端报出错误 throw new RuntimeException("405-您应当发送POST请求"); } //如果程序可以执行到这一步,说明用户发送的是POST请求,程序正常执行 writer.print("正在登陆......"); 5、以上代码在每一个Servlet类中都需要编写,怎么能封装一下,以后在每一个具体的Servlet类中不写这样的代码了,但是还是能够达到同样的效果?SUN公司提供了一个类 HttpServlet