SSH实现新闻管理操作
来源:互联网 发布:mac修改用户名无法登录 编辑:程序博客网 时间:2024/06/14 10:56
在这里,为表添加一个新的图片字段,可以允许在添加新闻时,上传相关图片,并可以在列表时显示。
ALTER TABLE news ADD (photo varchar2(100) );
对应的,映射部分也要修改。
<propertyname="photo"type="java.lang.String">
<columnname="PHOTO"length="100"></column>
</property>
完成之前的DAO和Service代码。
开始编写页面代码。
这里不再使用!作为分发的分隔符,因为新版的Struts2.3中已经不推荐使用此符号,而是建议使用自定义的形式来完成分发,这里通过 _ 来分隔。
<ahref="pages/back/news_insertPre.action">添加新闻</a><br/>
<ahref="pages/back/news_list.action">新闻列表</a><br/>
编写Action,需要调用Service,查询所有新闻类型。
也要完成新闻类型的DAO代码。
编写Action操作
public class NewsAction extends ActionSupport {
private INewsServiceservice;
private List<NewsType>allType;
public String insertPre()throws Exception {
allType = service.insertPre();
return"insert";
}
配置
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<beanid="newsAction"class="org.liky.ssh.back.action.NewsAction"
scope="prototype">
<propertyname="service">
<refbean="newsServiceImpl"/>
</property>
</bean>
</beans>
<packagename="back"namespace="/pages/back"extends="my_project_default">
<actionname="news_*"class="newsAction"method="{1}">
<resultname="insert">/pages/back/news/news_insert.jsp</result>
</action>
</package>
其中method表示要执行的方法名,里面的{1}表示取得前面的 第一个 * 来代入到这里。
添加表单
<center>
<s:formaction="news_insert.action"method="post"theme="simple"namespace="/pages/back"enctype="multipart/form-data">
新闻标题: <s:textfieldname="news.title"></s:textfield>
新闻内容: <s:textfieldname="news.content"/> <br/>
新闻发布日期:<s:textfieldname="news.pubDate"/> <br/>
新闻分类: <s:selectlist="allType"name="news.newsType.tid"listKey="tid"listValue="tname"></s:select>
<br/>
新闻图片: <s:filename="photo"></s:file>
<s:submitvalue="添加"/>
</s:form>
</center>
完成Action中的处理。
由于有文件上传功能,因此这里建立一个Uitls类,完成文件上传的处理
public class FileUtils {
/**
* 保存文件功能
*
* @param orgFile
* 要保存的文件
* @param savePath
* 保存的路径(物理路径)
* @param orgFileName
* 原文件名(用来取得扩展名)
* @return
* @throws Exception
*/
public static String saveFile(File orgFile, String savePath,
String orgFileName) throws Exception {
// 生成文件名
String fileName = UUID.randomUUID().toString();
// 处理扩展名
String extName = orgFileName.substring(orgFileName.lastIndexOf("."));
FileOutputStream os = new FileOutputStream(new File(savePath + fileName
+ extName));
FileInputStream is = new FileInputStream(orgFile);
byte[] data =new byte[1024];
int length = 0;
try {
while ((length = is.read(data)) != -1) {
os.write(data, 0, length);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is !=null) {
is.close();
}
if (os !=null) {
os.close();
}
}
LogUtils.addInfo("保存了一个文件: " + fileName + extName);
return fileName + extName;
}
}
完成Action中的添加操作。
private Newsnews;
private Filephoto;
private StringphotoFileName;
private Stringmessage;
private Stringurl;
public String insert()throws Exception {
// 文件上传操作
String savePath = ServletActionContext.getServletContext().getRealPath(
"/upload")
+ "/";
String fileName = FileUtils.saveFile(photo, savePath,photoFileName);
news.setPhoto(fileName);
service.insert(news);
LogUtils.addInfo("添加了新闻信息: " +news.getId() + " --> XXX添加的");
message = "新闻发布成功";
url = "index.jsp" ;
return"forward";
}
完成列表中显示图片的功能。
列表中这里使用Struts2标签完成迭代。
通过s:if ,s:iterator来完成判断和循环功能:
<center>
<tableborder="1"width="80%">
<tr>
<td>
编号
</td>
<td>
标题
</td>
<td>
内容
</td>
<td>
所属分类
</td>
<td>
发布日期
</td>
<td>
照片
</td>
<td>
操作
</td>
</tr>
<s:iftest="allNews != null && allNews.size() > 0">
<s:iteratorvalue="allNews">
<tr>
<td>
${id }
</td>
<td>
${title }
</td>
<td>
${content }
</td>
<td>
${newsType.tname }
</td>
<td>
<fmt:formatDatevalue="${pubDate}" pattern="yyyy-MM-dd" />
</td>
<td>
<imgsrc="upload/${photo==null?'nophoto.png':photo}"width="100"height="75"/>
</td>
<td>
<ahref="news!updatePre.action?news.id=${id}">修改</a>
<ahref="news!delete.action?news.id=${id}"
onclick="return window.confirm('确定要删除吗?');">删除</a>
</td>
</tr>
</s:iterator>
</s:if>
</table>
<br/>
<jsp:includepage="/split_page_plugin.jsp">
<jsp:paramvalue="${pageNo}" name="pageNo" />
<jsp:paramvalue="${pageSize}" name="pageSize" />
<jsp:paramvalue="${keyword}" name="keyword" />
<jsp:paramvalue="${column}" name="column" />
<jsp:paramvalue="${count}" name="count"/>
<jsp:paramvalue="pages/back/news_list.action"name="URL"/>
<jsp:paramvalue="title:新闻标题|content:新闻内容"name="columnData"/>
<jsp:paramvalue="3"name="pageStyle"/>
</jsp:include>
</center>
完成删除操作,需要多传递一个文件名,删除数据的同时删除图片。
public String delete()throws Exception {
service.delete(news.getId());
// 顺便删除图片
String filePath = ServletActionContext.getServletContext().getRealPath(
"/upload")
+ "/";
FileUtils.deleteFile(filePath, news.getPhoto());
LogUtils.addInfo("新闻被删除: " +news.getId() + " --> xxx删除的");
message = "新闻删除成功";
url = "pages/back/news_list.action";
return"forward";
}
最后实现修改操作,如果传递了新图片,需要删除原有图片,如果没有传递新图片,则继续保留原有图片内容。
public String updatePre()throws Exception {
Map<String, Object> map = service.updatePre(news.getId());
allType = (List<NewsType>) map.get("allType");
news = (News) map.get("news");
return"update";
}
<resultname="update">/pages/back/news/news_update.jsp</result>
完成修改页面的处理。
<s:formaction="news_update.action"method="post"theme="simple"
namespace="/pages/back"enctype="multipart/form-data">
新闻标题: <s:textfieldname="news.title"></s:textfield>
<br/>
新闻内容: <s:textfieldname="news.content"/>
<br/>
新闻发布日期:<s:textfieldname="news.pubDate"/>
<br/>
新闻分类: <s:selectlist="allType"name="news.newsType.tid"
listKey="tid"listValue="tname"></s:select>
<br/>
新闻图片: <s:filename="photo"></s:file>
<br/>
<s:hiddenname="news.id"></s:hidden>
<s:iftest="news.photo != null">
<s:hiddenname="news.photo"></s:hidden>
</s:if>
<s:submitvalue="修改"/>
</s:form>
提交后,实现修改操作
public String update()throws Exception {
// 先处理文件操作
// 是否上传了新文件
if (photo !=null && photo.length() > 0) {
// 先删除原有文件
String filePath = ServletActionContext.getServletContext()
.getRealPath("/upload")
+ "/";
FileUtils.deleteFile(filePath, news.getPhoto());
String fileName = FileUtils
.saveFile(photo, filePath,photoFileName);
news.setPhoto(fileName);
}
service.update(news);
message = "新闻修改成功 ";
url = "pages/back/news_list.action";
return"forward";
}
- SSH实现新闻管理操作
- [SSH] 新闻管理系统 News CMS
- smarty实现简单的新闻管理系统
- smarty实现简单新闻管理系统
- 新闻管理系统的设计与实现
- 实现用户管理模块和新闻类别管理模块
- 实现用户管理模块和新闻类别管理模块
- ssh+dwr实现级联操作
- SSH远程服务的管理操作
- SSH远程服务的管理操作
- smarty与php实现新闻管理的代码(一)
- 实现新闻管理系统前的项目分析:
- smarty与php实现新闻管理的代码(二)
- MVC框架新闻管理系统实现增删改查
- JavaWeb这三周-FrameSet框架实现新闻后台管理系统
- 新闻管理系统(一)管理员登陆实现
- 基于Java EE新闻管理系统的设计与实现
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现
- 弹出(保存成功)为悬浮框,一秒之后消失
- OceanBase架构
- 什么是WebService
- ubuntu有时可能会出现窗口突然没有了“关闭”“最小化”“最大化“按钮
- 欲善其事,先利其器(1)
- SSH实现新闻管理操作
- debian ctrl+alt+t无法启动终端解决办法
- java Properties类
- rtsp学习
- 生活要努力
- 任建新照常去办公室领取工资
- 电商站如何优化能才事半功倍
- Java中的初始化块
- 彻底搞懂Oracle的左外连接和右外连接(以数据说话)