struts2_part3
一、定义错误提示信息1)在action中,通过 this.addFieldError("name","name is error"); //定义错误提示信息
2)在JSP页面中,查看错误信息
方式一:
<s:fielderror fieldName="name" />
方式二:
<s:property value="errors.name[0]"/>
<s:property value="errors.name[1]"/>
<s:debug></s:debug>
debug中的errors是一个map类型,而name是一个数组,可以在action继续添加错误提示信息
<s:debug></s:debug>可以查看值栈信息
二、访问Web的元素,也就是获取request,session,简要记录两种。
1)依赖于struts2
在action 中设置,
ActionContext.getContext().getSeesions(); // 获取session
ActionContext.getContext().get("request"); // 获取request
以上获取到的类型都是Map类型,Strut2会将这些Map填充到HttpRequest,HttpSession中
实例代码:
private Map request; private Map session; private Map application; // 都是Map 类型 public String execute() throws Exception { request = (Map)ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); request.put("name","core"); session.put("user", "lyb"); application.put("app","Android"); return SUCCESS; }
2)IoC,控制反转。通过实现接口 implements RequestAware,SessionAware等,常用的开发方式
何为控制反转?我觉得就是通过接口方法,它自动给你设置好了,你把控制权交给接口去处理了。
在接口方法中设置request,session,application等。
实例代码:
public class UserAction extends ActionSupport implements RequestAware,SessionAware{ private Map<String,Object> request; private Map<String, Object> session; public String execute() throws Exception { /** 因为实现了接口,所以不需要通过下面的代码获取相应的属性。 request = (Map)ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); ********************************************************************/ //这里直接设置即可 request.put("name","xiao mai"); session.put("user", "lyb"); return SUCCESS; } @Override public void setSession(Map<String, Object> session) { // TODO Auto-generated method stub this.session = session; // 设置参数 } @Override public void setRequest(Map<String, Object> request) { // TODO Auto-generated method stub this.request = request; // 设置参数 } }
3)在JSP中展示
方式一:
<%=request.getAttrubute("r1") %>
<%=request.getParameter("user.username") %>
<%=session.getAttribute("user") %>
方式二:
<s:property value="#request.name"/>
<s:property value="#session.user"/>
<s:property value="#application.app"/><hr>
三、struts.xml模块包含,可以在struts.xml中,包含其他的xml配置文件。
我觉得一般的做法是:在struts.xml中,配置一些公共的配置,如全局配置,错误处理等,
然后在其他子xml配置文件中配置各自的模块信息,这样有利于分工,并且模块化可维护性高。
语法:<include file="login.xml"></include>,注:login.xml的格式和struts.xml一样。
四、配置默认action,<default-action-ref name="default"></default-action-ref>
当用户访问页面,没有指定任何.action的时候,就将用户的请求当做是default.action来处理。
自然的,就需要配置相应的action
<!--默认Action,自动匹配 -->
<action name="default">
<result>/default.jsp</result>
</action>
注:我觉得可以利用这个做 Error404 之类的处理,只要找不到Action就统一定向到错误提示页面,或返回首页。
补充:软件开发 , Java ,