Struts2.0------HelloWord以及工作原理

struts2 工作原理:

一个请求在Struts 2框架中的处理大概分为三个步骤
第一:客户端提交一个(HttpServletRequest)请求
            如在浏览器里面输入 http://localhost:8080/reg.jsp就是提交给一个

(HttpServletRequest)请求
            请求被提交到一系列的过滤器里面(Filter),如(ActionContextCleanUp,其他过滤器,

FilterDispather)。注意这是有先后顺序的。
         FilterDispather是控制器的核心,就是MVC的Struts
第二 :实现中控制器的核心。
         FilterDispatcher 询问ActionMapper是否需要调用某个Action来处理HttpServletRequest请求

,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交给ActionProxy。
         ActionProxy通过Configuration Manager(struts.xml)询问配置文件,找到需要调用的Action

类。比如注册 UserReg 类。
第三: ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,

在调用之前,ActionInvocation会根据配置加载Action相关的所有拦截器(Interceptor)
,一旦Action调用完毕,ActionInvocation负责根据struts.xml中的配置找到相应的result视图,返回结

果。
struts 2 的核心控制器是FilterDispatcher,有三个重要的方法:destroy(),doFilter(),init();
 

-----小技巧----打开记事本 CMD--notep

 

 

------reg.jsp-----------------------------------------------------------------------------------------------------------------

   <body>
      <form action="user.action" method="post">
        <input type="text" name="username"/><br/>
        <input type="text" name="password"/><br/>
        <input  type="submit"  name="save"/>
      </form>
  </body>

 

------success.jsp----------------------------------------------------------------------------------------------------------

  <body>
       username=  ${username};
       password=  ${password};
  </body>

 

------com.panhe.cn.HelloWorldAction---------------------------------------------------------------------------------

package com.panhe.cn;

import com.opensymphony.xwork2.ActionSupport;


public class HelloWordAction  extends ActionSupport{
 private String username;
 private String password;
    public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  System.out.println(username);
  this.username = username;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  System.out.println(password);
  this.password = password;
 }
 @Override
    public String execute() throws Exception {
     
     return SUCCESS;
    }
 
}

------struts.xml------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<!--struts2 总共有四类配置文件
    struts.properties :  定义框架自身的全局变量
    strurs.default.xml:  定义框架自身的使用的action映射以及result定义
    struts-plugin.xml :  struts插件使用的配置文件,比如当使用strtus和spring结合的时候就需要
                          在 web.xml 中引用该配置文件。
    strtus.xml 定义应用自身使用的action映射以及result定义;当我们一般将应用的各个模块分到不同的配置文件里面       :                           
    struts.properies定义的全局属性也可以在strtus.xml文件中定义
  -->
  
<!-- 四个配置文件的执行顺序
  strurs.default.xml  struts-plugin.xml  strtus.xml  struts.properties  web.xml
 -->


<struts>
     <!--必须是.action结尾的才能被Struts2框架管理  -->

 <!--动态方法的调用  -->
 <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 <!--设置开发模式  -->
 <constant name="struts.devMode" value="false" />
 <!--
  name 表示模版名称 namespace 表示空间名称,URL后面要自带的 extends
  struts是必须继承这个文件,因为里面会有很多定义的拦截器的
 -->
 <package name="user" namespace="/" extends="struts-default">
  <!--name 的名字 class是我要关联的类
    method 最默认值execute方法
    result 默认值是success试图
   -->
  <action name="user" class="com.panhe.cn.HelloWordAction"
   method="execute">
   <result name="success">/success.jsp</result>
  </action>
 </package>
</struts>

------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">
 <!--配置文件  Strtus2.0过滤器-->
 <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>

 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

-----------------------------------------------------------------------------------------------------------------------

你可能感兴趣的:(xml,jsp,工作,struts,javaee)