歡迎您光臨本站 註冊首頁

用servlet完成一個controller

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
  大家說一下我的思路吧!
  首先要想做mvc模式m與v都是靠自己寫了
  不過沒有c太累了
  那麼contraller的簡單的作用就從客戶端來一個請求找到對應的javabean來處理
  首先要做一個servlet能接收所有的請求這個很容易了
  不過要怎麼樣調一個javabean的方法
  那麼只能由我們來定義一個介面
  讓使用者來實現我們的介面我們就可以用到java的多態來調用其方法了
  這也就是介面回調了
  那下面就看一下代碼的寫法了
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  /*
  *anthor@ ljp;
  *這也就是我們定義的一個介面了
  *讓我們的使用者來實現定義的這個介面
  *反回值的意思就是應答的url
  */
  public interface Action{
  public String execute(HttpServletRequest req, HttpServletResponse res);
  }
  import java.io.IOException;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  /*
  * 這是我們做一個servlet用來接收所有請求的servlet
  */
  public class ActionServlet extends HttpServlet{
  @Override
  public void service(HttpServletRequest req, HttpServletResponse res)
  throws IOException, ServletException {
  //這是來獲得客戶端發來請求url-partten
  String path=req.getServletPath();
  //2javabean
  try{
  //這是通過ActionMap.getBean(path);去找對應的javabean來處理這個請求
  Action action=ActionMap.getBean(path);
  String url=action.execute(req, res);
  req.getRequestDispatcher(url).forward(req,res);
  }catch(Exception e){
  e.printStackTrace();
  }
  }
  }
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.Properties;
  /*
  * 這是用來找對應的javabean的一個工具
  */
  public class ActionMap{
  private static Properties env=new Properties();
  static{
  try{
  //讀取配製文件
  InputStream is=ActionMap.class.getResourceAsStream("/env.properties");
  env.load(is);
  is.close();
  }catch(IOException e){
  throw new ExceptionInInitializerError(e);
  }
  }
  public static Action getBean(String path) throws Exception{
  try{
  String bean=(String)env.get(path);
  //利用反射來創建Action對象
  return (Action)Class.forName(bean).newInstance();
  }catch(Exception e){


  e.printStackTrace();
  throw e;
  }
  }
  }
  這就是一個簡單控制器的模型.
  如有不懂的可以提問.


[火星人 ] 用servlet完成一個controller已經有266次圍觀

http://coctec.com/docs/java/show-post-59996.html