一、存储新闻dao方法

在NewsDao.java中新增存储新闻的saveOrupdate方法

public void  saveOrupdate(News news){
getSession().saveOrUpdate(news);
}

二、存储新闻service方法

在NewsService.java中新增存储新闻的saveOrupdate方法

public void saveOrupdate(News news){
newsDao.saveOrupdate(news);
}

三、存储新闻action

让NewsAction实现ModelDriven和Preparable接口,并实现其抽象方法。

package cn.ac.ucas.action;

import java.util.Map;

import org.apache.struts2.interceptor.RequestAware;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable; import cn.ac.ucas.form.News;
import cn.ac.ucas.service.NewsService; public class NewsAction extends ActionSupport implements RequestAware, ModelDriven<News>, Preparable { private static final long serialVersionUID = 1L;
private Map<String, Object> request; private NewsService newsService;
private News model; @Override
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.request = arg0;
} public void setNewsService(NewsService newsService) {
this.newsService = newsService;
} public String list() { // 新闻列表,获取所有新闻 request.put("newslist", newsService.getAllNews()); return "list";
} public String save() { // 存储新闻
// System.out.println(model);
newsService.saveOrupdate(model);
return "save";
} public String post() { // 跳转到公布新闻页面
return "post";
} @Override
public News getModel() {
// TODO Auto-generated method stub
return model;
} @Override
public void prepare() throws Exception {
// TODO Auto-generated method stub } public void prepareSave() {
model = new News();
} }

四、配置struts

改动struts.xml,使用新的拦截器栈

<package name="default" namespace="/" extends="struts-default">

        <!-- 定义新的拦截器,配置prepare拦截器栈的alwaysInvokePrepare參数值为false -->
<interceptors>
<interceptor-stack name="sshStack">
<interceptor-ref name="paramsPrepareParamsStack">
<param name="prepare.alwaysInvokePrepare">false</param>
</interceptor-ref>
</interceptor-stack>
</interceptors> <!-- 使用新的拦截器栈 -->
<default-interceptor-ref name="sshStack"></default-interceptor-ref> <action name="news-*" class="newsAction" method="{1}">
<result name="list">/WEB-INF/newslist.jsp</result>
<result name="post">/WEB-INF/newspost.jsp</result>
<result name="save" type="redirect">/news-list</result>
</action>
</package>

訪问news-post跳到/WEB-INF/newspost.jsp公布新闻。訪问news-save存储新闻到数据库并重定向到新闻列表页。

五、编写前端页面

在index.jsp增加一行,点击中后跳转至/WEB-INF/newspost.jsp

<a href="news-post">公布新闻</a>

newspost.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="news-save" method="post">
<s:textfield name="title" label=" 新闻标题"></s:textfield>
<s:textfield name="author" label="新闻作者"></s:textfield>
<s:textfield name="source" label="新闻来源"></s:textfield>
<s:textfield name="posttime" label="公布时间"></s:textfield>
<s:textfield name="content" label="新闻内容"></s:textfield>
<s:submit value="录入"></s:submit>
</s:form>
</body>
</html>

录入界面:

新闻列表页:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻列表</title>
<style type="text/css">
body {
margin: 0px;
padding: 0px;
width: 800px;
margin: 30px auto;
} .newslist h2 {
text-align: center;
} .newsinfo {
text-align: center;
} .newscontent {
text-indent: 2em;
} .newscontent a {
display: block;
float: right;
}
</style>
</head>
<body>
<s:iterator value="#request.newslist">
<div class="newslist">
<h2>${title}</h2>
<p class="newsinfo">${author}${source}${posttime}</p>
<p class="newscontent">${content}</p>
<hr>
</div>
</s:iterator> </body>
</html>

