<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                我們按照用例,在后臺中寫入測試代碼。 # 加入action后綴 struts.xml ``` <struts> <!--設置訪問的后綴為json,或無后綴--> <constant name="struts.action.extension" value="json,," /> ``` # 加入路由信息 我們每增加一個action,就需要寫一個路由,顯然這樣有一些麻煩。struts支持匹配的路由規則。為了將/User_login正確的匹配到UserAction下的login方法, 我們建立以下路由: ``` <package name="json" namespace="/" extends="json-default"> <!-- 使用通配符配置路由 --> <action name="*_*" class="com.mengyunzhi.javaee.action.{1}Action" method="{2}"> <!-- 返回類型設置為json --> <result name="success" type="json"> <!-- 數據返回時,是否包括父類的get方法 --> <param name="ignoreHierarchy">false</param> </result> <!-- 配置攔截器,使傳入的json數據能夠成功的通過setXXX()方法來傳值 --> <interceptor-ref name="defaultStack" /> <interceptor-ref name="json"> <param name="enableSMD">true</param> </interceptor-ref> </action> </package> ``` 上面的配置中,我們使用`*_*`做為通配符,并在后面,使用`{1}`來表示匹配到的第一個參數,使用`{2}`來表示匹配到的第二個參數. 例如: 1. `User_login.json`對應匹配后,第一個參數為`User`第二個參數為`login`,所以將對應執行`com.mengyunzhi.javaee.action.UserAction`中的`login`方法。 2. `Hello_world.json`對應匹配后,第一個參數為`Hello`第二個參數為`world`,所以將對應執行`com.mengyunzhi.javaee.action.HelloAction`中的`world`方法。 3. 'Hello.json' 對應匹配后,第一個參數為`Hello`第二個參數為空``,所以將對應執行`com.mengyunzhi.javaee.action.HelloAction`中的默認方法。默認方法,即:execute()方法。 # 寫入測試代碼 定制完路由后,讓我們寫入測試代碼,并進行測試. ``` package com.mengyunzhi.javaee.action; public class UserAction extends Action{ // 繼承ActionSupport后,必須生明serialVersionUID,該值為于對類及對象進行序列化與反序列化 private static final long serialVersionUID = 1L; private String username = ""; // 用戶名 private String password = ""; // 密碼 private int code = 200; // 狀態碼.200正常 private boolean isPassed = false; // 用戶名密碼是否正確 public int getCode() { return code; } public boolean getIsPassed() { return this.isPassed; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } /** * 登陸,當用戶名等于zhangsan ,密碼為:123456時。返回用戶名密碼通過驗證 * @return */ public String login() { if (this.username.equals("zhangsan") && this.password.equals("123456")) { this.isPassed = true; } return SUCCESS; } } ``` 測試: [http://127.0.0.1:8080/javaee/User_login.json](http://127.0.0.1:8080/javaee/User_login.json) <hr /> # 統一返回code 我們在前臺中,對返回的CODE值是否為200,進行了統一的驗證。但進行教師列表的數據請求時,沒有返回CODE值。這將使得,在進行教師列表的請求時,控制臺報:未獲取到CODE值 的錯誤。 為了使所有的請求,都能夠得到code值,我們對后臺中的Action類進行重寫: ``` package com.mengyunzhi.javaee.action; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.ActionSupport; public abstract class Action extends ActionSupport implements ServletResponseAware{ /** * */ private static final long serialVersionUID = 1L; protected int code = 200; // 狀態碼.200正常 // 響應信息 protected HttpServletResponse response; @Override public void setServletResponse(HttpServletResponse response) { // 設置發送文件頭:允許跨域的地址 response.setHeader("Access-Control-Allow-Origin", "*"); // 允許前端帶cookie訪問(cookie跨域) response.setHeader("Access-Control-Allow-Credentials", "true"); // 設置請允許的請求方法 response.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); // 設置服務器允許的頭類型 response.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); // 告訴瀏覽器我已經記得你了,一天之內不要再發送OPTIONS請求了 response.setHeader("Access-Control-Max-Age", Integer.toString(3600 * 24)); this.response = response; } public int getCode() { return this.code; } } ``` 并去除原UserAction中的冗余代碼: ``` package com.mengyunzhi.javaee.action; public class UserAction extends Action{ // 繼承ActionSupport后,必須生明serialVersionUID,該值為于對類及對象進行序列化與反序列化 private static final long serialVersionUID = 1L; private String username = ""; // 用戶名 private String password = ""; // 密碼 private boolean isPassed = false; // 用戶名密碼是否正確 public boolean getIsPassed() { return this.isPassed; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } /** * 登陸,當用戶名等于zhangsan ,密碼為:123456時。返回用戶名密碼通過驗證 * @return */ public String login() { if (this.username.equals("zhangsan") && this.password.equals("123456")) { this.isPassed = true; } return SUCCESS; } } ``` > git checkout -f step11.3
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看