struts2学习笔录其一
下一章:Action的配置和返回结果的配置http://www.cnblogs.com/suxi-blog/articles/6036873.html
struts是一种基于MVC框架的设计模式(MVC:Model-View-Controller).MVC的优点是大体可以理解为:降低了各层的耦合性,提供了应用的可扩展性,更加有利于软件工程的管理。MVC框架推荐应该避免让浏览者直接访问web应用页面,用户的所有请求都只应向控制器发送,由控制器调用控制器用模型组建向客户呈现数据。
struts2应用的开发流程:(请先把相关的外包导入。)
一.在web.xml配置Filter来拦截用户的用户的请求(对于初学者建议:直接从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>
2.如果是以POST方式发送请求的话,则要定义包含表单数据的页面(如:jsp里的form表单)
3.定义处理处理用户Action的类(即java类)
4. 配置Action的xml文件(其作用是:指定那个请求对应那个Action处理类)
<package name="loginpackage" namespace="/" extends="struts-default">
<action name="login" class="com.login.LoginAction">
<result name="error">/error.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
5.配置处理结果与返还界面的关系(即返回数据发往哪个界面)
<result name="error">/error.jsp</result>
<result name="success">/success.jsp</result>
6.编写界面
(扩展:StrutsPrepareAndExcuteFliter和*.Action共同构成struts2的控制器)
二.struts2的常规配置
1.常量的配置(struts2的常量对于整个struts框架都起作用。)
struts2所支持的常量由于太多就不在这个介绍,感兴趣的朋友可以去看看struts2-core-2.3.16.3.jar包。
其配置方式有三种:
通过struts.properties文件(一般不推荐使用)
通过struts.xml配置文件:<constant name="常量" value="引用"/>
通过Web应用的web.xml文件:
<init-param>
<param-name>常量</param-name>
<param-value>引用</param-value>
</init-param>
2.包含其他配置文件:<include file="*.xml"/>
三.实现Action
1.struts2直接使用Action来分装HTTP请求参数(注意:一定要在java处理类中添加setter方法,getter方法可以加起,初学者最好都加起。)
2.使用接口Action和ActionSupport(这里推荐使用ActionSupport,ActionSupport是继承Action的,里面分装了很多的方法,ActionSupport也是struts2的默认的Action处理类。下面我们也只介绍ActionSupport)
3.Action访问ServletAPI
是通过ActionContext类来实现的,常用方法就是对于Application 、Session、Request的set与get方法以及一个Objexct get(Object key)方法。
4.Action直接访问ServletAPI
就是一个实现下面的几个接口:ServletContextAware、ServletRequestAware、ServletResponseAware。即给接口的变量一个setter方法就行了。(既可以直接使用response等Servlet了。)
有人会问为什么不直接使用HttpServletResponse像jsp中的一样?因为HttpServletResponse不能响应服务器,而且Action只是业务控制器。
5.使用ServletActionContext访问ServletAPI(不推荐使用,因为它是与ServletAPI直接耦合的。就不介绍了。)
完整的Action实现代码:
public class LoginAction extends ActionSupport
{
Login login;
public Login getLogin()
{
return login;
}
public void setLogin(Login login)
{
this.login = login;
}
public String execute() throws Exception //默认的处理方式
{
ActionContext ctx=ActionContext.getContext();
Integer counter=(Integer)ctx.getApplication().get("counter");
if(counter==null)
{
counter=1;
}else{
counter=counter+1;
}
System.out.println(counter);
ctx.getApplication().put("counter", counter);
ctx.getSession().put("user", login.getUsername());
if(login.getUsername().equals("suxi")&&login.getPassword().equals("sx"))
{
ctx.put("tip", "服务器提示:您已经成功的登入!");
return this.SUCCESS;
}
ctx.put("tip","服务器提示:您登入失败!");
return this.ERROR;
}
}
(其中的有些代码可能初学者看不懂,不要慌,后面会慢慢介绍的。)
-----------------------------------------------------------------------------------------------------------------------------------------
就先做到这里,大家先消化一下。如果有什么错,请及时提出。谢谢。
下一章:Action的配置和返回结果的配置http://www.cnblogs.com/suxi-blog/articles/6036873.htm