0

SpringMVCを使用してJavaで記述された単純なアプリケーションがあります。Credentialsクラスには、ログイン時に提供されるユーザー名とパスワードのみが含まれます。

理想的には、個人のユーザー名とフルネームをすべてのjspページに表示する必要があります。セッション属性の設定を考えています。

私のコントローラークラス:

@RequestMapping(value = "/menu", method=RequestMethod.POST)
    public String addContact(Map<String, Object> map,@ModelAttribute("user")
    User user, BindingResult result, SessionStatus status,HttpSession session) {


session.setAttribute("DisplyName", u.getDisplayName());

私のJSP:

 <div class="wlctxt">Welcome <%=session.getAttribute("DisplyName") %></div>

しかし、ここでセッション属性のnull値を取得します。

これを達成する他の方法はありますか?

4

1 に答える 1

0

セッション属性DisplayNameを入力する必要はありません。あなたはすべての要求でそれをします。モデル属性があり、リクエストに入れられるので、jspでアクセスできます。

<div class="wlctxt">Welcome <c:out value="${user.displayName}"/></div>

セッションに参加することはあなたが気にしなければならない多くのtrobelshoutingを持っています。ユーザーが表示名を変更した場合はどうなりますか?セッションで更新する必要があります。またはもっと重要:いくつかのアクセス権の変更?あらゆる場所でセッション中に更新を簡単に行うことができます。

セッションuserIdをメモリキャッシュから取得できるもの(パフォーマンスの観点からDB拡張から読み取る)に入れて、次に実行します。

@Controller
public class SomeController {

    @Autowired
    private UserService userService;

    @RequestMapping(...)
    public String getSomePage(HttpServletRequest request, HttpSession session) {
        Long userId = (Long) session.getAtribute("currentUserId");
        User user = userService.get(userId);
        request.setAttribute("currentUser", user);
    }

jspでは、次の場所にアクセスできます。

<div>Wellcome <c:out value="${currentUser.displayName}"/>!</div>
于 2012-05-08T06:11:03.260 に答える