[ssh新闻发布系统三]存储新闻

简介: 一、存储新闻dao方法在NewsDao.java中新增存储新闻的saveOrupdate方法public void saveOrupdate(News news){ getSession().

一、存储新闻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>

这里写图片描述

目录
相关文章
|
7月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SSH服务端配置】
现在,你已经成功在Ubuntu系统上配置了SSH服务端。这将允许其他计算机通过SSH协议连接到你的Ubuntu系统,并进行远程管理和操作。请注意,远程访问有安全风险,建议在生产环境中采取必要的安全措施来保护系统。
78 3
|
7月前
|
Ubuntu 网络协议 网络安全
如何在外SSH远程连接Ubuntu系统【无公网IP】
如何在外SSH远程连接Ubuntu系统【无公网IP】
185 0
|
Java 关系型数据库 MySQL
JSP SSH公车拍卖系统myeclipse开发mysql数据库bs框架java编程网结构
JSP SSH公车拍卖系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
82 0
|
7月前
|
Linux 网络安全 数据安全/隐私保护
SSH工具连接远程服务器或者本地Linux系统
SSH工具连接远程服务器或者本地Linux系统
131 0
|
5月前
|
Shell 网络安全 数据安全/隐私保护
MacOS Sonoma14.2.1系统SSH免密登录
【7月更文挑战第9天】在MacOS Sonoma 14.2.1中设置SSH免密登录,包括:1) 使用`ssh-keygen`生成RSA密钥对;2) 使用`ssh-copy-id`将公钥传到远程主机;3) 用`ssh-add --apple-use-keychain`添加私钥到ssh-agent,并为重启后自动添加配置自动化脚本;4) 可选地,编辑`~/.ssh/config`设置别名简化登录。确保远程主机的`.ssh/authorized_keys`文件权限为600。
156 4
|
4月前
|
安全 Linux Shell
Linux系统之间实现免密码登录(SSH无密码登录
【8月更文挑战第21天】要在Linux系统间实现SSH免密码登录,需先在源机器生成SSH密钥对,然后将公钥复制到目标机器的`.ssh/authorized_keys`文件中。可通过`ssh-keygen`命令生成密钥,并使用`ssh-copy-id`命令传输公钥。最后测试SSH连接,确保能无密码登录。若目标机器缺少相关目录或文件,需手动创建并设置适当权限。完成这些步骤后,即可实现安全便捷的免密码登录。
182 0
|
6月前
|
存储 安全 Unix
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
【内网安全】Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取
|
7月前
|
机器学习/深度学习 Linux 网络安全
ssh远程访问windows系统下的jupyterlab
ssh远程访问windows系统下的jupyterlab
149 3
|
7月前
|
安全 Shell 网络安全
【专栏】通过SSH在远程和本地系统间传输文件的主要四种方法
【4月更文挑战第28天】本文介绍了通过SSH在远程和本地系统间传输文件的四种方法:1) SCP,适用于熟悉命令行的用户;2) SFTP,提供更丰富的文件管理功能;3) SSHFS,可将远程文件系统挂载至本地;4) 图形化工具,如FileZilla和WinSCP,操作简便。根据需求、技能水平和系统环境选择合适的方法,并注重安全设置以确保文件传输的安全可靠。
3532 7
|
7月前
|
网络安全 数据安全/隐私保护
银河麒麟v10系统SSH远程管理及切换root用户的操作方法
银河麒麟v10系统SSH远程管理及切换root用户的操作方法
2959 0