【JavaWeb】MVC案例之新闻列表

MVC案例之新闻列表

作者:白宁超

2016年6月6日15:26:30

摘要:本文主要针对javaweb基本开发之MVC案例的简单操作,里面涉及mysql数据库及表的创建,以及jsp页面和servlet的操作,整个操作流程进行梳理。其中涉及的概念问题,不在一一详述。对于整个操作流程按照开发顺序创建。(本文原创,转载标明出处:MVC案例之新闻列表)。

实验准备:

1  win*系统,一般配置笔记本或者台式机

2  安装MyEclipse开发平台,本实验使用MyEclipse2015(点击下载)

3 Mysql数据库,当然oracle或者sql server数据库也是一样的。由于作者采用win8系统,数据库采用低版本,本实验采用mysql-installer-community-5.6.14.0.msi(点击下载),Mysql数据库分为两种,一种是开源的,一种提供安装部署的,效果都一样。

4 JDBC链接数据库的jar包,本实验采用mysql-connector-java-5.1.20.jar(点击下载)

一、需求分析阶段

1 要求使用mysql数据库去创建数据库test和表news(nid int,ntitle String,ntype String,nauthor String)

2 采用MVC开发,实现新闻的查询操作

二、数据库创建阶段

# 创建数据库test
create database test;
#使用数据库
use test;
#创建表
create table test.news(
nid varchar(45) default null,
ntitle varchar(450) not null,
ntype varchar(450) not null,
nauthor varchar(45) not null
) default charset=GB2312;
#插入数据
insert test.news(nid,ntitle,ntype,nauthor) values(‘1‘,‘2016年6月高考最新信息‘,‘教育新闻‘,‘新华社‘);
insert test.news(nid,ntitle,ntype,nauthor) values(‘2‘,‘反贪大老虎再落马小记‘,‘时政新闻‘,‘人民日报‘);

#查询数据
select * from test.news  order by nid desc

三、MVC开发阶段

百度百科:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

注:详细MVC可以参照官方文档或者google

1 新建jsp页面命名AllNews.jsp

2 新建三个类文件AllNewsModel.java/AllNewsDao.java/AllNewsServlet.java

其中:

AllNewsModel.java:是对数据库中news表的字段实例化

package com.cuit.javaweb.mvc;

public class AllNewsModel {
	private int nid;
	private String ntitle;
	private String ntype;
	private String nauthor;
	public AllNewsModel(int id,String title,String type,String author){
		this.nid=id;
		this.ntitle=title;
		this.ntype=type;
		this.nauthor=author;
	}
	public int getNid() {
		return nid;
	}
	public void setNid(int nid) {
		this.nid = nid;
	}
	public String getNtitle() {
		return ntitle;
	}
	public void setNtitle(String ntitle) {
		this.ntitle = ntitle;
	}
	public String getNtype() {
		return ntype;
	}
	public void setNtype(String ntype) {
		this.ntype = ntype;
	}
	public String getNauthor() {
		return nauthor;
	}
	public void setNauthor(String nauthor) {
		this.nauthor = nauthor;
	}
}

AllNewsDao.java:进行数据库底层操作,注意此刻mysql-connector-java-5.1.20.jar放在/WebRoot/WEB-INF/lib中,即JDBC驱动

package com.cuit.javaweb.mvc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class AllNewsDao {
     public List<AllNewsModel> getAllNews(){
		List<AllNewsModel> AllNews=new ArrayList<AllNewsModel>();
		Connection conn=null;
		PreparedStatement preparedStatement=null;
		ResultSet resultSet=null;
		try{
			String driverClass="com.mysql.jdbc.Driver";
			String url="jdbc:mysql:///test";
			String user="root";
			String password="root";
			Class.forName(driverClass);
			conn=DriverManager.getConnection(url,user,password);
			String sql="Select * from news";
			preparedStatement=conn.prepareStatement(sql);
			resultSet=preparedStatement.executeQuery();
			while(resultSet.next()){
				int nid=resultSet.getInt(1);
				String ntitle=resultSet.getString(2);
				String ntype=resultSet.getString(3);
				String nauthor=resultSet.getString(4);
				AllNewsModel news=new AllNewsModel(nid,ntitle,ntype,nauthor);
				AllNews.add(news);
			} 

		}
		catch(Exception ex){
			ex.printStackTrace();
		}finally{
		 try{
			if(resultSet!=null){
				resultSet.close();
			}
		    }catch(SQLException ex){
				ex.printStackTrace();
		    }

		 try{
				if(preparedStatement!=null){
					preparedStatement.close();
				}
			    }catch(SQLException ex){
					ex.printStackTrace();
			    }

		 try{
				if(conn!=null){
					conn.close();
				}
			    }catch(SQLException ex){
					ex.printStackTrace();
			    }
		}
		return AllNews;
	}
}

AllNewsServlet.java:对数据操作层指定视图显示,起着业务逻辑控制的作用

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		AllNewsDao allNewsDao=new AllNewsDao();
		List<AllNewsModel> allNews=allNewsDao.getAllNews();
		request.setAttribute("AllNews", allNews);
		request.getRequestDispatcher("/AllNews.jsp").forward(request, response);

	}

