[ssh新闻发布系统二] 读取新闻

简介: 上一篇博客已经配置好ssh的开发环境, 并生成了数据库表,这篇博客实现从数据库里面读取新闻数据到前台这一功能。一、修改applicationContext.

上一篇博客已经配置好ssh的开发环境, 并生成了数据库表,这篇博客实现从数据库里面读取新闻数据到前台这一功能。

一、修改applicationContext.xml

把以下代码加到数据库连接配置之后:

    <!-- 配置spring的声明式事务 -->
    <!-- 1.配置hibernate的事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
       <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <!-- 2.配置事务属性 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
       <tx:attributes>
         <tx:method name="get*" read-only="true"/>
         <tx:method name="lastNameIsValid" read-only="true"/>
         <tx:method name="*"/>
       </tx:attributes>
    </tx:advice>
    <!-- 3.配置事务切入点,再把事务属性和事务切入点关联起来 -->
    <aop:config>
       <aop:pointcut expression="execution(* cn.ac.ucas.service.*.*(..))" 
       id="txPointCut"/>
       <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    </aop:config>

如果出现错误提示:

Error occured processing XML 'org/springframework/transaction/interceptor/TransactionInterceptor'. See Error Log for more 
 details

下载aspectjweaver-1.8.7.jaraopalliance-1.0.jar加入lib中。注意aop:pointcut属性的service类所在的包名。

二、加入dao、service、action


新建包cn.ac.ucas.dao,添加BaseDao、NewsDao.java
BaseDao

package cn.ac.ucas.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class BaseDao {
    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public Session getSession(){
        return this.sessionFactory.getCurrentSession();
    }
}

NewsDao

package cn.ac.ucas.dao;

import java.util.List;


import cn.ac.ucas.form.News;

public class NewsDao extends BaseDao {

    public List<News> getAllnews() {

        String hql = "FROM News";
        return getSession().createQuery(hql).list();
    }
}

新建cn.ac.ucas.service包,添加NewsService.java

package cn.ac.ucas.service;

import java.util.List;

import cn.ac.ucas.dao.NewsDao;
import cn.ac.ucas.form.News;

public class NewsService {
    private NewsDao newsDao;

    public void setNewsDao(NewsDao newsDao) {
        this.newsDao = newsDao;
    }

    public List<News> getAllNews(){


        return newsDao.getAllnews();
    }
}

新建cn.ac.ucas.action包,添加NewsAction.java

package cn.ac.ucas.action;

import java.util.Map;

import org.apache.struts2.interceptor.RequestAware;

import com.opensymphony.xwork2.ActionSupport;

import cn.ac.ucas.service.NewsService;

public class NewsAction extends ActionSupport implements RequestAware {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private Map<String, Object> request;

    private NewsService newsService;

    @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";
    }
}

三、配置spring

到struts-2.3.24-all/struts-2.3.24/lib找到struts2-spring-plugin-2.3.24.jar,加到lib目录中。
在conf目录下新建applicationContentBeans.xml,打开web.xml,把spring配置的类路径修改,使其能加载applicationContent.xml和applicationContentBeans.xml

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContent*.xml</param-value>
    </context-param>

在applicationContentBeans.xml添加下面配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

   <bean id="newsDao" class="cn.ac.ucas.dao.NewsDao">

      <property name="sessionFactory" ref="sessionFactory"></property>
   </bean>

   <bean id="newsService" class="cn.ac.ucas.service.NewsService">
      <property name="newsDao" ref="newsDao"></property>
   </bean>

   <bean id="newsAction" class="cn.ac.ucas.action.NewsAction">
      <property name="newsService" ref="newsService"></property>
   </bean>
</beans>

四、配置struts2


  1. 拷贝struts-2.3.24/apps/struts2-blank/WEB-INF/src/java/struts.xml到conf目录下.
  2. 添加action
  <action name="news-*" class="newsAction" method="{1}">
          <result name="list">/WEB-INF/newslist.jsp</result>
  </action>

