码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2 入门到精通 (一)

时间:2017-12-25 19:34:19      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:win   uri   listener   event   dir   end   cep   冲突   void   

一、为什么要使用 struts2 以及 servlet 的优缺点

  Servlet 缺点

  1.写一个 servlet 需要在 web.xml 文件里面配置 8 行,如果 servlet 过多,则会导致 web.xml 文件里面的内容很多。

  2.当项目分工合作,多人编辑一个 web.xml 文件的时候会出现版本冲突。

  3.在一个 Servlet 中方法的入口只有一个,诸多不便。

  4.Servlet 中的方法都有两个参数 request、response,这两个参数具有严重的容器依赖性,所以在 Servlet 中写的代码是不能单独测试的。

  5.如果表单中元素很多,在 Servlet 里面获取表单数据的时候会出现很多 request.getParameter 代码。

  6.在一个 Servlet 的属性中声明一个数据,会存在线程安全隐患。(struts2 中的 action 是多实例的,每请求一次将会创建一个对象,是不存在线程安全的。

 

  Servlet 优点

  1.因为是最底层的 mvc,所以效率比较高。

  

 

二、根据所学基础知识模拟设计 struts2

  1.写一个 ActionListener 监听器 

    public class ActionListener implements ServletContextListener {

  @Override
  public void contextInitialized(ServletContextEvent servletContextEvent) {
   Map<String, String> map = new HashMap<String, String>();
   map.put("Action", "cn.july.Action");
   servletContextEvent.getServletContext().setAttribute("actions", map);
   }

   @Override
   public void contextDestroyed(ServletContextEvent servletContextEvent) {
   servletContextEvent.getServletContext().setAttribute("actions", null);
   }
   }

  2.写一个 ActionServlet Servlet
    @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  String uri = req.getRequestURI();
  String actionName = uri.substring(1);
   System.out.println("actionName:" + actionName);
  Map<String, String> actions = (Map<String, String>)this.getServletContext().getAttribute("actions");
  System.out.println("actions:" + actions);
  String className = actions.get(actionName);
  System.out.println("className:" + className);
  try {
  Class clazz = Class.forName(className);
  Method method = clazz.getMethod("excute");
  String result = (String) method.invoke(clazz.newInstance());
  System.out.println("result:" + result);
  resp.sendRedirect("/"+ result +".jsp");
  } catch (Exception e){
  e.printStackTrace();
  }
  }
  
3.写一个 Action 类
    public String excute(){
  return "login";
  }

  4.浏览器访问 http://localhost:8080/Action 即到达 login.jsp 页面

Struts2 入门到精通 (一)

标签:win   uri   listener   event   dir   end   cep   冲突   void   

原文地址:https://www.cnblogs.com/julysun/p/8110590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!