struts2 jsp跳转action 404_Java的学习(43)Struts2(一)

基础配置:

创建web工程

将struts2-blank.war中的lib下的包导入工程

把struts2-blank里classes目录下的struts.xml配置文件拷贝到工程的src下

web.xml中配置struts的过滤器

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

struts.xml配置action

3df58db3f366150fa6ae060b777d30b6.png

编写HelloAction类

2148593d8b9c349c274656aa64b14dd8.png

WebContent中添加一个success.jsp页面

cd596090835228f89e46d296199d3632.png

Tomcat运行Web工程成功访问:http://localhost:8080/hello 或 hello.action

Struts执行流程

  1. 客户端发送一个HTTP请求
  2. 该请求被struts2的核心过滤器StrutsPreparedAndExecuteFilter匹配(只要是在过滤器的url-pattern中配置了/*,那么任何请求都会进入该过滤器,无论该请求是否需要struts2来处理),当然,在进入这个过滤器之前会依次进入在web.xml中配置的位置在struts2过滤器之前的其他Filter或Servlet
  3. struts2的过滤器会询问(形象一点的说法,其实就是调用方法)ActionMapper该请求是否有与之对应的业务控制类,如果没有,则放行,如果有,进入下一步执行流程
  4. struts2通过ActionProxy实例化ActionInvocation,当然在这之前ActionProxy还会通过ConfigurationManager按序加载struts2的配置文件:default.properties, struts-default.xml, struts.properties, struts.xml…(先加载struts默认的,然后才是自己定义的),正是因为加载了这些配置文件所以struts才能找到相应的拦截器以及业务控制类。
  5. ActionProxy初始化一个ActionInvocation并通过它的invoke来正式执行一系列的拦截器以及Action,在执行完Action之后会根据使用的模板(jsp, velocity, freemarker…)组装结果集Result,渲染页面
  6. 返回给客户端响应

修改struts的访问后缀

第一种struts.xml的配置文件中添加 <constant name="struts.action.extension" value="do">

第二种web.xml中配置

c1ff6104a791230cdcca938dd08074bb.png

配置struts的开发模式(显示更多错误信息)

struts.xml中配置

41704a3b71eef23803db01b2af66e5aa.png

访问地址namespace

f9ed60b80e87ef89de607dc5a6fe8c34.png

http://localhost:8080/user/hello

动作类action的写法

17c69f55d4cbaf4d7c178c86da53d35d.png

通配符优化struts.xml代码

9411ee3482d601cdd18db9a98733e909.png

result中type的取值

  1. dispatcher 转发到页面
  2. redirect 重定向到页面
  3. chain 转发到action
  4. redirectAction 重定向到action

c840462030e50cbdfb26b80595de2650.png
重定向页面

e3a4fe662f81d76514556a3fecc53672.png
转发同一名称空间的action

c986b44f06fbdb14ce9846f4ca700f56.png
重定向同一名称空间的action

898c008f44c7153ff750a5dfd7d44d9d.png
转发不同名称空间的action

644211e2725842d801631b5bf1548cb0.png
重定向不同名称空间的action

全局result

5382efde0373dff1eb0e63b962b3ea60.png

action获得request,response

9aa2dcb8556f76a0ef38f1276da9a357.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值