struts2框架快速入门小案例

struts2快速入门:
  index.jsp------>HelloAction--------->hello.jsp struts2流程
  1.导入jar包
    struts2的目录结构:
      apps: 例子程序
      docs:文档
      lib:struts2框架所应用的jar以及插件包
      src:源代码
      core 它是struts2的源代码
      xwork-core struts2底层使用了xwork,xwork的源代码
    注意:在struts2开发,一般情况下最少导入的jar包,去apps下的struts2-blank示例程序中copy
  2.创建index.jsp页面
    创建hello.jsp页面

  3.对struts2框架进行配置
    1.web.xml文件中配置前端控制器(核心控制器)-----就是一个Filter(目的:是为了让struts2框架可以运行。) 

<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>

    2.创建一个struts.xml配置文件 ,这个是struts2框架配置文件(目的:是为了struts2框架流程可以执行。
      名称:struts.xml
      位置:src下(classes下)
  4.创建一个HelloAction类

//要求,在HelloAction类中创建一个返回值是String类型的方法,注意,无参数。
public String say(){
  return "good";
}

  5.在struts.xml文件中配置HelloAction

<package name="default" namespace="/" extends="struts-default">
  <action name="hello" class="cn.itcast.action.HelloAction" method="say">
    <result name="good">/hello.jsp</result>
  </action>
</package>

  6.在index.jsp中添加连接,测试

<a href="${pageContext.request.contextPath}/hello">第一次使用struts2</a>

  在地址栏中输入:http://localhost/struts2_day01/index.jsp 访问连接,就可以看到HelloAction类中的say方法执行了,也跳转到了hello.jsp.

运行流程:

用filter模拟Struts2工作原理:

public class StrutsFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {}
    public void destroy() {}
    public void doFilter(ServletRequest req, ServletResponse resp,
            FilterChain chain) throws IOException, ServletException {
        // 1.强转
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        // 2.操作
        // 2.1 得到请求资源路径
        String uri = request.getRequestURI();
        String contextPath = request.getContextPath();
        String path = uri.substring(contextPath.length() + 1);
        // 2.2 使用path去struts.xml文件中查找某一个<action name=path>这个标签
        SAXReader reader = new SAXReader();
        try {
            // 得到struts.xml文件的document对象。
            Document document = reader.read(new File(this.getClass().getResource("/struts.xml").getPath()));
            // 查找<action name=‘hello‘>这样的标签
            Element actionElement = (Element) document.selectSingleNode("//action[@name=‘" + path + "‘]");
            if (actionElement != null) {
                // 得到<action>标签上的class属性以及method属性
                String className = actionElement.attributeValue("class"); // 得到了action类的名称
                String methodName = actionElement.attributeValue("method");// 得到action类中的方法名称。
                // 2.3通过反射,得到Class对象,得到Method对象
                Class actionClass = Class.forName(className);
                Method method = actionClass.getDeclaredMethod(methodName);
                // 2.4 让method执行.
                String returnValue = (String) method.invoke(actionClass.newInstance()); // 是让action类中的方法执行,并获取方法的返回值。
                // 2.5 使用returnValue去action下查找其子元素result的name属性值,与returnValue做对比。
                Element resultElement = actionElement.element("result");
                String nameValue = resultElement.attributeValue("name");
                if (returnValue.equals(nameValue)) {
                    // 2.6得到了要跳转的路径。
                    String skipPath = resultElement.getText();
                    request.getRequestDispatcher(skipPath).forward(request,response);
                    return;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 3.放行
        chain.doFilter(request, response);
    }
}
时间: 2024-10-14 08:25:54

struts2框架快速入门小案例的相关文章

02SpringMvc_springmvc快速入门小案例(XML版本)

这篇文章中,我们要写一个入门案例,去整体了解整个SpringMVC. 先给出整个项目的结构图: 第一步:创建springmvc-day01这么一个web应用 第二步:导入springioc,springweb , springmvc相关的jar包 第三步:在/WEB-INF/下创建web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.

struts2第一个入门小案例

Struts2框架预先实现了一些功能    1:请求数据自动封装    2:文件上传的功能    3:对国际化功能的简化    4:数据校验的功能 第一:首先需要说明的是Struts就是基于MVC模式的框架!(struts其实也是servlet封装,提高开发效率!) 第二:Struts开发步骤: 开发工具:idea 1.web maven项目 2.引入maven节点 3.配置web.xml(引入struts的核心功能,配置过滤器) 4.开发action 5.配置action ----------

spring boot入门小案例

spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,application.properties中放spring boot相关配置 (2) 在pom.xml中加入spring boot 依赖包 (3)在cn.com.rxyb中新建启动类APP 1 package cn.com.rxyb; 2 import org.springframework.boot.Spri

Bmob 开发Android程序快速入门--小demo

注册Bmob帐号 在网址栏输入www.bmob.cn或者在百度输入Bmob进行搜索,打开Bmob官网后,点击右上角的“注册”,在跳转页面填入你的姓名.邮箱.设置密码,确认后到你的邮箱激活Bmob账户,你就可以用Bmob轻松开发应用了. 网站后台创建应用 登录账号进入bmob后台后,点击后台界面左上角“创建应用”,在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用. 获取应用密钥和下载SDK 选择你要开发的应用,点击该应用下方对应的“应用密钥” 在跳转页面,获取Application

Castle学习系列(九)---Windsor框架快速入门

Windsor是Castle提供的一个IOC框架,使用非常简单,支持批量注册.开始快速入门 首先引用dll 两个dll版本均是最新的3.3.0.0 新建两个接口文件IPrinter(打印接口)和ICharge(收费接口) public interface IPrinter { void RegPrint(int regID); void ClinicPrint(int chargeID); } public interface ICharge { void ClinicChcarge(); }

IDEA工具下Mybaties框架快速入门程序

本篇文章介绍在IDEA工具下mybatis快速入门程序分为以下五步 ? 1 添加依赖包 ? 2 编写pojo对象 ? 3 编写映射文件 ? 4 编写核心配置文件 ? 5 测试框架 详细如下 建立Module后 ? 1 添加依赖包   在pox.xml 添加   代码如下 <properties> <maven.coppiler.source>1.9</maven.coppiler.source> <maven.coppiler.target>1.9</

Struts2框架运行流程及案例

Struts2框架 Struts2由Struts1和WebWork两个经典的MVC框架发展起来,是一个非常优秀的MVC框架.Struts2中的execute()方法不再与servlet API耦合,因而更容易测试.Struts2支持更多的视图技术,提供了基于AOP思想的拦截机制,以及更强大更容易使用的校验功能和ajax支持. 所有的Web项目都是基于请求/响应模式而建立的.在web.xml中配置Struts的核心Filter就能将Web的流程转入到Struts框架内. Struts2的运行流程图

MyBatis框架入门小案例(关于用mybatis框架对数据库的增删改查)

1.新建一个maven项目,建好相对应的包,在https://mvnrepository.com中导入MyBatis需要的依赖,复制到配置文件中 2.在resources文件下添加mybatis-config.xml文件和mapper文件夹,mybatis-config.xml是连接mysql的主要配置,mapper文件夹存放的是对数据库增删改查的映射 mybatis-config.xml配置如下: <?xml version="1.0" encoding="utf-8

(Spring Boot框架)快速入门

Spring Boot 系列文章推荐 Spring Boot 入门 Spring Boot 属性配置和使用 Spring Boot 集成MyBatis Spring Boot 静态资源处理 今天介绍一下如何利用Spring MVC快速的搭建一个简单的web应用. 环境准备 一个称手的文本编辑器(例如Vim.Emacs.Sublime Text)或者IDE(Eclipse.Idea Intellij) Java环境(JDK 1.7或以上版本) Maven 3.0+(Eclipse和Idea Int