zoukankan      html  css  js  c++  java
  • Struts2_01_开发过程与实例说明

    一、开发Struts2应用的主要工作

      1.Model层开发

      2.在web.xml中配置FilterDispatcher

      3.开发Action类

      4.拦截器(Interceptor)的配置或自定义开发

      5.开发视图

    二、实例说明

    简单步骤:

    •   下载并导入所需jar包;
    •   开发Model层业务逻辑;
    •   开发视图文件;
    •   开发Action类;
    •   在struts.xml中配置Action类;
    •   在jsp中对应Action;
    •   在web.xml中配置FilterDispatcher;

    1.到官网下载并导入Struts2框架的主要核心jar包

       struts2必须导入的常用的五个jar包:

        * xwork-2.0.4.jar ;
        * struts2-core-2.0.11.1.jar ;
        * freemarker-2.3.8.jar;
        * ognl-2.6.11.jar;
        * commons-logging-api-1.1.jar;

    这几个文件是使用struts2时必须导入的,这是我使用时的版本,可能现在版本有所更新。

     

    2.开发Model层业务逻辑

    public class LoginService {  
         public boolean login(String cutname,String pwd){  
             if(cutname.equals("zhangsan")&&pwd.equals("123")){  
                 return true;  
             }else{  
                 return false;  
             }  
         }  
    } 

    3.开发视图文件

        <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
        <html>  
          <head>      
            <title>index starting page</title>  
          </head>  
            
          <body>  
         <!-- action 还没有指定 --> <s:form action=" "> <s:textfield name="custname" label="用户名"></s:textfield><br> <s:password name="pwd" label="密 码"></s:password><br> <s:submit value="Login"></s:submit> </s:form> </body> </html>

    欢迎页面将显示登录用户的用户名,使用EL显示请求参数的值。

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
            <title>welcome page</title>  
      </head>  
      <body>  
        Welcome,${param.custname }  
      </body>  
    </html> 

     

    4.开发Action类,调用业务逻辑,返回结果视图

    package com.struts.action;  
    import com.struts.service.LoginService;  
      
    public class LoginAction {  
        private String custname;  
        private String pwd;  
        public String getCustname() {  
            return custname;  
        }  
        public void setCustname(String custname) {  
            this.custname = custname;  
        }  
        public String getPwd() {  
            return pwd;  
        }  
        public void setPwd(String pwd) {  
            this.pwd = pwd;  
        }  
          
        public String execute(){  
            LoginService ls = new LoginService();  
            boolean flag = ls.login(custname, pwd);  
            if(flag){  
                return "success";  
            }else{  
                return "fail";  
            }  
        }  
    } 

     

    5.在struts.xml中配置Action类

    struts2的主配置文件使用struts.xml,它必须放在classes目录下,在MyEclipse中的就是src下。配置如下:

    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE struts PUBLIC   
        "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"   
        "http://struts.apache.org/dtds/struts-2.1.dtd">  
      
    <struts>  
    <package name="user"   extends="struts-default">  
        <action name="Login" class="com.struts.action.LoginAction" >  
            <result name="success" >/welcome.jsp</result>  
            <result name="fail">/login.jsp</result>  
        </action>  
    </package>  
    </struts>  

    6.在jsp中对应Action

        <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
        <html>  
          <head>      
            <title>index starting page</title>  
          </head>  
            
          <body>  
         <!-- action 指向LoginAction -->
            <s:form action="Login">  
                <s:textfield name="custname" label="用户名"></s:textfield><br>  
                <s:password name="pwd" label="密 码"></s:password><br>  
                <s:submit value="Login"></s:submit>  
            </s:form>  
          </body>  
        </html> 

    7.在web.xml中配置FilterDispatcher

    struts2通过过滤器来替代struts1.x中的actionServlet配置。在web.xml中的配置如下:

        <?xml version="1.0" encoding="UTF-8"?>  
        <web-app version="2.5"   
            xmlns="http://java.sun.com/xml/ns/javaee"   
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
          
          <filter>  
            <filter-name>struts2</filter-name>  
            <filter-class>  
                org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
            </filter-class>  
          </filter>  
          
          <filter-mapping>  
            <filter-name>struts2</filter-name>  
            <url-pattern>/*</url-pattern>  
          </filter-mapping>  
        </web-app>  

     

    三、Demo大致运行过程如下:

      1.访问:http:localhost:8080/struts2/index.jsp;

    容器执行index.jsp后,输出到客户端的仍然是解析后的HTML代码,其中表单的action值被解析为:action="/struts2/Login.action"。

      2.用户输入用户名和密码,点击登陆按钮后,则向服务器发送请求,请求URL根据表单的action生成:http://localhost:8080/struts/Login.action;

      3.web.xml中对/*的URL都配置了过滤器FilterDispatcher,所以该请求将被FilterDispatcher过滤;

      4.FilterDispatcher调用ActionMapper,ActionMapper判断URL的资源后缀。

    Login.action的后缀是.action,因此ActionMapper认为需要调用Struts2框架的Action类;

      5.FilterDispatcher将请求处理交给ActionProxy,ActionProxy认为需要调用的Action的名字是URL中去掉.action后缀的字符串,即Login;

      6.ActionProxy通过Configuration查找struts.xml,找到name=Login的Action配置;

      7.ActionProxy实例化ActionInvocation;

      8.ActionInvocation实例调用与Action有关的拦截器,以及Action类的execute方法。

      9.Action执行结束后,根据struts.xml中配置的action的result,将导航到指定的URL。

      

     

  • 相关阅读:
    jmeter如何监控服务器CPU、内存、i/o等资源
    Red hat下搭建简易实用的SVN服务器
    ICPC2021(济南)打星队线上打铁游记
    「笔记」如何优雅的造数据
    软件开发中,不要把重点放在“雕琢”上
    对公司数据库管理的看法
    工作两年来 对VB开发的感想
    对数学的一点认识
    学习面向对象语言的感受
    中国 奥运 加油!
  • 原文地址:https://www.cnblogs.com/slliang/p/2655832.html
Copyright © 2011-2022 走看看