MVC模式-----struts2框架(2)
MVC模式-----struts2框架
第一个struts2程序
struts2框架是通过一个过滤器将struts2集成到Web应用程序中的,这个过滤器的对象是StrutsprepareAndExecuteFilter。struts2框架通过过滤器对象,获取web应用中的Http请求,并将http请求转发到的指定Action进行处理,Action根据处理结果返回给用户相应的页面。
创建一个简单的struts项目,需要创建于用户进行交互并获取输入信息的jsp页面:呈现最终信息的页面;创建一个用于业务逻辑处理的类;创建用于连接动作、视图及控制器的配置文件。
一、创建JSP页面
在web项目这,创建一个输入信息的index.jsp页面,通过form表单的action属性值调用struts框架中的Action对象,提交后,呈现success.jsp页面。
(补充form知识点:表单中的action属性规定在提交表单数据时,向何处发送数据)
http://localhost:8080/struts/index.jsp页面:
使用form表单提交用户的输入信息,输入的用户信息的name属性值与Action对象中的属性必须一一对应,从而方便控制器Action通过getXxx()方法获取用户的输入信息。
二、创建Action
在struts2框架中,提交的表单数据会自动注入到实现Action接口类对象相应的属性中,与Spring框架中的IOC注入原理相同。在实现Action接口的类中,一般通过setter方法为对象的属性进行注入。
Action对象的作用是处理用户的请求,创建继承ActionSupport的类,用于处理用户提交的表单信息。
目录:struts\src\action\MessageAction.java:
案例解析:本案例中,创建继承ActionSupport的类,用于处理用户的输入信息。该类中定义String型的私有成员变量message,并定义其setter和getter方法,通过getMessage()方法获得用户输入的信息。声明Map型的变量session,通过ActionContext类提供的getContext()方法获取ActionContext类的对象,再通过该对象调用getSession()方法获取Map型的变量session,将用户输入的信息message保存到session中。
在该类中重写execute()方法,通过if语句判断用户输入的信息是否是空字符串或null,若是则str为“输入信息不能为空!”,否则执行else语句,str是“信息不为空!”。通过if语句判断str的值,若值是“信息不为空!”,则返回字符串success,否则返回failed。
三、struts.xml文件
在struts.xml配置文件中,配置用户请求URL和控制器Action之间的映射信息,并转发用户的请求。
struts\src\struts.xml配置文件代码:
案例解析:本案例中,<action>节点没有指定method属性的值,则默认执行execute()方法。根据Action类中execute()方法的返回值,执行相应的<result>节点。若注册成功,则success.jsp页面返回注册信息;否则返回到注册页面。<package>节点的name属性指定包的名称,在struts2的配置文件中不能重复,它并不是真正的包名,只是为了管理Action。namespace和<action>节点的name属性,决定Action的访问路径(以“/“开始)。<action>节点的class属性指定类的路径,包含包名和类名。method指定类中的方法。<result>节点的name属性默认值为success。
四、web.xml文件
配置文件web.xml是一种J2EE配置文件,决定servlet容器的http元素需求如何进行处理。严格地说,它是配置struts2框架的文件。
在struts1.x中,struts框架是通过servlet启动的,而在struts2.x中,struts框架是通过Filter过滤器启动的。
web.xml配置文件代码:
案例分析:该web.xml文件是struts2框架请求的接入点,接入点是一个过滤器,因此在web.xml中定义一个StrutsPrepareAndExecuteFilter类的接入点。
在StrutsPrepareAndExecuteFilter类的init()方法中,读取类路径下默认的配置文件struts.xml,然后完成初始化操作。
过滤器<filter>节点中定义过滤器名称<filter-name>是struts2,并通过<filter-class>指定struts2类的全限定名,即包名和类名。在<filter-mapping>节点中<filter-name>指定名称与之前定义的相同,并通过<url-pattern>节点指定过滤器要过滤的文件的后缀名是*.action。
五、显示信息
在struts.xml配置文件中,配置了Action对象处理完成后,显示用户输入信息的页面success.jsp
地址:http://localhost:8080/struts/success.jsp
案例分析:通过session对象的getAttribute()方法,获取存储的用户输入信息message,并在页面显示。
六、运行并浏览器查看