zoukankan      html  css  js  c++  java
  • Struts2的简单认识

    首先展现在大家面前的是一张Struts2的工作原理图

    Struts2的运行流程

    1)  客户端初始化一个指向Servlet容器(例如Tomcat)的请求。
    2)  这个请求经过一系列的过滤器(Filter)。
    3)  接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。
    4)  如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。
    5)  ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
    6)  ActionProxy创建一个ActionInvocation的实例。
    7)  ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
    8)  一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
    Struts2的核心就是拦截器。Struts.xml中所有的package都要extends="struts-default"。同理与所有的Java类都要extends自Object一样。struts-default.xml里面就是要做以上事情。

    Struts2的运行机制

    1)客户端在浏览器中输入一个url地址。
    2)这个url请求通过http协议发送给tomcat。
    3)tomcat根据url找到对应项目里面的web.xml文件。
    4)在web.xml里面会发现有struts2的配置。
    5)然后会找到struts2对应的struts.xml配置文件。
    6)根据url解析struts.xml配置文件就会找到对应的class。
    7)调用完class返回一个字String,根据struts.xml返回到对应的jsp。

     案例如下:

    第一步:把struts2的jar包加入的项目中

    如图:基本的八个jar包

    第二步:在web.xml中加入拦截器配置。

    代码如下:

     1 <filter>
     2         <filter-name>struts2</filter-name>
     3         <filter-class>
     4             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
     5         </filter-class>
     6     </filter>
     7     <filter-mapping>
     8         <filter-name>struts2</filter-name>
     9         <url-pattern>/*</url-pattern>
    10     </filter-mapping>

    第三步::把空的struts.xml配置文件放到项目src下面。

       <struts>
       
    </struts>

    第四步:编写自定义的action类。

    代码如下:

     1 package cn.bdqn.Struts2.Dao;
     2 
     3 
     4 
     5 import java.util.Map;
     6 
     7 import org.apache.struts2.interceptor.SessionAware;
     8 
     9 import cn.bdqn.Struts2.entity.User;
    10 
    11 import com.opensymphony.xwork2.Action;
    12 import com.opensymphony.xwork2.ActionContext;
    13 
    14 public class Struts implements Action {
    15     private User user;
    16     private Map<String, Object> session;
    17     public String execute() throws Exception {
    18         if (user.getUsername().equals("admin") && user.getPassword().equals("123")) {
    19             //记录session
    20             //session = ActionContext.getContext().getSession();
    21             session.put("name",user.getUsername());
    22             session.put("pwd", user.getPassword());
    23             return "success";
    24         }else {
    25             return "error";
    26         }
    27         
    28     }
    29     public Map<String, Object> getSession() {
    30         return session;
    31     }
    32     public void setSession(Map<String, Object> session) {
    33         this.session = session;
    34     }
    35     public User getUser() {
    36         return user;
    37     }
    38 
    39     public void setUser(User user) {
    40         this.user = user;
    41     }
    42 
    43     
    44     
    45 
    46 }

    第五步:编写struts.xml配置文件

    代码如下:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4     "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 
     6 <struts>
     7     <constant name="struts.devMode" value="true" />
     8     
     9     <package name="default" namespace="/" extends="struts-default">
    10 <!-- 
    11         <action name="index" class="cn.bdqn.Struts2.Dao.Struts">
    12             <result  name="success">index2.jsp</result>
    13             <result  name="error">fail.jsp</result>
    14         </action>
    15          -->
    16         
    17         <action name="index2" class="cn.bdqn.Struts2.Dao.Demo">
    18             <result  name="success">index2.jsp</result>
    19             <result  name="input">index.jsp</result> 
    20         </action>
    21         
    22     </package>
    23 </struts>

    第六步:编写index.jsp文件

    代码如下:

     1 <body>
     2     <div>
     3         <h1>用户登录</h1>
     4         <s:fielderror fieldName="Username" />
     5         
     6                 <%--<s:property value="errors.password">
     7             --%><form action="index2.action" method="post">
     8                 用户名:<input type="text" name="user.username" /><br /> 密 码:<input
     9                     type="text" name="user.password"><br /> <input
    10                     type="submit" value="提交" />
    11             </form>
    12             <s:debug></s:debug>
    13     </div>
    14 </body>

    第七步:启动tomcat,在浏览器中访问

     http://localhost:8080/StrutsDay02

    然后就会出现你的成果了!

  • 相关阅读:
    MySQL Error--存储inode用完后报设备没有空间
    MySQL Binlog--基于ROW模式的binlog event大小限制
    MySQL Transaction--网络丢包导致长时间未提交事务
    java核心技术第四篇之JDBC第二篇
    java核心技术第三篇之JDBC第一篇
    java核心技术第二篇之数据库SQL语法
    JVM垃圾回收器原理及使用介绍
    JVM中优化指南
    MySQL常用工具、日志及读写分离
    java基础第十九篇之Xml
  • 原文地址:https://www.cnblogs.com/yhsj/p/5259149.html
Copyright © 2011-2022 走看看