四、编写一个适配器并对提交请求的方式进行判断

1、GenericServlet 是一个适配器,但是其本身也是一个Servlet,因为其实现了Servlet接口;
  这个适配器是一个Servlet,以后程序员无需直接实现Servlet接口,去继承这个适配器即可,重写Servlce方法;
2、HTTP协议即超文本传输协议的详细内容:
1)浏览器和服务器之间的一种通讯协议
该协议是w3c负责制定的,其实本质上就是数据传送格式提前制定好了,浏览器和服务器都必须按照这种数据格式进行接收和发送
2)HTTP协议包括几部分?
请求协议:从Browser发送到Server的时候采用数据传输格式,请求协议包括请求行、消息包头、空白行、请求体;
备注:
get请求,发送请求在请求行上发送,信息会显示在浏览器地址上;
请求行包括:请求方式 URL 协议版本号
空白行:专门用来分离消息包头和请求体的

响应协议:从Server发送到Browser的时候采用的数据传输格式;
备注:
响应协议包括四部分状态行:响应报头、空白行、响应体
状态行:协议版本号 状态码 状态描述信息    
空白行:分离响应报头和响应体的
200 响应成功正常结束、404资源未找到、500服务器内部错误
3、路径总结:
  两类:
    第一类:以/开始,加webapp名称
    第二类:以/开始,不加webapp名称
    除以上两类之外,欢迎页面设置比较特殊,不以/开始,不加webapp名字; 
 备注:web.xml文件中<url-pattern>的路径是不需要带webapp的名字的, 默认就是在该工程共进行访问的。但是必须以/开始,否则服务器启动时就会报错

|实例:编写一个适配器并对提交请求的方式进行判断|

GenericServlet类

package com.bjpownernode.javaweb.servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/*GenericServlet 是一个适配器,但是其本身也是一个Servlet,因为其实现了Servlet接口;
 *这个适配器是一个Servlet,以后程序员无需直接实现Servlet接口,去继承这个适配器即可,
 *重写Servlce方法;
 * */
public class GenericServlet implements Servlet {
 private ServletConfig config;
 
/*若在初始化时刻需要执行一段特殊的程序,建议重写无参数的init方法;
* */ 
 @Override
 public void init(ServletConfig config) throws ServletException {
  this.config=config;
  
 }

 @Override
 public ServletConfig getServletConfig() {
  // TODO Auto-generated method stub
  return config;
 }

 @Override
 public void service(ServletRequest req, ServletResponse res)
   throws ServletException, IOException {
  // TODO Auto-generated method stub

 }

 @Override
 public String getServletInfo() {
  // TODO Auto-generated method stub
  return null;
 }

 @Override
 public void destroy() {
  // TODO Auto-generated method stub

 }

 /*以下是扩展方法,方便子类的使用*/
 public ServletContext getServletContext(){
  return config.getServletContext();
 }
}

HelloServlet类

 

package com.bjpownernode.javaweb.servlet;

 

import java.io.IOException;
import java.io.PrintWriter;

 

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

 

public class HelloServlet extends GenericServlet {

 

 @Override
 public void init(ServletConfig config) throws ServletException {
  // TODO Auto-generated method stub
  super.init(config);
  System.out.println("HelloServelt's init...");
 }

 

 //ServletResponse向客户端发送一个响应
 @Override
 public void service(ServletRequest req, ServletResponse res)
   throws ServletException, IOException {
  // TODO Auto-generated method stub
  super.service(req, res);
  res.setContentType("text/html;charset=UTF-8");
  PrintWriter out=res.getWriter();
  out.print("helloworld");
 }

 

}

HelloServlet02类

 

 

package com.bjpownernode.javaweb.servlet;

 

import java.io.IOException;
import java.io.PrintWriter;

 

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

 

public class HelloServlet02 extends GenericServlet {

 

 @Override
 public void init(ServletConfig config) throws ServletException {
  // TODO Auto-generated method stub
  super.init(config);
 }

 

 @Override
 public void service(ServletRequest req, ServletResponse res)
   throws ServletException, IOException {
  res.setContentType("text/html;charset=UTF-8");
  PrintWriter out=res.getWriter();
  out.print("helloworld");
  out.print("<br>");
  out.print(getServletContext());
  
 }

 

}

LoginServlet类

 

 

package com.bjpownernode.javaweb.servlet;

 

import java.io.IOException;
import java.io.PrintWriter;

 

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

 

public class LoginServlet extends GenericServlet {

 

 @Override
 public void service(ServletRequest req, ServletResponse res)
   throws ServletException, IOException {
  res.setContentType("text/html;charset=UTF-8");
  PrintWriter out=res.getWriter();
  out.print("<html>");
  out.print("<head>");
  out.print("<title>this is a test code</title>");
  out.print("<head>");
  out.print("<body>");
  out.print("login success");
  out.print("<body>");
  out.print("</html>");
 }
}

LogoutServlet类

 

 

package com.bjpownernode.javaweb.servlet;

 

import java.io.IOException;
import java.io.PrintWriter;

 

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 

public class LogoutServlet extends GenericServlet {

 

 @Override
 public void service(ServletRequest req, ServletResponse res)
   throws ServletException, IOException {
  HttpServletRequest request=(HttpServletRequest)req;
  HttpServletResponse response=(HttpServletResponse)res;
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out=response.getWriter();
  //获取浏览器发送请求的方式:
  String method=request.getMethod();
  System.out.println(method);
  if("POST".equals(method)){
   //前端报出错误
   out.print("405-您应该当发送GET请求");
  }else{
   //若程序执行到这里证明用户发送的请求是GET请求,程序应当正常执行
   out.print("系统已经安全退出");
  }
 }

 

}

 

web.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>prj-servlet06</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
   <servlet-name>helloworld</servlet-name>
   <servlet-class>com.bjpownernode.javaweb.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>helloworld</servlet-name>
   <url-pattern>/helloworld</url-pattern>
  </servlet-mapping>
    <servlet>
   <servlet-name>helloworld02</servlet-name>
   <servlet-class>com.bjpownernode.javaweb.servlet.HelloServlet02</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>helloworld02</servlet-name>
   <url-pattern>/helloworld02</url-pattern>
  </servlet-mapping>
  <servlet>
   <servlet-name>login</servlet-name>
   <servlet-class>com.bjpownernode.javaweb.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>login</servlet-name>
   <url-pattern>/login</url-pattern>
  </servlet-mapping>
  <servlet>
   <servlet-name>logout</servlet-name>
   <servlet-class>com.bjpownernode.javaweb.servlet.LogoutServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>logout</servlet-name>
   <url-pattern>/logout</url-pattern>
  </servlet-mapping>
</web-app>

login.html文件

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login/logout page</title>
</head>
<body>
 <form action="/prj-servlet06/login" method="get">
 username<input type="text" name="username"><br>
 password<input type="text" name="password"><br>
 <input type="submit" value="login">
 </form>
 <form action="/prj-servlet06/logout" method="post">
  <input type="submit" value="退出系统按钮">
 </form>
</body>
</html>

 

posted @ 2017-01-17 16:28  爱笑的berg  阅读(259)  评论(0)    收藏  举报