博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2 入门到精通 (一)
阅读量:5141 次
发布时间:2019-06-13

本文共 2238 字,大约阅读时间需要 7 分钟。

一、为什么要使用 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
map = new HashMap
();    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
actions = (Map
)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 页面

转载于:https://www.cnblogs.com/julysun/p/8110590.html

你可能感兴趣的文章
MyBaits动态sql语句
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JAVA开发环境搭建
查看>>
django迁移数据库错误
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
ad logon hour
查看>>
罗马数字与阿拉伯数字转换
查看>>
距离公式汇总以及Python实现
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
php match_model的简单使用
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
移动开发平台-应用之星app制作教程
查看>>
如何在maven工程中加载oracle驱动
查看>>