【java開發系列】—— struts2簡單入門示例


上篇推薦:JDK安裝

前言

  最近正好有時間總結一下,過去的知識歷程,雖說東西都是入門級的,高手肯定是不屑一顧了,但是對於初次涉獵的小白們,還是可以提供點參考的。

  struts2其實就是為我們封裝了servlet,簡化了jsp跳轉的復雜操作,並且提供了易於編寫的標簽,可以快速開發view層的代碼。

  過去,我們用jsp和servlet搭配,實現展現時,大體的過程是:

  1 jsp觸發action

  2 servlet接受action,交給后台class處理

  3 后台class跳轉到其他的jsp,實現數據展現

  現在有了struts2,實現過程變為

  1 jsp出發action

  2 struts2攔截請求,調用后台action

  3 action返回結果,由不同的jsp展現數據

  

  下面我們看下,需要的jar包

  前面兩個是apache commons的jar包,暫且忽略

  freemarker提供了另一種展現方式

  ognl提供了OGNL表達式

  struts2-core提供struts2核心包

  xwork-core由於struts2很多事基於webwork的,因此也需要這個的核心包

 

  我們提供了三個jsp

登陸界面login.jsp

 1 <%@ page language="java" contentType="text/html; charset=GBK"
 2     pageEncoding="GBK"%>
 3 <%@taglib prefix="s" uri="/struts-tags"%>
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=GBK">
 7 <title><s:text name="loginPage"/></title>
 8 </head>
 9 <body>
10 <s:form action="login">
11     <s:textfield name="username" key="user"/>
12     <s:textfield name="password" key="pass"/>
13     <s:submit key="login"/>
14 </s:form>
15 </body>
16 </html>

登陸成功界面welcome.jsp

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title><s:text name="succPage"/></title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
</head>
<body>
    <s:text name="succTip">
        <s:param>${sessionScope.user}</s:param>
    </s:text><br/>
</body>
</html>

登陸失敗界面error.jsp

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title><s:text name="errorPage"/></title>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
</head>
<body>
    <s:text name="failTip"/>
</body>
</html>

  當login.jsp觸發action時,就會向后抬發送login.action的請求,這個請求被后台攔截,交給struts.xml中配置的action處理

 1 <?xml version="1.0" encoding="GBK"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
 4     "http://struts.apache.org/dtds/struts-2.1.7.dtd">
 5 <struts>
 6     <!-- 指定全局國際化資源文件 -->
 7     <constant name="struts.custom.i18n.resources" value="mess"/>
 8     <!-- 指定國際化編碼所使用的字符集 -->    
 9     <constant name="struts.i18n.encoding" value="GBK"/>
10     <!-- 所有的Action定義都應該放在package下 -->
11     <package name="test" extends="struts-default">
12         <action name="login" class="com.test.action.LoginAction">
13             <result name="error">/error.jsp</result>
14             <result name="success">/welcome.jsp</result>
15         </action>
16     </package>
17 </struts>

下面是LoginAction的代碼,可以看到成功登陸后,程序把username寫入session中。以便於我們在welcome.jsp中利用${sessionScope.user}取得名字

 1 package com.test.action;
 2 
 3 import com.opensymphony.xwork2.ActionContext;
 4 import com.opensymphony.xwork2.ActionSupport;
 5 
 6 public class LoginAction extends ActionSupport {
 7     private String username;
 8     private String password;
 9 
10     public String getUsername() {
11         return username;
12     }
13 
14     public void setUsername(String username) {
15         this.username = username;
16     }
17 
18     public String getPassword() {
19         return password;
20     }
21 
22     public void setPassword(String password) {
23         this.password = password;
24     }
25 
26     public String execute() throws Exception {
27         if (getUsername().equals("xingoo") && getPassword().equals("123")) {
28             ActionContext.getContext().getSession().put("user", getUsername());
29             return SUCCESS;
30         }else{
31             return ERROR;
32         }
33     }
34 }

  這里還要兩個國際化文件,

  mess.properties 

loginPage=loginPage
errorPage=errorPage
succPage=succPage
failTip=sorry,login failed
succTip=welcome{0},login success
user=username
pass=password
login=login

  mess_zh_CN.properties

loginPage=登陸界面
errorPage=失敗界面
succPage=成功界面
failTip=對不起,您不能登錄!
succTip=歡迎,{0},您已經登錄!
user=用戶名
pass=密 碼
login=登陸

  登陸界面

 

 

 

  登陸成功

 

  登陸失敗

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM