本篇文章,来讲一下图片的显示。
因为,我们是把图片放置到了服务器,而把其路径保存至了数据库,所以我们可以直接取出路劲,来在界面显示出图片。
友情提示:如果你是将图片保存在了项目的WEB-INF目录下,那么,你的图片是受保护的,无法单纯的在界面取出路劲来显示,中间需要一个action来实现图片的路径取出,然后再在页面显示。
不过这里,我们没有将图片存到WEB-INF目录下,所以不必如此麻烦,直接从数据库取出路劲就可以显示了。
第一步,我们现在index.jsp中加一个链接:
代码如下:
<a href="${pageContext.request.contextPath}/person/person!list">显示人员</a>
第二步,我们需要创建一个list.jsp页面来显示图片:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>List Person Page</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="styles.css">
-->
</head>
<body>
<h2>S2SH整合以及图片上传</h2>
<h2>显示人员</h2>
<table border="1">
<tr>
<td>用户id</td>
<td>用户姓名</td>
<td>用户图片路径</td>
</tr>
<c:forEach items="${personList}" var="person">
<tr>
<td>${person.id}</td>
<td>${person.name}</td>
<td>${person.imgurl}</td>
</tr>
</c:forEach>
</table>
<hr />
<c:forEach items="${personList}" var="person">
<dl>
<dt>
<img src="${person.imgurl}" alt="图片无法显示" height="200" width="300"/>
</dt>
<dd>
<ul>
<li>
<p>${person.id}</p>
</li>
<li>
<p>${person.name}</p>
</li>
</ul>
</dd>
</dl>
</c:forEach>
</body>
</html>
第三步,在PersonDao接口中添加方法:
代码如下:
//显示所有人员
public List<Person> getPersons();
第四步,在PersonDaoImpl类中,实现接口的方法:
代码如下:
//显示所有人员
@SuppressWarnings("unchecked")
@Override
public List<Person> getPersons() {
return sessionFactory.getCurrentSession().createQuery("from Person")
.list();
}
第五步,在PersonService接口中添加方法:
代码如下:
//显示所有人员
public List<Person> getPersons();
第六步,在PersonServiceImpl类中,实现接口的方法:
代码如下:
//显示所有人员
@Override
public List<Person> getPersons() {
return personDao.getPersons();
}
第七步,在PersonAction中添加一个显示方法:
其中request定义在了方法前面,具体代码如下:
// 获取request
HttpServletRequest request = ServletActionContext.getRequest();
//显示所有人员
public String list() {
// 将参数存至request域里
request.setAttribute("personList", personService.getPersons());
return "personList";
}
第八步,我们需要在struts2的配置文件struts.xml中再配置一个result:
代码如下:
<result name="personList">/list.jsp</result>
第九步。测试:
至此,图片显示成功!