Struts2学习笔记--在jsp中从session取出map

这篇博客详细介绍了如何在Struts2框架下,从JSP页面中通过Session获取并显示Map数据。首先展示了Msg类的定义,接着展示了一个名为NewMsgAction的Action类,该类实现了SessionAware接口,用于从Session中获取username并查找对应用户的消息。在Action配置中定义了重定向规则。最后,博主提供了用户交互界面的JSP代码,使用Struts2的迭代器标签迭代Session中的Map,并显示消息内容、发送人和时间。
摘要由CSDN通过智能技术生成

Bean: 

 

package com.wenj.beans;

 

import java.util.Date;

 

public class Msg {

public static final int MSG_STAUS_IS_NEW = 0;

public static final int MSG_STAUS_HAVE_READ = 1;

private Integer id;

private String content;

private Integer sender;

private Integer getter;

private Date date;

private Integer status//0 for new, 1 for hava read

public Msg(){ }

public Integer getId() {

return id;

}

@SuppressWarnings(value="all")

private void setId(Integer id) {

this.id = id;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public Integer getSender() {

return sender;

}

public void setSender(Integer sender) {

this.sender = sender;

}

public Integer getGetter() {

return getter;

}

public void setGetter(Integer getter) {

this.getter = getter;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public Integer getStatus() {

return status;

}

public void setStatus(Integer status) {

this.status = status;

}

}

 

 

Action:

package com.wenj.action;

 

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import org.apache.struts2.interceptor.SessionAware;

 

import com.opensymphony.xwork2.ActionSupport;

import com.wenj.beans.Msg;

import com.wenj.beans.User;

import com.wenj.dao.factory.MsgDAOFactory;

import com.wenj.dao.factory.UserDAOFactory;

 

public class NewMsgAction extends ActionSupport implements SessionAware{

private Map<String, Objectsession;

@Override

public String execute() throws Exception {

String username = (String)session.get("username");

if(null != username && !"".equals(username)){

User user = UserDAOFactory.createUserDAO().findUserByUsername(username);

if(null != user){

List<Msg> msgs = MsgDAOFactory.createMsgDAO().findMsgsByStatus(user, Msg.MSG_STAUS_IS_NEW);

Map<Msg, String> map = new HashMap<Msg, String>();

if(null != msgs){

for(Msg msg : msgs){

User sender = UserDAOFactory.createUserDAO().findUserById(msg.getSender());

map.put(msg, sender.getName());

}

}

session.put("map", map);

return SUCCESS;

}

}

return ERROR;

}

 

@Override

public void setSession(Map<String, Object> session) {

this.session = session;

}

 

}

 

Action配置:

<action name="*_*" class="com.wenj.action.{1}{2}Action">

<result type="redirect">/{1}_{2}.jsp</result>

<result name="error">/include.jsp</result>

</action>

 

用户交互界面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ include file="include.jsp" %>

<%@ taglib prefix="s" uri="/struts-tags" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>MessageBox Index</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<link rel="stylesheet" type="text/css" href="resource/page.css">

<script src="resource/jquery.js"></script>

</head>

 

<body>

<div id="div0">

<div>

<h2>欢迎你, <a href="User_Info.action"><s:property value="#session.username"/></a></h2>

</div>

<div id="div1">

<li><a href="All_Msg.action">留言板</a></li>

<li><a href="New_Msg.action">最新留言</a></li>

<li><a href="Send_Msg.action">留言</a></li>

</div>

<div id="div2">

<h3>最新留言</h3>

<div id="divspan">

<table border="1" align="left">

<tr>

<td>信息内容</td>

<td>发送人</td>

<td>发送时间</td>

</tr>

<s:iterator id="map1" value="#session.map">  

    <tr>  

<td><s:property value="#map1.key.content"/></td>  

<td><s:property value="#map1.value"/></td>  

<td><s:property value="#map1.key.date"/></td> 

    </tr>  

</s:iterator>

</table>

</div>

</div>

</div>

</body>

</html>

 

jsp中遍历map的语句为:

<s:iterator id="map1" value="#session.map">  

    <tr>  

<td><s:property value="#map1.key.content"/></td>  

<td><s:property value="#map1.value"/></td>  

<td><s:property value="#map1.key.date"/></td> 

    </tr>  

</s:iterator>

先从session取出map, 再用iterator标签来遍历map, 

用 “#+id”表示其中之一键值对: #map1

用 “#+id.key”表示引用其键: #map1.key

用 “#+id.value”表示引用其值: #map1.value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值