当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,