Jsp 无法成功重定向Struts 2中的操作
我正在运行struts 2,并且已经成功地连接到我的SQL server,一切正常,只是我尝试以不同的方式重定向我的用户和管理员,例如当有人登录到web时,我想将他重定向到homepage.jsp(如果他是普通用户)或control.jsp(如果他是页面管理员)我没有让这部分工作,我有以下代码,但用户和管理员都被重定向到管理页面。如果有人能告诉我我的错误,或者我遗漏的任何其他信息来补充,那就太好了 struts.xmlJsp 无法成功重定向Struts 2中的操作,jsp,struts2,Jsp,Struts2,我正在运行struts 2,并且已经成功地连接到我的SQL server,一切正常,只是我尝试以不同的方式重定向我的用户和管理员,例如当有人登录到web时,我想将他重定向到homepage.jsp(如果他是普通用户)或control.jsp(如果他是页面管理员)我没有让这部分工作,我有以下代码,但用户和管理员都被重定向到管理页面。如果有人能告诉我我的错误,或者我遗漏的任何其他信息来补充,那就太好了 struts.xml <!-- Login Function --> <acti
<!-- Login Function -->
<action name="Login" class="Actions.Login">
<result type="redirectAction">
<param name="actionName">LevelofAccess</param>
</result>
<result name="input">Index.jsp</result>
</action>
<action name="LevelofAccess" class="Actions.LevelofAccess">
<result name="success">/WEB-INF/Control.jsp</result>
<result name="input">/WEB-INF/Homepage.jsp</result>
</action>
您需要从操作方法返回不同的结果才能使用不同的配置结果。是否返回不同的结果?在什么方面,仅仅拥有“return”不意味着默认情况下它是return输入吗???如果不是,你到底在暗示什么?添加附加操作包??您的操作方法
execute
始终返回SUCCESS
。validate
方法用于验证,而不是action方法()。哦,基本上我必须在您在struts.xml中为该操作定义的execute
函数?In action方法下配置我的结果(execute
是默认的操作方法)。考虑先阅读一些教程。
package Actions;
import Objects.ConnectSQL;
import com.opensymphony.xwork2.ActionSupport;
import java.sql.ResultSet;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
public class Login extends ActionSupport implements SessionAware {
private Map session;
private String username = "";
private String password = "";
ConnectSQL connectSQL = new ConnectSQL();
public Login() {
}
@Override
public void validate(){
// Check if username exists on session map. If it exists, it means that user log in before
Object usernameobject = session.get("username");
if (usernameobject == null) {
//nothing will happen
}
else {
// Username exists on session map, i.e. user has already logged in.
return;
}
// Connect to MS SQL Server database.
String message = connectSQL.connect("localhost", 1433, "Online", "Eugene", "Eugene"); //Shopping = Databasename, Eugene = user, Eugene = pass
if (message != null) { //if message null, means connection OK
addActionError(message);
return;
}
// Check if username and password are correct.
boolean userfound = false; //Set to false as if it is found, will be set to true later
ResultSet select = connectSQL.executeSQLStatement("SELECT * FROM Users"); //Choosing the value inside the table
try { // looping to find the username
while (select.next()) {
String selectusername = select.getString("Username"); //Field name in table <<
String selectpassword = select.getString("Password");
if (username.equals(selectusername)) {
userfound = true;
if (!password.equals(selectpassword)) {
addFieldError("password", "Incorrect password");
return;
}
}
}
}
catch (Exception e) {
addActionError(e.getMessage());
return;
}
if (userfound) {
// At this point, username and password are correct.
// So we add the username to the session map to enable subsequent actions to be able
// to check that user has already logged in.
session.put("username", username);
}
else
addFieldError("username", "Invalid username");
}
@Override
public String execute() {
return SUCCESS;
}
@Override
public void setSession(Map session) {
this.session = session;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
}
ConnectSQL connectSQL = new ConnectSQL();
String username;
public LevelofAccess(){
}
@Override
public void validate(){
Object usernameObject = session.get("username");
if (usernameObject == null) {
addActionError("Error: User is not found. Please log in again.");
return;
}
else
username = (String) usernameObject;
// Connect to MS SQL Server database.
String message = connectSQL.connect("localhost", 1433, "Online", "Eugene", "Eugene");
if (message != null) {
addActionError(message);
}
ResultSet rs = connectSQL.executeSQLStatement("SELECT Type FROM Online.dbo.Users where Username = " + "'" + username + "'");
try{
while(rs.first()){
int gettype = rs.getInt("Type");
if (gettype == 1){
return;
}
else {
// do nothing
}
}
}
catch (Exception e) {
}
}
@Override
public String execute() {
return SUCCESS;
}
@Override
public void setSession(Map session) {
this.session = session;
}
}