1

私は最近、大学で Spring を使い始めたばかりなので、まだかなり迷っています。現在、Doodle をほとんどコピーするアプリケーションを作成しようとしています。

h2 データベースに対して実際にログインを検証し、利用可能なすべてのポーリングのリストにリダイレクトする login.jsp を構築することができました。ここで、セッション スコープから currentUser を取得して右上に表示し、ユーザーの署名だけでなく、さらなるアクションにも使用できるようにしたいと考えています。

これまでのところ、spring-config.xml を次のように編集しました。

    <!-- Session Scope -->
<bean id="userInfo" class="de.nordakademie.iaa.nakdate.sessionbeans.UserInfo" scope="session">
</bean>

それから私はこれを入れました

<p align="right">%{#userInfo.username}</p>

ユーザーがログインしていない最初のページであっても、すべてのページに表示されます。それは賢明な方法ですか? そして、それはうまくいくでしょうか?

最後に、次のように UserInfo.java を作成しました。

package de.nordakademie.iaa.nakdate.sessionbeans;

public class UserInfo {
public String username;

public UserInfo(){
    this.username = "Unregistered User";
}

}

また、ここでログイン アクションを公開します。

package de.nordakademie.iaa.nakdate.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

import de.nordakademie.iaa.nakdate.model.User;
import de.nordakademie.iaa.nakdate.service.UserService;

public class LogInUserAction extends ActionSupport {
private static final long serialVersionUID = 3734334931859908102L;
private transient UserService userService;
private transient User user;
private String email;
private String password;

@Override
public String execute() throws Exception {
    List<User> users = userService.loadAll();
    for (User currentUser : users) {
        if (currentUser.getEmail().equals(getEmail())) {
            if (currentUser.getPassword().equals(getPassword())) {
                return SUCCESS;
            }
        }
    }
    addActionError(getText("E-Mail / Passwort falsch!"));
    return ERROR;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public UserService getUserService() {
    return userService;
}

public void setUserService(UserService userService) {
    this.userService = userService;
}

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

}

これを機能させる方法について誰かが助けてくれれば幸いです。どうもありがとうございました!

編集:デバッグタグを使用したところ、セッションが空であることがわかりました。実際にセッションに何かを入力するにはどうすればよいですか?

4

1 に答える 1

1

考えられる方法は 2 つあります。1 つ目は、次のようにモデル属性を追加し、jsp でモデル属性にアクセスすることです。

コントローラーで:

@Controller
public class MyController{

    @Autowired Userinfo userInfo;

    @RequestMapping
    public String myMethod(Model model){
        model.addAttribute("userInfo", userInfo);
        ....
    }

次に、jsp でこれを参照できます。

${userInfo.name}

残念ながら文書化されたアプローチではない 2 番目の方法は、スコープ Bean を次のように参照することです。

${sessionScope['scopedTarget.userInfo'].name}

これはここからです: http://digitaljoel.nerd-herders.com/2010/11/01/accessing-spring-session-beans-in-jsp/

于 2012-11-11T18:19:55.387 に答える