五、读取新闻到页面

index.jsp添加一行:

<a href="news-list">news list</a>

在WEB-INF目录下配置struts结果页:newslist.jsp,和struts.xml中的配置要一致。

<%@ 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:iterator value="#request.newslist">
        <h3>${title}</h3>
        <p>${author}${source} ${posttime}</p>
        <p>${content}</p>
    </s:iterator>

</body>
</html>

工程目录:
这里写图片描述
在数据库中添加数据,运行。

这里写图片描述

总结:
1.新建applicationContent-beans.xml文件后不修改web.xml会出现错误
2. 忘记添加struts2-spring-plugin-2.3.24.jar会导致错误
3. 出现错误耐心调试。

下一篇博客会介绍如何使用ueditor富文本编辑器编辑新闻,并存储到数据库中。有错误之处欢迎指出。

源码下载地址:http://download.csdn.net/detail/napoay/9415185

目录
相关文章
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SSH服务端配置】
现在,你已经成功在Ubuntu系统上配置了SSH服务端。这将允许其他计算机通过SSH协议连接到你的Ubuntu系统,并进行远程管理和操作。请注意,远程访问有安全风险,建议在生产环境中采取必要的安全措施来保护系统。
158 3
|
Ubuntu 网络协议 网络安全
如何在外SSH远程连接Ubuntu系统【无公网IP】
如何在外SSH远程连接Ubuntu系统【无公网IP】
405 0
|
Java 关系型数据库 MySQL
JSP SSH公车拍卖系统myeclipse开发mysql数据库bs框架java编程网结构
JSP SSH公车拍卖系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
152 0
|
Linux 网络安全 数据安全/隐私保护
SSH工具连接远程服务器或者本地Linux系统
SSH工具连接远程服务器或者本地Linux系统
200 0
|
6月前
|
安全 网络安全 数据安全/隐私保护
Debian 12系统中允许Root远程SSH登录解决方法!
在 Debian 12 系统中开启 SSH 远程 Root 登录需修改 SSH 配置文件 (`sshd_config`),将 `PermitRootLogin` 设置为 `yes` 并确保密码认证启用。完成后重启 SSH 服务并验证连接。若防火墙启用,需放行端口 22。注意,直接开放 Root 登录可能带来安全风险,建议使用普通用户登录后切换至 Root。
557 1
|
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。
449 4
|
安全 Linux Shell
Linux系统之间实现免密码登录(SSH无密码登录
【8月更文挑战第21天】要在Linux系统间实现SSH免密码登录,需先在源机器生成SSH密钥对,然后将公钥复制到目标机器的`.ssh/authorized_keys`文件中。可通过`ssh-keygen`命令生成密钥,并使用`ssh-copy-id`命令传输公钥。最后测试SSH连接,确保能无密码登录。若目标机器缺少相关目录或文件,需手动创建并设置适当权限。完成这些步骤后,即可实现安全便捷的免密码登录。
600 0
|
机器学习/深度学习 Linux 网络安全
ssh远程访问windows系统下的jupyterlab
ssh远程访问windows系统下的jupyterlab
295 3
|
安全 Shell 网络安全
【专栏】通过SSH在远程和本地系统间传输文件的主要四种方法
【4月更文挑战第28天】本文介绍了通过SSH在远程和本地系统间传输文件的四种方法:1) SCP,适用于熟悉命令行的用户;2) SFTP,提供更丰富的文件管理功能;3) SSHFS,可将远程文件系统挂载至本地;4) 图形化工具,如FileZilla和WinSCP,操作简便。根据需求、技能水平和系统环境选择合适的方法,并注重安全设置以确保文件传输的安全可靠。
4911 7
|
网络安全 数据安全/隐私保护
银河麒麟v10系统SSH远程管理及切换root用户的操作方法
银河麒麟v10系统SSH远程管理及切换root用户的操作方法
5908 0