zoukankan      html  css  js  c++  java
  • JAVA EE 学习笔记[V4 Struts 2框架试水]

    Going on

      在有前面一些基础的时候可以把目光放向更远的地方了。Java EE 开发框架(刚开始接触有大佬告诉我这个是用来偷懒的,但既然存在,不可能只为偷懒)在一定程度上框架减轻了维护和开发压力,而Struts作为三大框架(还有Spring Hibernate)之一,也发展到了Struts2。要说起框架在Java EE开发过程中的地位,那如图:

    若把Web应用看作是大楼,那框架则是每个房间单独的骨架,有了这个东西,建房写应用岂不美滋滋。

    我在清楚的认识自己目前水平之后,理解和搞懂MVC模式下Struts框架是有一定困难的,但是使用是要掌握的。搞事:

    什么是MVC模式?

        MVC模式将页面功能划分为控制器controller, 模型model,视图view三部分。

          Jsp负责生成动态网页,只用做显示页面(V)。

          Servlet负责流程控制,用来处理各种请求的分派(C)。

          JavaBeans负责业务模型,以及对数据库的操作(M)。

    MVC模型的特点

       视图:视图是用户与之交互的界面。视图最大的作用就是输出数据并允许用户操作,它不关心数据的处理及操作的处理等工作,这些处理操作都交由控制器来完成。

       模型:在这三个部件中,模型拥有最多的处理任务。简单地说,模型部分就是对数据库的操作。模型一般被控制器调用。

                 由于模型的代码只写一次就可以被多个视图重用,所以减少了代码的重复性。

       控制器:控制器主要接收用户的输入并调用模型和视图来完成用户的需求。它本身不输出任何东西做任何处理。

                    它只接收请求并决定调用哪个模型来处理请求,然后确定用哪个视图来显示模型处理返回的数据。

    MVC模型的优点

       低耦合性:各个模块各司其职,互不干涉,有利于开发中人员分工和组件重用。

       高重用性和可适用性:随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。

       可维护性:分开视图层和业务逻辑层也使得Web应用更易于维护和修改。

                        适合多人合作开发大型web项目 有利于软件工程化管理:

                        由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。

    在这个模式下出现很多框架,而Struts1,Struts2,就是其中的两个框架

    Struts框架的结构和工作流

    (1)客户端发出请求,ActionForm封装数据,然后提交给ActionServlet。

    (2)ActionServlet根据请求信息找到指定的Action,并将请求转发给Action。

    (3)Action调用JavaBean(即模型)提供的业务逻辑方法处理请求,并返回ActionForward。

    (4)ActionServlet根据ActionForward信息将请求转发给JSP页面。

    (5)将最终页面返回给客户端。

    啧啧。既然了解了工作原理图,我们继续按照惯例(依旧是熟悉的Myeclipse 2016 CI4):

     我们尝试用Struts2框架:

    创建完毕,我们添加框架

     

    此时我们查看生成的xml文件:

    这个人把映射位置给到了index.jsp和default.jsp,为了方便测试,我把它改为:

    然后在web-root目录下我创建login.jsp:

    然后写入一个登陆的demo:

    <%@ page language="java"  pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
        <title>登录页面</title>
        </head>
        <body>
        <form action="login.action" method="post">
        <table align="center" border=1  width="300" bgcolor=#F5FFE1>
        <tr><td colspan="2" align="center"  width="250" bgcolor="#CCCCFF">用户登录界面</td></tr>
        <tr><td width="50">姓名:</td><td><input type="text" name="username"/></td></tr>
        <tr><td width="50">密码:</td><td><input type="password" name="password" size=22/></td></tr>
        <tr><td  align="center" colspan=2><input type="submit" value="登录" />
     <input type="reset" value="重置" /></td></tr>
        </table>
        </form>
        </body>
    </html>

    继续创建一个.java在src目录下:

    写入登陆的控制器内容:

    package org.action;
    public class LoginAction {
        private String username;
        private String password;
        public String getUsername() {
    return username;
        }
        public void setUsername(String username) {
    this.username = username;
        }
        public String getPassword() {
    return password;
        }
        public void setPassword(String password) {
    this.password = password;
        }
        public String execute(){
         //不做任何判断直接返回“success”
    return "success";           
        }
    }

    然后对Struts.xml做出以下改动:

     在登陆成功之后会跳转到welcome.jsp,没有这个,继续:

    <%@ page language="java" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
         <head>
         <title>欢迎界面</title>
         </head>
         <body bgcolor=#F5FFE1>
            欢迎您!${username }
         </body>
    </html>

     搞定这些东西也算一个简易的Demo制作完成

    在上面这个过程执行当中完成了一下事件:

    (1)浏览器请求login.jsp中表单action事件;

    (2)struts容器接收到了login.action的请求,根据web.xml中的配置,服务器将包含有.action后缀的请求转到“FilterDispatcher”类进行处理,进入Struts 2的流程中。

    (3)框架在struts.xml配置文件中查找名为“login”的action对应的类LoginAction。框架初始化该Action并且执行该Action类的execute方法。

    (4)框架检查struts.xml以查看当返回时对应的页面。

            框架告诉容器来获得请求返回的结果页面welcome.jsp,在该页面中用EL表达式输出存在值栈中的值。(这里也可以用Struts 2提供的标签来输出)

    而Struts2的结构主体是Action类,以及配合该类的三层过滤器filter和配置文件struts.xml。除此以外,视图层还配合有struts专用标签库、模板库等。

    由上图可得 这个过程当中没有Servlet什么事情=-=这就很尴尬了。而单纯的java类的出现也让整个程序变得低耦合高内聚了(软工老师口头禅)

    Struts2框架的特点

      Servlet退让!可以看出在整个流程中,没有servlet什么事。

      一切都通过更强大的java类进行程序设计。避免了struts1中JSP和servlet因为耦合过于紧密,导致视图层和控制器纠缠不清的问题。

      提供了对MVC的一个清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言。

      对于一个需要经过多层处理才能返回的请求,可以   使用过滤器和拦截器一层层地实现。 OGNL表达式语言功能强大,可以代替JSTL标签库。

    通过对struts2框架的试用,很明显感受到了其主体Action类的重要性=-=很明显,今天我是消化不了了。改日继续

     (PS:再次致谢迪哥=-=,还有其实框架环境变量配置以及搭建蛮麻烦的,我这是沾了IDE的光)

  • 相关阅读:
    Java程序员面试宝典
    毕设进度19
    毕设进度18
    毕设进度17
    毕设进度16
    毕设进度15
    毕设进度14
    毕设进度13
    css笔记
    14.10源
  • 原文地址:https://www.cnblogs.com/Stringair/p/6675571.html
Copyright © 2011-2022 走看看