[ssh新闻公布系统三]存储新闻的更多相关文章

  1. 牛腩新闻公布系统--学习Web的小技巧汇总

    2014年11月10日,是个难忘的日子.这一天.小编的BS学习開始了.BS的开头,从牛腩新闻公布系统開始.之前学习的内容都是CS方面的知识,软考过后.開始学习BS,接触BS有几天的时间了,跟着牛腩老师 ...

  2. 初识ASP.net-牛腩新闻公布系统

           在做牛腩新闻公布的系统的时候,总有一种感觉就是:我仍然在敲机房收费系统,唯一不同的一点.就是敲机房收费的时候,用户界面是是自己手动画界面.而,在牛腩新闻公布系统中,用户界面,却是须要自己 ...

  3. 新闻公布系统 (Asp.net 三层架构 )

    2012年度课程设计---新闻公布系统(小结)                                                                             ...

  4. 【牛腩新闻公布系统】WebForms UnobtrusiveValidationMode 须要“jquery”ScriptResourceMapping。

    问题:       WebForms UnobtrusiveValidationMode须要"jquery"ScriptResourceMapping. 请加入一个名jquery ...

  5. 基于JSP+SERVLET的新闻发布系统(三)

    拖了这么久..今天把栏目管理还有新闻管理模块的也挂出来.. 栏目管理跟用户管理一样. 这里重点讲解新闻管理. 效果图如上: 1,可选择栏目类别,且栏目类别是动态生成的. 默认生成的文章是未审核状态的. ...

  6. 【NodeJS 学习笔记04】新闻发布系统

    前言 昨天,我们跟着这位大哥的博客(https://github.com/nswbmw/N-blog/wiki/_pages)进行了nodeJS初步的学习,最后也能将数据插入数据库了 但是一味的跟着别 ...

  7. News新闻发布系统

            News新闻发布系统分页的实现 1.首先我们要在NewsDAO中创建一个方法,返回List<NewsEntity>集合,其中pageIndex表示当前页,pageSize表 ...

  8. 门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结(转)

    add by zhj:先收藏了 摘要:评论系统是所有门户网站的核心标准服务组件之一.本文作者曾负责新浪网评论系统多年,这套系统不仅服务于门户新闻业务,还包括调查.投票等产品,经历了从单机到多机再到集群 ...

  9. DRP PK 牛腩新闻发布系统

    一.JSP与ASP (1)Web服务器的支持:大多数通用的Web服务器如:Apache.Netscape和Microsoft IIS都支持JSP页面,只有微软本身的Microsoft IIS和Pers ...

随机推荐

  1. 缓存淘汰算法之LFU

    1. LFU类 1.1. LFU 1.1.1. 原理 LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频 ...

  2. how can I ues Dataset to shuffle a large whole dataset?

    The Dataset.shuffle() implementation is designed for data that could be shuffled in memory; we're co ...

  3. 《程序员思维修炼》读书笔记——week4

    <程序员思维修炼>读书笔记——week4 PB16061441 陈昶金 这周读的是Andy Hunt的著作<程序员思维修炼>,这本书对于我这种刚刚入门的新手很友好,大多是讲一些 ...

  4. js只能输入汉字

    var reg = new RegExp("[\\u4E00-\\u9FFF]+","g"); if(reg.test(val)){            al ...

  5. 【bzoj3751】[NOIP2014]解方程 数论

    题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...

  6. [LOJ#121]动态图连通性

    [LOJ#121]动态图连通性 试题描述 这是一道模板题. 你要维护一张无向简单图.你被要求加入删除一条边及查询两个点是否连通. 0:加入一条边.保证它不存在. 1:删除一条边.保证它存在. 2:查询 ...

  7. javaweb-简单的验证码和算术验证码

    我们登陆网站时,每次都会填写一些验证码,这些验证码的作用:防止被恶意攻击,验证码上面的字母数字一般都是随机生成的,因此我们首先要写一个方法生成一个随机的字符串,这里就需要java里面的随机函数Rand ...

  8. IE8,11的iframe高度自适应

    兼容模式:function iFrameHeightTzinfo() { var ifm= document.getElementById("iframe_tzinfo"); // ...

  9. bzoj1306: [CQOI2009]match循环赛(模拟爆搜)

    Input第一行包含一个正整数n,队伍的个数.第二行包含n个非负整数,即每支队伍的得分.Output输出仅一行,即可能的分数表数目.保证至少存在一个可能的分数表.Sample Input 6 5 6 ...

  10. 使用router.push()进行页面跳转的问题

    看着官网的文档直接router.push()这样会报错router undefind,需要写成this.$router.push()才可以