码迷,mamicode.com
首页 > 其他好文 > 详细

002--struts2入门

时间:2015-07-30 12:59:53      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

struts2入门

1、MVC设计思想

1.1、什么是MVC
  是一种设计思想,非常优秀的设计思想.根据职责不同将应用程序的组件分成三部分。
  Model模型:负责业务数据和业务处理.
  View视图:负责显示和接收用户输入.
  Controller控制器:协调模型和视图

1.2、MVC在JavaWeb中的体现
   Model:DAO,Entity,Util
   View:JSP
   Controller:Servlet

1.3 、MVC工作的基本流程
  a.客户端发请求,请求交给前端控制器处理
  b.前端控制器维护一个XML配置文件
  (XML定义了请求和Action之间的对应关系)
  c.前端控制根据请求调用相应的Action组件,执行请求处理
  d.Action处理完毕,可以将处理结果存放到Request
  e.控制器调用相应的视图JSP,进行响应处理

1.4、mvc的作用

  1.各施其职,互不干涉
    在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
  2.有利于开发中的分工
    在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控层。
  3.有利于组件的重用
    分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。

  通过以上作用大大提高开发及维护效率。

2、struts2入门

2.1、struts2使用原因

  实现了mvc思想是项目层次清晰,大大提高开发效率。

2.2、执行流程

  请求action-->web.xml(filter控制器)-->struts.xml(Action配置)-->action类方法-->struts.xml(result配置)

2.3、xml基本配置

     struts是配置文件的根元素,可以包含多个package元素。

  package:作用是将Action分组管理,内部可以定义多个Action.

    *name属性:包名称.
    *extends属性:继承哪个package,一般情况下继承自struts-default.
      namespace属性:用于限定action请求名,默认值是"/"

  action:作用是定义请求和Action组件之间的对应关系

                *name属性:action组件对应的请求名
                *class属性:指定action组件的实现类,包名.类名格式
                  method属性:指定要调用action类中哪个方法.默认值是execute

     <result>:作用是定义响应视图
    *name属性:响应视图标识符,该标识符与action组件方法返回值对应.
      type属性:指定响应视图类型,默认值是dispatcher,请求转发

2.4、OGNL技术

  属于表达式语言,可以访pageContext,request,session,application存储范围的数据.可以简化JSP程序.

  OGNL标准结构:3个重要组成部分,一个OGNL引擎,一个是root对象,另一个是context对象.

  使用"key"格式访问root对象的属性,使用"#key"格式访问context区域需要。

     User类属性:

private String name;

  UserAction属性及方法:

       private String hello;
       private User   user;
       private String[] roles;
       private List    organs ;
       private Map     map;	 
	public String execute(){
		hello = "Hello,cft";
		user = new User();
user.setName("cft"); roles = new String[]{"超级管理员","系统管理员"};
organs = new ArrayList();
organs.add("广东省级机构1");
organs.add("广东省级机构2");
map = new HashMap();
map.put("rolesize",roles.length());
map.put("organsize",roles.size()); HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("msg", "Hello Request"); return "success"; }

  访问root对象的基本类型属性: 

<s:property value="hello"/>

  访问root对象的对象类型属性

<s:property value="user.name"/>

  访问root对象的数组类型属性:

<s:property value="roles[0]"/>

  访问root对象的List类型属性:

<s:property value="organs[1]"/>

  访问root对象的Map类型属性:

<s:property value="map.rolesize"/>
<s:property value="map[orgasize]"/>

  访问context对象基本类型属性:

<s:property value="#request.msg"/>

2.5 、Action如何使用request,session,application  

 Action实现以下Aware接口:

  RequestAware
  SessionAware
  ApplicationAware
  ServletRequestAware
  ServletResponseAware
  ServletContextAware

3、demo构建

 

002--struts2入门

标签:

原文地址:http://www.cnblogs.com/cft11231/p/4688549.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!