Ajax 02:案例cms(新闻管理系统)

步骤一:新建项目

file->new->Dynamic web project(新建一个动态web项目)->命名项目->next->next->改名WebContent

步骤二:设置结构

创建实体和包:new->class->包名entity->类名news(根据属性,有参构造和无参构造和get、set方法)

创建controller:new->servlet->包名controller->名NewsListController(展示新闻列表功能)

创建utils工具类:数据库工具类和json工具类 

导入jar包:

(json格式校验网址:在线JSON校验格式化工具(Be JSON)

步骤三:实现功能

功能1:新闻列表显示到页面上

1.1Controller部分-Servlet

//命名:NewsListController
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//乱码的解决:编码的规范(以json形式解析)
		response.setContentType("application/json;charset=UTF-8");
		
		
		//新闻列表显示到页面上
		
		List<News> list=new ArrayList<News>();
		list.add(new News(0,"标题:例如:好好学习天天向上", "", ""));
		list.add(new News(1, "标题****", "", ""));
		list.add(new News(2, "标题****", "", ""));
		list.add(new News(3, "标题****", "", ""));
		list.add(new News(4, "标题****", "", ""));
		list.add(new News(5, "标题****", "", ""));
	
		//变成json:快速方法,利用json库
		String json=JsonUtils.objectToJson(list);
		
		//响应
		//ctrl+shift+o=智能导包
		PrintWriter pw=response.getWriter();
		pw.print(json);
		pw.flush();
		pw.close();
	}

1.2页面部分

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新闻列表</title>
<script type="text/javascript" src="js/jquery-3.6.0.js"></script>
<script type="text/javascript">
//就绪
$(function(){
	//发送ajax异步请求
	$.get('NewsListController',function(data){
		//console.log(data);//检测成功拿到数据没
		str="";
		for(i=0;i<data.length;i++){//var可以省略
			str+="<tr>";
				str+="<td>"+data[i].id+"</td>";
				str+="<td>"+data[i].title+"</td>";
				str+="<td>"+data[i].descn+"</td>";
			str+="</tr>";
		}
		$('#newsList').append(str);
	});
});
</script>
</head>
<body>
	<table id="newsList">
		<tr>
			<td>ID</td>
			<td>标题</td>
			<td>描述</td>
		</tr>
	</table>
</body>
</html>

功能2:添加显示(Ajax不用跳转)

2.1 建数据库

2.2 四层架构

2.2.1 DAO层

package dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import entity.News;
import util.JDBCUtils;

public class NewsDAO {
	/**
	 * 查询全部新闻
	 * @return
	 */
	public List<News> selectAll(){
		String sql="select * from news";
		List<News> list =new ArrayList<News>();
		ResultSet rs=JDBCUtils.search(sql);
		try {
			while(rs.next()) {
				int id=rs.getInt("id");
				String title=rs.getString("title");
				String descn=rs.getString("descn");
				String content=rs.getString("content");
				list.add(new News(id, title, descn, content));
			}
			JDBCUtils.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
	/**
	 * 添加新闻
	 * @return
	 */
	public int insertNews(News news){
		String sql="insert into news value(default,'"+news.getTitle()+"','"+news.getDescn()+"','"+news.getContent()+"');";
		return JDBCUtils.executeSQL(sql);
	}
 }

2.2.2 服务层:service层接口及具体实现类

package service;

import entity.News;

public interface NewsService {
	/**
	 * 获取全部新闻
	 * @return json
	 */
	public String getAllNews();
	/**
	 * 添加新闻
	 * @return json
	 */
	public String saveNews(News news);
	
}
package service.impl;

import java.util.List;

import dao.NewsDAO;
import entity.HttpResult;
import entity.News;
import service.NewsService;
import util.JsonUtils;
//实现接口的类
public class NewServiceImpl implements NewsService {
	private NewsDAO dao=new NewsDAO();
	@Override
	public String getAllNews() {
		List<News> list =dao.selectAll();
		return JsonUtils.objectToJson(list);
	}

	@Override
	public String saveNews(News news) {
		int i=dao.insertNews(news);
		HttpResult hr=null;
		if(i>0) {
			//添加成功
			hr=new HttpResult(HttpResult.STATE_SUCCESSED, "添加新闻成功");
		}else {
			//添加失败
			hr=new HttpResult(HttpResult.STATE_FAILURE, "添加新闻失败");
		}
		return JsonUtils.objectToJson(hr);//将java对象转换成json串
	}

}

2.2.3 controller层

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//乱码的解决:编码的规范(以json形式解析)
		response.setContentType("application/json;charset=UTF-8");
		//页面上新闻添加
		String title =request.getParameter("title");//标题
		String descn =request.getParameter("descn");//描述
		//调用方法
		NewsService service =new NewServiceImpl();
		//变成json:快速方法,利用json库
		String json=service.saveNews(new News(0, title, descn, null));
		//响应
		PrintWriter pw=response.getWriter();
		pw.print(json);
		pw.flush();
		pw.close();
	}

2.2.4 视图层

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新闻列表</title>
<script type="text/javascript" src="js/jquery-3.6.0.js"></script>
<script type="text/javascript">
//就绪
$(function(){
	//需要复用的匿名函数(刷新用)-新闻列表显示
	requestNewsList = function(){
		//发送ajax异步请求
		//数据库中列表展示
		$.get('NewsListController',function(data){
			//console.log(data);//检测成功拿到数据没
			str="<tr><td>ID</td><td>标题</td><td>描述</td></tr>";
			for(i=0;i<data.length;i++){//var可以省略
				str+="<tr>";
					str+="<td>"+data[i].id+"</td>";
					str+="<td>"+data[i].title+"</td>";
					str+="<td>"+data[i].descn+"</td>";
				str+="</tr>";
			}
			$("#newsList").empty();
			$('#newsList').append(str);
		});
	};
	requestNewsList();//请求新闻列表(从上到下解析,先定义才能调用)
	//添加数据(点击添加按钮时)
	doAdd=function(){
		//获取文本框的值
		titleAdd=$("#title").val();
		descnAdd=$("#descn").val();
		//通过post请求向servlet中提交数据
		//区别于get的?传参
		//$post('响应地址',{参数列表},function(data=){回调函数});
		$.post('NewsAddController',
				{
					title:titleAdd,
					descn:descnAdd
				},
				function(data){//对应HttpResult
					if(data.code==200){
						//根据servlet响应的结构动态改变新闻列表
						
						requestNewsList();//请求新闻列表(从上到下解析,先定义才能调用)
					}else{
						alert(data.msg);
					}
				}
		);	
	};
});
</script>
</head>
<body>
	标题:<input id="title" type="text" size="12"/>&nbsp;&nbsp;
	描述:<input id="descn" type="text" size="12"/>&nbsp;&nbsp;
	<input type="button" value="添加" onclick="doAdd()"/>&nbsp;&nbsp;
	<table id="newsList">
		