AllNews.jsp:视图的功能用于显示数据

<body>
   <%
      List<AllNewsModel> allNews=(List<AllNewsModel>)request.getAttribute("AllNews");
   %>
   <table>
      <tr>
         <th>新闻编号</th>
         <th>新闻题目</th>
         <th>新闻类别</th>
         <th>新闻作者</th>
      </tr>
     <%
     for(AllNewsModel news:allNews ){
      %>
      <tr>
         <td><%=news.getNid() %></td>
         <td><%=news.getNtitle() %></td>
         <td><%=news.getNtype() %></td>
         <td><%=news.getNauthor() %></td>
      </tr>
   <%
   }
   %>
   </table>
</body>

四、运行效果演示

如图所示:完成数据查询功能,其中运行根目录为http://localhost:8080/,项目名称day_03后面的allNewsServlet是创建servlet时候mappping出来的,即重定向技术。

时间: 2024-10-14 20:47:08

【JavaWeb】MVC案例之新闻列表的相关文章

JavaWeb开发---MVC案例之查询

现在Javaweb开发第一阶段学习步入实践阶段,在这儿将自己做的项目记下来,也方便积累经验. 下图是处理流程: MySQL数据库表如下所示: 1.在web项目webContent中新建test.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC &q

桂电在线_微信公众平台开发之-运用angularjs显示学校公告新闻列表和详情页面

折腾angularjs的感悟 几天折腾,总的来说看了很多博客,要么不是最新的技术文档,要么写得不够完整,因为别人是基于他们的理解写的技术博客代码不一定会贴完整,所以一旦你用的是最新的想要看完整的实例就只能去官网查阅文档,现在通过实现下面的两个功能才真正了解什么是前端的MVVM框架. 另外,总结下我理解中的MVVM框架:后台php是MVC框架,一直做法是php处理数据,然后把数据渲染到模板,然后后台返回html页面给浏览器, 现在前端mvvm(model-view-viewmodel)就是:mod

新闻列表中标题和日期的左右分别对齐的几种处理方法

前言 在新闻列表中,有标题和日期,然后分别对齐,这种应用场景非常广泛.而在前端实践中,其也有很多中布局方式.很多前端新手在入门时,可能会稍微有点迷茫. 今天我列举几个常用的布局方法,便于新手学习. 这里只是为了实现功能效果,所以不额外添加美化类的样式.只列出核心参数,详细使用时,请根据自己的情况灵活使用. 效果演示 方法一:日期定位法 这种方法是使用定位,将日期设定到right:0;top:0的位置. DOM结构 <div class="news_box"> <ul&

两个GridView之间数据转移,交互,实现拖拽,网易新闻列表效果实现

两个GridView之间数据转移,交互,实现拖拽,网易新闻列表效果实现 摘要 :android 高仿频道管理网易新闻. 新闻频道增删,排序,以及一些动画的实现 可拖动的GridView 地址  :  http://www.itnose.net/detail/6035345.html

css如何去掉新闻列表最后一个新闻的下划线

css如何去掉新闻列表最后一个新闻的下划线:本章节分享一个比较使用的效果,那就是如何去掉新闻列表最后一个新闻的下划线.在很多新闻列表效果中,在每一个新闻下面都有一个虚线或者其他什么形式的下划线,总之感觉有比较美观的,但是往往最后一个新闻是不需要这个下划线的,下面介绍一下如何实现此效果.代码如下: <!DOCTYPE html><html> <head> <meta charset=" utf-8"> <meta name="

jeecms网站中的新闻列表前边的图片是可以修改的

1.对于有要求的栏目,比如网站首页的悬浮对联,按照要求,在首页有四个位置,并且可以选择是否展示.管理员自己添加信息.这种情况下就需要建立一个新的模型. 2.建立的模型id是6,按照需要设置了栏目模型和内容模型.然后添加对应该模型的栏目.然后对添加的栏目,添加信息. 3.添加的信息展示出来的新闻列表图标和其他新闻不一致: 4.找到这个list页面 发现对应模型id,分别对应不同的图片. 5.解决方法,可以修改数字 9,或者可以之前找到对应的图片,然后用自己需要的来替换. 缺点就是模型id不易变动,

day20 project+查看新闻列表 + 点赞 + 图片验证码 + 评论和多级评论 + 后台管理 + webSocket + kindEditor

Day20回顾: 1. 请求生命周期 2. 中间件 md = [ "file_path.classname" ] process_request[可有可无] process_response[必须有] process_request process_response process_request process_response process_request process_response process_request process_response 路由->函数 3.

jQuery循环滚动新闻列表

最近由于项目原因,学习了下jquery,实现了一个小小的功能,就是点击公告的上一条下一条来查看滚动条.具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html>      <head> <meta http-equ

用requests库和BeautifulSoup4库爬取新闻列表

1.用requests库和BeautifulSoup4库,爬取校园新闻列表的时间.标题.链接.来源. import requests from bs4 import BeautifulSoup mt="http://news.gzcc.cn/html/xiaoyuanxinwen/" res=requests.get(mt) res.encoding='utf-8' soup=BeautifulSoup(res.text,"html.parser") for new