首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2-Action札记

2012-11-09 
struts2-Action笔记1。默认action处理?xml version1.0 encodingUTF-8 ?!DOCTYPE struts PUBLIC-/

struts2-Action笔记
1。默认action处理

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <constant name="struts.devMode" value="true" />        <package name="default" namespace="/" extends="struts-default">         <!--当找不到action则返回默认的action--!>    <default-action-ref name="index"></default-action-ref>    <action name="index">    <result>/default.jsp</result>    </action>    </package></struts>


2.访问Web元素
   a)Map类型
      i.IoC
     ii.依赖Struts2
   b)原始类型
      i.IoC
      ii.依赖Struts2
import java.util.Map;import org.apache.struts2.interceptor.ApplicationAware;import org.apache.struts2.interceptor.RequestAware;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {private Map<String, Object> request;private Map<String, Object> session;private Map<String, Object> application;//DI dependency injection//IoC inverse of controlpublic String execute() {request.put("r1", "r1");session.put("s1", "s1");application.put("a1", "a1");return SUCCESS; }@Overridepublic void setRequest(Map<String, Object> request) {this.request = request;}@Overridepublic void setSession(Map<String, Object> session) {this.session = session;}@Overridepublic void setApplication(Map<String, Object> application) {this.application = application;}}

在jsp页面中这样可以取得
<?xml version="1.0" encoding="GB18030" ?><%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%>    <%@taglib uri="/struts-tags" prefix="s" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030" /><title>Insert title here</title></head><body>User Login Success!<br /><s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br /><s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br /><s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br /><s:property value="#attr.a1"/><br /><s:property value="#attr.s1"/><br /><s:property value="#attr.r1"/><br /><s:debug></s:debug><br /></body></html>


3.struts2和struts1在Action方面的区别:
    struts2中 每个客户端访问都会new 一个新的Action
     而struts1则是同一个Action,要考虑线程同步问题

4.简单参数验证addFieldError
import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String name;public String add() {if(name == null || !name.equals("admin")) {this.addFieldError("name", "name is error");this.addFieldError("name", "name is too long");return ERROR;} return SUCCESS;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

在jsp中通过下面的这种方式来取得
<body>User Add Error!<s:fielderror fieldName="name" theme="simple"/><br /><s:property value="errors.name[0]"/><s:debug></s:debug></body>


5。包含
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <constant name="struts.devMode" value="true" />    <!-- 将login.xml包含在此处,相当于把login.xml中的配置直接复制到这里 -->    <include file="login.xml" /></struts>


<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>    <package name="login" extends="struts-default" namespace="/login">        <action name="login*" class="com.hugui.struts2.user.action.LoginAction{1}">            <result>/user_login_success.jsp</result>        </action>    </package></struts>

热点排行