Struts小结

来源:互联网 发布:余弦距离相似性算法 编辑:程序博客网 时间:2024/06/03 16:24

1.需牢记原则:不要在Action中进行业务逻辑的处理,业务逻辑应交给专门的Model层去做
 在业务逻辑层抛出异常,并在Action中捕捉和处理
2.struts的常用标签
 <logic:empty name="userlist">
    <tr><td colspan="3">没有符合属性的用户!</td></tr> 
   </logic:empty>
   <logic:notEmpty name="userlist">
    <logic:iterate id="i" name="userlist">
    <tr>
     <td><bean:write name="i" property="name"/></td>
     <td><bean:write name="i" property="age"/></td>
     <td><bean:write name="i" property="group.group"/></td>
    </tr>
   </logic:iterate>
 </logic:notEmpty>
3.动态DynaActionForm
 动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值
 动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop},
4.actionForward
   String page = request.getParameter("page");
  
  //选择定向
//  if("1".equals(page)){
//   return mapping.findForward("page1");
//  }
//  else if("2".equals(page)) {
//   response.sendRedirect("page2.jsp");
//   return null;
//  }
//  return null;
  
  //* 1.自定义重定向!
//  response.sendRedirect("page"+page+".jsp");
//  return null;
  
  //* 2.自定义重定向!
  ActionForward af = new ActionForward();
  
  //*****注意格式!!!!!!!!!!
  af.setPath("/page"+page+".jsp");
  return af;
  
  
 ************************************************************************
 *<global-forwards>                           *
 * <forward name="login" path="/login.jsp" redirect="true"></forward>   *
 *</global-forwards>                                                    *
 ************************************************************************
5.国际化
  JAVA:
  Locale la = Locale.getDefault();
  System.out.println(la.getCountry());
  System.out.println(la.getLanguage());
  
  //Locale lb = new Locale("en", "US");
  Locale lb = new Locale("zh", "CN");
  ResourceBundle rb = ResourceBundle.getBundle("MessageBundle", lb);
  System.out.println(rb.getString("k1"));
  System.out.println(rb.getString("k2"));
  
  MessageFormat mf = new MessageFormat(rb.getString("k1"));
  System.out.println(mf.format(new Object[]{"sdfsd","asdas"}));
  
  Struts:
  
  <message-resources parameter="i18n.MessageResources" />
  
  public class LoginAction extends Action {

  public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
   LoginActionForm laf = (LoginActionForm)form;
   String username = laf.getUsername();
   String password = laf.getPassword();
   
   //国际化处理
   try{
    UserManager.getInstance().login(username, password);
    ActionMessage message = new ActionMessage("login_success_name", username);
    ActionMessages messages = new ActionMessages();
    messages.add("success", message);
    this.saveMessages(request, messages);
    return mapping.findForward("success");
   } catch(UserNotFoundException unfe) {
    unfe.printStackTrace();
    ActionMessage error = new ActionMessage("login_error_name", username);
    ActionMessages errors = new ActionMessages();
    errors.add("error", error);
    this.saveErrors(request, errors);
    
   } catch(PasswordErrorException pee){
    pee.printStackTrace();
    ActionMessage error = new ActionMessage("login_error_password");
    ActionMessages errors = new ActionMessages();
    errors.add("error", error);
    this.saveErrors(request, errors);
   }
   
   return mapping.findForward("error");
   
  }
 
 }
 
 <bean:message key="login_error_title"/>
 <html:messages id="msg" message="true">
  <bean:write name="msg"/>
 </html:messages>
 默认message读取错误的消息,message="true"读正确消息
 <html:errors id="msg">
 
 JSTL的国际化标签:
 <fmt:setLocale value="${header['accept-language']}"/>
 <fmt:setBundle basename="i18n.MessageResources"/>
 <fmt:message key="username"/>:<input type="text" name="username"><br>
 <fmt:message key="password"/>:<input type="password" name="password"><br>

  

原创粉丝点击