	</table>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gxlcms新闻系统是一个以php mysql进行开发的新闻cms内容管理系统。 Gxlcms新闻系统(新闻cms) v2.0更新日志 1.优化新闻内图片下载功能 2.优化后台界面 Gxlcms新闻系统的优势 前台与后台采用隔离方式,模板化设计,让只要你会前端就可以做一个新闻网站!后台设计简单明了,小白用户一看就会明白!程序功能也非常完善! 1.目前程序支持三种路由模式:静态生成,伪静态,动态; 2.支持两种存储模式:本地存储,FTP存储 3.接入百度主动推送功能!让你每篇新闻/资讯都可以及时被百度发现 4.图片水印功能:只要开启图片水印,不管是标图图片或者是内容图片统统添加水印,水印功能支持9宫格设计,让你可以随意把图片水印加到任意地方 5.数据库一键备份/还原,让你可以轻松的把网站迁移到任何服务器上 6.缓存功能:模板缓存,数据库缓存,网站页面缓存 7.友情链接:支持图片链接和文字链接 8.广告模块:只要后台添加广告后,全部js生成到前台,让你不用费事修改模板 9.采集功能,我们支持火车头采集,火车头接口已经在插件心里面,只需要你下载后,就可以采集上万新闻内容,为了防止重名新闻,我们对接口做了细腻化的功能,支持入库重名判断,当有重名新闻自动过滤 10.扩展功能:扩展性,可以在插件心下载,招聘模块,图集模块,会员心模块,交友模块等等模块进行安装(开发) Gxlcms新闻系统截图 相关阅读 同类推荐:站长常用源码
We7 CMS 是一套采用C#开发的,基于.net2.0,可以运行于Oracle、SQLite、Sqlserver、MySQL、Access等数据库之上的网站内容管理系统软件(Content Manage System,简称CMS)。 We7 CMS v2.8将更多的注意力集在了用户体验和代码质量上,为此,我们在功能精简提炼和性能优化上做了大量工作: a、新建了辅助站点2点 b、撰写辅助文档4个 c、提取非必须功能13个到微七插件商城 d、重构发布可视化模板功能,得到10速提速 e、修正BUG 100+个 f、完成脚本和后端代码共计10000余行后 台登录密码:用户名/密码: admin/111111 We7 CMS 2.8.2 更新日志: 1、修正反馈模型提交后跳转地址不正确的bug。 2、添加类别三级联动控件。 3、内容模型详细页要添加支持取缩略图的方法。 4、在ModelList页面上添加设置是否使用旧的列表界面。 5、反馈模型-办理权限-增加“不受理”,“转办”的权限,反馈页面根据权限 呈现不同的按钮。 6、We7.Model.UI下添加可取得当前文章ID的控件。 7、改写OnLoad为OnInit,防止前台页面重写OnLoad造成权限丢失。 8、后台列表删除一条记录后,自动刷新列表。 9、修正工作量统计,按用户、栏目查询时,时间选择无效的问题。 10、修正任意文件下载bug。 11、内容模型类别控件数据格式化的修正。 12、缩短ShopService的过期时间。 13、WriteLog()方法的异常处理。 14、如反馈模型是加密,前台信息列表进入详细页时候需要输入密码 15、反馈查询信息列表页,默认读出列表 16、查询数据库时部分地方Name字段需改为Title;反馈类型加密验证;反馈类型加排序字段。 17、BaseWidgetList.cs的PageSize属性移至WidgetList.cs;添加类别时,仅同一层级同一父类别下的名称不可重复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值