【JavaWeb】MVC案例之新闻列表
MVC案例之新闻列表
作者:白宁超
2016年6月6日15:26:30
摘要:本文主要针对javaweb基本开发之MVC案例的简单操作,里面涉及mysql数据库及表的创建,以及jsp页面和servlet的操作,整个操作流程进行梳理。其中涉及的概念问题,不在一一详述。对于整个操作流程按照开发顺序创建。(本文原创,转载标明出处:MVC案例之新闻列表)。
实验准备:
1 win*系统,一般配置笔记本或者台式机
2 安装MyEclipse开发平台,本实验使用MyEclipse2015(点击下载 访问密码 eafa)
3 Mysql数据库,当然oracle或者sql server数据库也是一样的。由于作者采用win8系统,数据库采用低版本,本实验采用mysql-installer-community-5.6.14.0.msi(点击下载 访问密码 39bf),Mysql数据库分为两种,一种是开源的,一种提供安装部署的,效果都一样。
4 JDBC链接数据库的jar包,本实验采用mysql-connector-java-5.1.20.jar(点击下载 访问密码 8bb1)
一、需求分析阶段
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() default null,
ntitle varchar() not null,
ntype varchar() not null,
nauthor varchar() not null
) default charset=GB2312;
#插入数据
insert test.news(nid,ntitle,ntype,nauthor) values('','2016年6月高考最新信息','教育新闻','新华社');
insert test.news(nid,ntitle,ntype,nauthor) values('','反贪大老虎再落马小记','时政新闻','人民日报'); #查询数据
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出来的,即重定向技术。
【JavaWeb】MVC案例之新闻列表的更多相关文章
- 桂电在线_微信公众平台开发之-运用angularjs显示学校公告新闻列表和详情页面
折腾angularjs的感悟 几天折腾,总的来说看了很多博客,要么不是最新的技术文档,要么写得不够完整,因为别人是基于他们的理解写的技术博客代码不一定会贴完整,所以一旦你用的是最新的想要看完整的实例就 ...
- ASP.NET MVC案例教程(四)
ASP.NET MVC案例教程(四) 前言 通过前几篇文章,我们已经能比较自如的使用ASP.NET MVC来呈现页面和数据了.但是,有一个大问题没有解决:如何处理表单数据.例如,我们将要实现的公告发布 ...
- ASP.NET MVC案例教程(五)
ASP.NET MVC案例教程(四) 前言 通过前几篇文章,我们已经能比较自如的使用ASP.NET MVC来呈现页面和数据了.但是,有一个大问题没有解决:如何处理表单数据.例如,我们将要实现的公告发布 ...
- ASP.NET MVC案例教程(二)
ASP.NET MVC案例教程(二) 让第一个页面跑起来 现在,我们来实现公告系统中的第一个页面——首页.它非常简单,只包括所有公告分类的列表,并且每个列表项是一个超链接.其中分类数据是用我们的Moc ...
- ASP.NET MVC案例教程(三)
ASP.NET MVC案例教程(二) 让第一个页面跑起来 现在,我们来实现公告系统中的第一个页面——首页.它非常简单,只包括所有公告分类的列表,并且每个列表项是一个超链接.其中分类数据是用我们的Moc ...
- JQuery实现页面企业广告图片切换和新闻列表滚动效果
最近用到一个页面上图片左右切换和新闻列表滚动呈现的效果,整理如下: 前段代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
- js实现的新闻列表垂直滚动实现详解
js实现的新闻列表垂直滚动实现详解:新闻列表垂直滚动效果在大量的网站都有应用,有点自然是不言而喻的,首先由于网页的空间有限,使用滚动代码可以使用最小的空间提供更多的信息量,还有让网页有了动态的效果,更 ...
- 多行滚动jQuery循环新闻列表代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 编写利用Fragment创建新闻列表
编写利用Fragment创建新闻列表 1.创建新闻实体类News,代码如下: public class News { private String title; private String co ...
随机推荐
- 新版startssl 免费SSL证书申请 (实测 笔记 https http2 必要条件)
简单说明: 目前多个大型网站都实现全站HTTPS,而SSL证书是实现HTTPS的必要条件之一. StartSSL是StartCom公司旗下的.提供免费SSL证书服务并且被主流浏览器支持的免费SSL.包 ...
- Web服务器控件之button
button有两种类型的按钮,一种是提交按钮,一种是命令按钮.只说命令按钮. 命令按钮事要使用两个属性,分别是CommandName和CommandArguement属性,当该按钮被点击时,将页面中的 ...
- thrift ssl 证书整理
一.生成证书,所需机器数必须 >= 2(一台生成服务端证书,一台生成客户端证书),以下服务器以A表示服务端.B表示客户端来举例,thrift版本为0.7.01.自签名的证书的生成和测试 1)生成 ...
- Raft 为什么是更易理解的分布式一致性算法
一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜 ...
- PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析
Python黑帽编程1.5 使用Wireshark练习网络协议分析 1.5.0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...
- 剑指Offer面试题:17.树的子结构
一.题目:树的子结构 题目:输入两棵二叉树A和B,判断B是不是A的子结构.例如下图中的两棵二叉树,由于A中有一部分子树的结构和B是一样的,因此B是A的子结构. 该二叉树的节点定义如下,这里使用C#语言 ...
- [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向
[.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...
- 不要对外公开泛型List成员
最近在阅读Framework Design Guidelines,本着现学现用的原则,于是就用FxCop工具对代码进行规范性检查时,发现了很多问题,其中包括命名以及一些设计上的规范. 其中,Do no ...
- Node.js + Web Socket 打造即时聊天程序嗨聊
前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前 ...
- Azure SQL Database (19) Stretch Database 概览
<Windows Azure Platform 系列文章目录> Azure SQL Database (19) Stretch Database 概览 Azure SQL Da ...