第一步:创建一个WEB工程,引入相关jar包,struts2-blank.war是一个struts2的空工程,将其解压后,将其lib下的所有jar包拷入工程。
第二步:创建页面
在WebContent下创建两个jsp页面,分别为demo1.jsp和demo2.jsp。在demo1.jsp中编写一个访问Action的路径。
demo1.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Struts2的入门案例</title> </head> <body> <h1>Struts2的入门案例</h1> <!-- 访问struts2的Action --> <a href="${pageContext.request.contextPath }/strutsDemo1.action">访问struts2的Action</a> </body> </html>
demo2.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Struts2跳转页面</title> </head> <body> <h1>Struts2跳转页面成功</h1> </body> </html>
点击demo1.jsp中的a标签里面的链接,需要将请求提交到服务器中的Action,所以接下来要编写Action类。
第三步:编写一个Action类
package com.zju.action; public class StrutsDemo1 { //创建一个默认的execute方法 public String execute(){ System.out.println("StrutsDemo1中的execute方法开始执行了"); //"success"与struts.xml中配置的结果视图result里的name属性名一致 return "success"; } }
Action类编写完成后,需要考虑一个问题,Struts2框架是如何识别Action类的呢?所有我们需要对Action类进行配置。
第四步:编写struts2的配置文件:struts.xml
在src下创建struts.xml。Struts2框架的核心配置文件就是struts.xml文件,该文件主要用来配置Action和请求之间的对应关系。Action映射就是将一个请求的URL映射到一个Action类,当一个请求匹配某个Action名称时,框架就使用这个映射来确定如何处理请求。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 配置一个包:package --> <package name="demo1" extends="struts-default" namespace="/"> <!-- 配置Action --> <action name="strutsDemo1" class="com.zju.action.StrutsDemo1"> <!-- 配置result结果页面跳转 --> <result name="success">/demo2.jsp</result> </action> </package> </struts>
第五步:配置web.xml
Struts2框架要想执行,所有的请求都要都需要经过这个前端控制器(核心过滤器),所以要配置这个核心过滤器。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>struts2_0</display-name> <!-- 配置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> </web-app>
第六步:部署项目
在Tomcat里发布项目,在浏览器里输入URL访问测试是否成功。
通过测试,入门案例成功!
总结一下Struts2的执行流程:
从客户端发送请求过来,先经过前端控制器/核心过滤器(StrutsPrepareAndExecuteFilter),拦截器执行完成以后,就会执行目标Action,在Action中返回一个结果视图,根据Struts.xml中的Result配置的页面进行页面的跳转。