<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- struts2的action必須放在一個指定的包空間下定義
-->
<package
name="default"
extends="struts-default">
<!--
定義處理請求URL爲login.action的Action
-->
<action
name="login"
class="org.qiujy.web.struts.action.LoginAction">
<!--
定義處理結果字符串和資源之間的映射關係 -->
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
</package>
</struts>
|
<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- struts2的action必須放在一個指定的包空間下定義
-->
<package
name="qiujy"
extends="struts-default">
<!--
定義處理請求URL爲login.action的Action
-->
<action
name="login"
class="org.qiujy.web.struts2.action.LoginAction">
<!--
定義處理結果字符串和資源之間的映射關係 -->
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
</package>
<package
name="my"
extends="struts-default"
namespace="/manage">
<!--
定義處理請求URL爲login.action的Action
-->
<action
name="backLogin"
class="org.qiujy.web.struts2.action.LoginAction">
<!--
定義處理結果字符串和資源之間的映射關係 -->
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
</package></struts>
|
<struts>
<include
file="struts-default.xml"/>
<include
file="struts-user.xml"/>
<include
file="struts-book.xml"/>
<include
file="struts-shoppingCart.xml"/>
......
</struts>
|
<struts>
......
<constant
name="struts.custom.i18n.resources"
value="messages"/>
</struts>
|
package org.qiujy.web.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
/**
*@authorqiujy
*@version1.0
*/
publicclass LoginAction
extends ActionSupport{
private String
userName;
private String
password;
private String
msg; //結果信息屬性
/**
*@returnthemsg
*/
public String getMsg() {
returnmsg;
}
/**
*@parammsgthemsgtoset
*/
publicvoid setMsg(String msg)
{
this.msg
= msg;
}
/**
*@returntheuserName
*/
public String getUserName() {
returnuserName;
}
/**
*@paramuserNametheuserNametoset
*/
publicvoid setUserName(String
userName) {
this.userName
= userName;
}
/**
*@returnthepassword
*/
public String getPassword() {
returnpassword;
}
/**
*@parampasswordthepasswordtoset
*/
publicvoid setPassword(String
password) {
this.password
= password;
}
/**
*處理用戶請求的excute()方法
*@return結果導航字符串
*@throwsException
*/
public String execute()
throws Exception{
if("test".equals(this.userName)
&&
"test".equals(this.password)){
msg =
"登錄成功,歡迎" +
this.userName;
returnthis.SUCCESS;
}else{
msg =
"登錄失敗,用戶名或密碼錯";
returnthis.ERROR;
}
}
}
|
public String execute()
throws Exception{
if("test".equals(this.userName)
&& "test".equals(this.password)){
msg =
"登錄成功,歡迎" +
this.userName;
//獲取ActionContext實例,通過它來訪問Servlet
API
ActionContext context = ActionContext.getContext();
//看session中是否已經存放了用戶名,如果存放了:說明已經登錄了;
//否則說明是第一次登錄成功
if(null
!= context.getSession().get("uName")){
msg =
this.userName +
":你已經登錄過了!!!";
}else{
context.getSession().put("uName",
this.userName);
}
returnthis.SUCCESS;
}else{
msg =
"登錄失敗,用戶名或密碼錯";
returnthis.ERROR;
}
}
|
<form method="post" action="userOpt!login.action">
|
package org.qiujy.web.struts2.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
*@authorqiujy
*@version1.0
*/
publicclass LoginAction
extends ActionSupport{
private String
userName;
private String
password;
private String
msg;
//結果信息屬性
/**
*@returnthemsg
*/
public String getMsg() {
returnmsg;
}
/**
*@parammsgthemsgtoset
*/
publicvoid setMsg(String msg)
{
this.msg
= msg;
}
/**
*@returntheuserName
*/
public String getUserName() {
returnuserName;
}
/**
*@paramuserNametheuserNametoset
*/
publicvoid setUserName(String
userName) {
this.userName
= userName;
}
/**
*@returnthepassword
*/
public String getPassword() {
returnpassword;
}
/**
*@parampasswordthepasswordtoset
*/
publicvoid setPassword(String
password) {
this.password
= password;
}
/**
*處理用戶請求的login()方法
*@return結果導航字符串
*@throwsException
*/
public String login()
throws Exception{
if("test".equals(this.userName)
&& "test".equals(this.password)){
msg =
"登錄成功,歡迎" +
this.userName;
//獲取ActionContext實例,通過它來訪問Servlet
API
ActionContext context = ActionContext.getContext();
//看session中是否已經存放了用戶名,如果存放了:說明已經登錄了;
//否則說明是第一次登錄成功
if(null
!= context.getSession().get("uName")){
msg =
this.userName +
":你已經登錄過了!!!";
}else{
context.getSession().put("uName",
this.userName);
}
returnthis.SUCCESS;
}else{
msg =
"登錄失敗,用戶名或密碼錯";
returnthis.ERROR;
}
}
public String regist()
throws Exception{
//將用戶名,密碼添加到數據庫中
//...
msg =
"註冊成功。";
returnthis.SUCCESS;
}
}
|
<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package
name="my"
extends="struts-default"
namespace="/manage">
<!--
定義處理請求URL爲login.action的Action
-->
<action
name="userOpt"
class="org.qiujy.web.struts2.action.LoginAction">
<!--
定義處理結果字符串和資源之間的映射關係 -->
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
</package>
</struts>
|
<%@ page
language="java"
pageEncoding="UTF-8"%>
<html>
<head>
<title>用戶登錄頁面</title>
</head>
<body>
<h2>用戶入口</h2>
<hr>
<form
action="manage/userOpt!login.action"
method="post">
<table
border="1">
<tr>
<td>用戶名:</td>
<td><input
type="text"
name="userName"/></td>
</tr>
<tr>
<td>密碼:</td>
<td><input
type="password"
name="password"/></td>
</tr>
<tr>
<td
colspan="2">
<input
type="submit"
value="
確定 "/>
</td>
</tr>
</table>
</form>
</body>
</html>
|
<%@ page
language="java"
pageEncoding="UTF-8"%>
<html>
<head>
<title>用戶註冊頁面</title>
</head>
<body>
<h2>用戶註冊</h2>
<hr>
<form
action="manage/userOpt!regist.action"
method="post">
<table
border="1">
<tr>
<td>用戶名:</td>
<td><input
type="text"
name="userName"/></td>
</tr>
<tr>
<td>密碼:</td>
<td><input
type="password"
name="password"/></td>
</tr>
<tr>
<td
colspan="2">
<input
type="submit"
value="
註冊 "/>
</td>
</tr>
</table>
</form>
</body>
</html>
|
<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package
name="my"
extends="struts-default"
namespace="/manage">
<action
name="userLogin"
class="org.qiujy.web.struts2.action.LoginAction"
method="login">
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
<action
name="userRegist"
class="org.qiujy.web.struts2.action.LoginAction"
method="regist">
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
</package>
</struts>
|
<action
name="user_*"
class="org.qiujy.web.struts2.action.UserAction"
method="{1}">
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
|
<global-results>
<result name="error">/Error.jsp</result>
<result name="invalid.token">/Error.jsp</result>
<result name="login" type="redirect-action">Logon!input</result>
</global-results>
|
名字
|
說明
|
chain
|
用來處理Action鏈
|
dispatcher
|
用來轉向頁面,通常處理JSP,這是默認的結果類型
|
freeMarker
|
處理FreeMarker模板
|
httpHeader
|
用來控制特殊的Http行爲
|
redirect
|
重定向到一個URL
|
redirect-action
|
重定向到一個Action
|
stream
|
向瀏覽器發送InputSream對象,通常用來處理文件下載
|
velocity
|
處理Velocity模板
|
xslt
|
處理XML/XLST模板
|
plaintext
|
顯示原始文件內容,例如文件源代碼
|
tiles
|
結合Tile使用
|
private String nextAction;
public String getNextAction() {
return nextAction;
}
|
<action name="fragment" class="FragmentAction">
<result name="next" type="redirect-action"></result>
</action>
|
package org.qiujy.domain;
publicclass User {
private String
userName;
private String
password;
/**
*@returntheuserName
*/
public String getUserName() {
returnuserName;
}
/**
*@paramuserNametheuserNametoset
*/
publicvoid setUserName(String
userName) {
this.userName
= userName;
}
/**
*@returnthepassword
*/
public String getPassword() {
returnpassword;
}
/**
*@parampasswordthepasswordtoset
*/
publicvoid setPassword(String
password) {
this.password
= password;
}
}
|
package org.qiujy.web.struts2.action;
import org.qiujy.domain.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
publicclass UserAction
extends ActionSupport{
//定義用於封裝請求參數的模型對象
private User
user =
new User();
private String
msg;
//結果信息屬性
/**
*@returntheuser
*/
public User getUser() {
returnuser;
}
/**
*@paramusertheusertoset
*/
publicvoid setUser(User user)
{
this.user
= user;
}
/**
*@returnthemsg
*/
public String getMsg() {
returnmsg;
}
/**
*@parammsgthemsgtoset
*/
publicvoid setMsg(String msg)
{
this.msg
= msg;
}
/**
*處理用戶請求的login()方法
*@return結果導航字符串
*@throwsException
*/
public String login()
throws Exception{
String userName =
user.getUserName();
String password =
user.getPassword();
if("test".equals(userName)
&& "test".equals(password)){
msg =
"登錄成功,歡迎" + userName;
//獲取ActionContext實例,通過它來訪問Servlet
API
ActionContext context = ActionContext.getContext();
//看session中是否已經存放了用戶名,如果存放了:說明已經登錄了;否則說明是第一次登錄成功
if(null
!= context.getSession().get("uName")){
msg = userName +
":你已經登錄過了!!!";
}else{
context.getSession().put("uName", userName);
}
returnthis.SUCCESS;
}else{
msg =
"登錄失敗,用戶名或密碼錯";
returnthis.ERROR;
}
}
public String regist()
throws Exception{
//將用戶名,密碼添加到數據庫中
//...
msg =
"註冊成功。";
returnthis.SUCCESS;
}
}
|
<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package
name="my"
extends="struts-default"
namespace="/manage">
<action
name="userOpt"
class="org.qiujy.web.struts2.action.UserAction">
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
</package>
</struts>
|
<%@ page
language="java"
pageEncoding="UTF-8"%>
<html>
<head>
<title>用戶登錄頁面</title>
</head>
<body>
<h2>用戶入口</h2>
<hr>
<form
action="manage/userOpt!login.action"
method="post">
<table
border="1">
<tr>
<td>用戶名:</td>
<td><input
type="text"
name="user.userName"/></td>
</tr>
<tr>
<td>密碼:</td>
<td><input
type="password" name="user.password"/></td>
</tr>
<tr>
<td
colspan="2">
<input
type="submit"
value="
確定 "/>
</td>
</tr>
</table>
</form>
</body>
</html>
|
public String regist()
throws Exception{
//將用戶名,密碼添加到數據庫中
//...
//msg = "註冊成功。";
if(true){
throw new java.sql.SQLException("沒有數據庫驅動程序");
}
return this.SUCCESS;
}
|
<!DOCTYPE
struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package
name="my"
extends="struts-default"
namespace="/manage">
<!--
定義全局處理結果 -->
<global-results>
<!--
邏輯名爲sql的結果,映射到/exception.jsp頁面
-->
<result
name="sql">/exception.jsp</result>
</global-results>
<global-exception-mappings>
<!--
當Action拋出SQLException異常時,轉入名爲sql的結果
-->
<exception-mapping
exception="java.sql.SQLException" result="sql"/>
</global-exception-mappings>
<action
name="userOpt"
class="org.qiujy.web.struts2.action.UserAction">
<result
name="success">/success.jsp</result>
<result
name="error">/error.jsp</result>
</action>
</package>
</struts>
|
<%@ page
language="java"
pageEncoding="utf-8"%>
<%@ taglib
uri="/struts-tags"
prefix="s"
%>
<html>
<head>
<title>異常信息</title>
</head>
<body>
<h2>
出現異常啦
</h2>
<hr/>
<h3
style="color:red">
<!--
獲得異常對象 -->
<s:property
value="exception.message"/>
</h3>
<br/>
<!--
異常堆棧信息 -->
<s:property
value="exceptionStack"/>
</html>
|