• 1. Struts 2配置详解第二章
  • 2. 回顾与作业点评使用Struts 2 开发程序的基本步骤是什么? Struts 2中如何获取Servlet的session对象? Struts 2 表单标签和普通HTML表单标签有什么不同之处?
  • 3. 预习检查Struts 2 Result元素的作用是什么? Struts 2中开发一个Action有几种方法? Struts 2中如何解决中文乱码问题?
  • 4. 本章任务实现租房网中文乱码的解决 实现租房网用户注册 实现租房网房屋信息的发布
  • 5. 本章目标掌握Struts 2的基本架构 掌握struts.xml中的各项内容 掌握action元素与result元素的配置 掌握Struts 2中文乱码的解决
  • 6. Struts 2基本结构4-1 租房网登录程序运行流程图 login.jsp核心控制器ActionResultmanager.jsp
  • 7. Struts 2基本结构4-2 核心控制器 需要在web.xml中进行配置 对框架进行初始化,以及处理所有的请求 struts2 org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter struts2 /* Struts 2.0版本的核心控制器为org.apache.struts2.dispatcher.FilterDispatcher
  • 8. Struts 2基本结构4-3 Action 开发Action 实现Action接口 继承ActionSupport类 普通的Java类 配置Action … /page/manage.jsp /page/login.jsp /page/error.jsp
  • 9. Struts 2基本结构4-4 Result 作用:调度视图以哪种形式体现给客户端(Action处理结束后,系统下一步将要做什么) name属性表示result逻辑名,result元素的值指定对应的实际资源位置… /page/manage.jsp /page/login.jsp /page/error.jsp
  • 10. Struts 2配置文件4-1struts.xml 核心配置文件,主要负责管理Action 通常放在WEB-INF/classes目录下,在该目录下的struts.xml文件可以被自动加载…
  • 11. Struts 2配置文件4-2struts.xml constant元素 配置常量,可以改变Struts 2框架的一些行为 name属性表示常量名称,value属性表示常量值 …
  • 12. Struts 2配置文件4-3struts.xml package元素 包的作用:简化维护工作,提高重用性 包可以“继承”已定义的包,并可以添加自己包的配置 name属性为必需的且唯一,用于指定包的名称 extends属性指定要扩展的包 namespace属性定义该包中action的命名空间 ,为可选属性… 除非有令人信服原因,自定义的包应该总是扩展struts-default包
  • 13. Struts 2配置文件4-4struts-default.xml Struts 2默认配置文件,会自动加载 struts-default包在struts-default.xml文件中定义 struts-plugin.xml Struts 2插件使用的配置文件 如果不开发插件,不需要编写该配置文件 加载顺序 struts-default.xml—>struts-plugin.xml —>struts.xml —>web.xml
  • 14. 练习——租房网中文乱码解决 需求说明: 解决租房网中文乱码问题 提示: 完成时间:10分钟
  • 15. Struts 2 Action 5-1Action的作用 封装工作单元 数据转移的场所 返回结果字符串 public class HelloWorldAction implements Action { private String name = ""; private String message = ""; public String execute() { this.setMessage("Hello,"+this.getName()+"!"); return SUCCESS; } //...省略setter/getter方法 }
  • 16. Struts 2 Action 5-2动态方法调用 作用:减少Action数量 使用:actionName!methodName.action 禁用:将属性strutsenableDynamicMethodInvocation设置为false public class UserAction implements Action { … public String login() { … } public String register() { … } } /page/manage.jsp /page/success.jsp /page/login.jsp /page/register.jsp /page/error.jsp 调用UserAction的login()方法 /user!login.action 调用UserAction的register()方法 /user!register.action 演示示例:动态方法调用
  • 17. Struts 2 Action 5-3method属性 优点:避免动态方法调用的安全隐患 缺陷:导致大量的Action配置 public class UserAction implements Action { … public String login() { … } public String register() { … } } /page/manage.jsp /page/login.jsp /page/error.jsp /page/success.jsp /page/register.jsp /page/error.jsp 调用UserAction的login()方法 /login.action 调用UserAction的register()方法 /register.action 演示示例:使用method属性
  • 18. Struts 2 Action 5-4通配符(*)的使用 另一种形式的动态方法调用 /page/{1}_success.jsp /page/{1}.jsp /page/error.jsp method="login" /page/login_success.jsp /page/login.jsp /loginUser.action /registerUser.action method=“register" /page/register_success.jsp /page/register.jsp演示示例:使用通配符配置Action
  • 19. Struts 2 Action 5-5配置默认Action 如果没有一个Action匹配请求,默认Action将被执行 通过元素配置默认Action error.jsp 如果请求的Action不存在,将转发到error.jsp省略class属性,将使用ActionSupport类
  • 20. 练习——同一Action处理登录和注册 需求说明: 升级租房网,使用同一Action处理用户登录和注册请求 完成时间:20分钟
  • 21. 练习——增加默认的Action需求说明: 升级租房网,增加默认Action 完成时间:10分钟
  • 22. 共性问题集中讲解常见调试问题及解决办法 代码规范问题共性问题集中讲解
  • 23. Result配置 3-1常用结果类型 dispatcher类型 默认结果类型,后台使用RequestDispatcher() 转发请求 redirect类型 后台使用的sendRedirect()将请求重定向至指定的URL redirectAction类型 主要用于重定向到Action manage error.jsp login.jsp
  • 24. Result配置3-2 动态结果 配置时不知道执行后的结果是哪一个,运行时才知道哪个结果作为视图显示给用户public class UserAction extends ActionSupport { private String nextDispose; public String login() { ... if(user.isManager()){ nextDispose = "manager"; }else{ nextDispose = "common"; } return SUCCESS; } public String getNextDispose(){ return nextDispose; } ... } ${nextDispose} /page/error.jsp ... nextDispose要在Action中存在,并且提供其getter方法 演示示例:使用动态结果
  • 25. Result配置3-3 全局结果 全局结果可满足一个包中多个Action共享一个结果 /page/error.jsp /page/login.jsp /page/manage.jsp /page/login.jsp /page/error.jsp 不需要在包内的Action中指定error Result了全局结果位于package元素内
  • 26. 练习—成功登录后重定向至管理页面 需求说明: 用户登录成功后重定向至管理页面 实现思路: 使用redirect或者redirectAction结果类型完成时间:10分钟
  • 27. 指导——实现租房网信息发布 训练要点: Struts 2配置 Struts 2框架应用 需求说明: 判断用户是否是管理员 如果非管理员,页面跳转至首页浏览房屋信息 如果管理员登录则页面跳转至管理页面 实现思路: 升级登录程序,使用动态结果,实现不同用户浏览不同权限的资源讲解需求说明完成时间:15分钟
  • 28. 指导——实现租房网信息发布 训练要点: Struts 2配置 Struts 2框架应用 需求说明: 在管理页面点击发布发布租房信息链接,跳转至房屋信息发布页面 填写房屋信息,提交表单,实现房屋信息发布 实现思路: 编写发布房屋信息的Action并配置 编写发布信息页面讲解需求说明完成时间:20分钟
  • 29. 共性问题集中讲解常见调试问题及解决办法 代码规范问题共性问题集中讲解
  • 30. 总结package元素有Java中的包有什么异同之处? 动态方法调用和使用action元素的method属性有什么区别? Result结果类型有哪些,存在什么区别?