==============================前台界面=============================== |
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> |
<% |
String path = request.getContextPath(); |
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; |
%> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
<html> |
<head> |
<base href="<%=basePath%>"> |
|
<title>My JSP 'index.jsp' starting page</title> |
<meta http-equiv="pragma" content="no-cache"> |
<meta http-equiv="cache-control" content="no-cache"> |
<meta http-equiv="expires" content="0"> |
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> |
<meta http-equiv="description" content="This is my page"> |
<!-- |
<link rel="stylesheet" type="text/css" href="styles.css"> |
--> |
</head> |
|
<body> |
<div align="center"> |
<input type="button" onclick="window.location.href('jsp/addmessage.jsp')" value="添加日记"> |
<input type="button" onclick="window.location.href('ListMessageServlet.action')" value="查询日记"> |
</div> |
</body> |
</html> |
================================web.xml========================================== |
<?xml version="1.0" encoding="UTF-8"?> |
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> |
<display-name>Demo</display-name> |
<welcome-file-list> |
<welcome-file>index.jsp</welcome-file> |
<welcome-file>default.html</welcome-file> |
<welcome-file>default.htm</welcome-file> |
<welcome-file>default.jsp</welcome-file> |
</welcome-file-list> |
|
<servlet> |
<servlet-name>AddMessageServlet</servlet-name> |
<servlet-class>fengke.mvc.servlet.AddMessageServlet</servlet-class> |
</servlet> |
<servlet> |
<servlet-name>ListMessageServlet</servlet-name> |
<servlet-class>fengke.mvc.servlet.ListMessageServlet</servlet-class> |
</servlet> |
|
<servlet-mapping> |
<servlet-name>AddMessageServlet</servlet-name> |
<url-pattern>/AddMessageServlet.action</url-pattern> |
</servlet-mapping> |
|
<servlet-mapping> |
<servlet-name>ListMessageServlet</servlet-name> |
<url-pattern>/ListMessageServlet.action</url-pattern> |
</servlet-mapping> |
|
|
|
</web-app> |
==============================前台界面================================================== |
<%@ page language="java" import="java.util.*,fengke.mvc.vo.*" pageEncoding="UTF-8"%> |
<% |
String path = request.getContextPath(); |
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; |
%> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
<html> |
<head> |
<base href="<%=basePath%>"> |
|
<title>My JSP 'listmessage.jsp' starting page</title> |
|
<meta http-equiv="pragma" content="no-cache"> |
<meta http-equiv="cache-control" content="no-cache"> |
<meta http-equiv="expires" content="0"> |
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> |
<meta http-equiv="description" content="This is my page"> |
<!-- |
<link rel="stylesheet" type="text/css" href="styles.css"> |
--> |
</head> |
|
<body> |
<h1 align="center">查询日记</h1> |
|
<table align="center"> |
<form action="AddMessageServlet.action"> |
<tr> |
<th>序号</th> |
<th>日期</th> |
<th>简介</th> |
<th>内容</th> |
</tr> |
<% List<Message> list=(List<Message>)request.getAttribute("list"); |
for(Message mg:list){ |
%> |
|
<tr> |
<td><input type="text" name="id" value="<%=mg.getId() %>" ></td> |
<td><input type="text" name="time" value="<%=mg.getTime() %>"></td> |
<td ><input type="text" name="infor" value="<%=mg.getInfor() %>"></td> |
<td ><input type="text" name="message" value="<%=mg.getMessage() %>"></td> |
</tr> |
<%} %> |
<tr> |
<td colspan="2"><input type="submit" align="middle" value="添加"></td> |
<td colspan="2"><input type="reset" align="middle" value="重置"></td> |
</tr> |
|
</form> |
</table> |
</body> |
</html> |
====================================前台界面===================================== |
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> |
<% |
String path = request.getContextPath(); |
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; |
%> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
<html> |
<head> |
<base href="<%=basePath%>"> |
|
<title>My JSP 'addmessage.jsp' starting page</title> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<meta http-equiv="pragma" content="no-cache"> |
<meta http-equiv="cache-control" content="no-cache"> |
<meta http-equiv="expires" content="0"> |
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> |
<meta http-equiv="description" content="This is my page"> |
<!-- |
<link rel="stylesheet" type="text/css" href="styles.css"> |
--> |
</head> |
|
<body> |
<h1 align="center">添加日记</h1> |
|
<table align="center"> |
<form action="AddMessageServlet.action"> |
<tr> |
<th>日期</th> |
<th>简介</th> |
<th colspan="2">内容</th> |
</tr> |
|
<tr> |
<td><input type="text" name="time" ></td> |
<td><input type="text" name="infor" ></td> |
<td colspan="2"><input type="text" name="message" ></td> |
</tr> |
|
<tr> |
<td colspan="2"><input type="submit" align="middle" value="添加"></td> |
<td colspan="2"><input type="reset" align="middle" value="重置"></td> |
</tr> |
|
</form> |
</table> |
</body> |
</html> |
==============================servlet 控制层=================================== |
package fengke.mvc.servlet; |
import java.io.IOException; |
import java.sql.Date; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServlet; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import fengke.mvc.service.MessageService; |
import fengke.mvc.vo.Message; |
/** |
* 控制层 |
* |
* @author 锋客 添加日记信息 |
*/ |
public class AddMessageServlet extends HttpServlet { |
/** |
* 1.接收前台信息 2.将前台信息传入到逻辑层中 |
*/ |
@Override |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) |
throws ServletException, IOException { |
// 接收前台信息 |
req.setCharacterEncoding("utf-8"); |
resp.setCharacterEncoding("utf-8"); |
/* |
* parameter与attribute的区别: |
* |
*String time=(String) req.getAttribute("time"); |
* String infor=(String) req.getAttribute("infor"); |
* String message=(String) req.getAttribute("message"); |
*/ |
//接收时间信息 |
String time =new String(req.getParameter("time").getBytes("ISO8859-1"),"utf-8"); |
//接收简介 |
String infor = new String(req.getParameter("infor").getBytes("ISO8859-1"),"utf-8"); |
//接收内容 |
String message = new String(req.getParameter("message").getBytes("ISO8859-1"),"utf-8"); |
// 检查是否成功接收 |
System.out.println(time + " " + infor + " " + message); |
//创建一个AddMessageService对象,实现数据传输 |
MessageService addMessage = new MessageService(); |
//实例化一个message对象,保存信息,注意包:java.sql.Date |
Date date=Date.valueOf(time); |
Message mesg = new Message(1,date,infor,message); |
addMessage.addMessage(mesg); |
//跳转 |
resp.sendRedirect("index.jsp"); |
|
} |
@Override |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) |
throws ServletException, IOException { |
//使其调用doPost方法 |
this.doPost(req, resp); |
} |
|
} |
==============================servlet 控制层================================================ |
package fengke.mvc.servlet; |
import java.io.IOException; |
import java.util.List; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServlet; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import org.w3c.dom.ls.LSInput; |
import fengke.mvc.service.MessageService; |
import fengke.mvc.vo.Message; |
/** |
* 查询所有日记信息 |
* @author 锋客 |
* |
*/ |
public class ListMessageServlet extends HttpServlet{ |
@Override |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) |
throws ServletException, IOException { |
//设置格式 |
req.setCharacterEncoding("utf-8"); |
resp.setCharacterEncoding("utf-8"); |
//创建service对象 |
MessageService listMessage = new MessageService(); |
List<Message> list = listMessage.listAll(); |
//向前台传值 |
req.setAttribute("list", list); |
//跳转 |
req.getRequestDispatcher("jsp/listmessage.jsp").forward(req, resp); |
} |
|
|
@Override |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) |
throws ServletException, IOException { |
|
this.doPost(req, resp); |
} |
} |
=================================service 逻辑层============================================= |
package fengke.mvc.service; |
import java.sql.Date; |
import java.util.List; |
import fengke.mvc.dao.MessageDao; |
import fengke.mvc.vo.Message; |
/** |
* 逻辑控制层 |
* @author 锋客 |
* 内容:将信息传入到MessageDao中 |
*/ |
public class MessageService { |
|
//添加日记信息(需要传入一个Message对象) |
public void addMessage(Message message){ |
MessageDao dao = new MessageDao(); |
dao.addMessage(message.getId(), message.getTime(), message.getInfor(), message.getMessage()); |
|
} |
/* |
* 测试service层到dao层以及db层,是否成功搭建 |
* |
* public static void main(String[] args) { |
* //包:java.sql.Date; |
* Date date=Date.valueOf("2012-02-01"); |
* System.out.println(date); |
* Message mesg=new Message(2,date,"约会","小李"); |
* AddMessageService addMessageService=new AddMessageService(); |
* addMessageService.addMessage(mesg); |
* } |
* |
*/ |
|
/** |
* 查询所有信息 |
* @return |
* 内容: |
* 通过调用dao层,查找数据库中的信息 |
* |
*/ |
public List<Message> listAll(){ |
MessageDao dao = new MessageDao(); |
List<Message> list = dao.listMessage(); |
return list; |
} |
} |
==============================jdbc 获得链接============================================= |
package fengke.mvc.db; |
import java.sql.Connection; |
import java.sql.DriverManager; |
import java.sql.SQLException; |
/** |
* 获得链接 |
* @author 锋客 |
* 创建与数据库的链接 |
*/ |
public class Jdbc { |
/** |
* userName 用户名 |
* passWord 密码 |
* url 地址(必须记) |
* con 链接 |
*/ |
static String userName="root"; |
static String passWord="root"; |
static String url="jdbc:mysql://127.0.0.1:3309/demo"; |
static Connection con=null; |
|
static{ |
try { |
Class.forName("com.mysql.jdbc.Driver"); |
con=DriverManager.getConnection(url, userName, passWord); |
} catch (ClassNotFoundException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} catch (SQLException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
} |
|
public static Connection getConnection(){ |
//检测是否正确获得链接 |
//System.out.println(con); |
return con; |
|
} |
|
} |
============================dao 操作层============================================= |
package fengke.mvc.dao; |
import java.sql.Connection; |
import java.sql.Date; |
import java.sql.PreparedStatement; |
import java.sql.ResultSet; |
import java.sql.SQLException; |
import java.util.ArrayList; |
import java.util.List; |
import fengke.mvc.db.Jdbc; |
import fengke.mvc.vo.Message; |
/** |
* 对dairy表的操作 |
* @author 锋客 |
* |
*/ |
public class MessageDao { |
private Jdbc jdbc=new Jdbc(); |
/* |
* 添加日记信息: |
* 通过获得链接,将信息传入到数据库中 |
* |
*/ |
public void addMessage(int id, Date time, String infor, String message){ |
Connection con = jdbc.getConnection(); |
//防止sql注入 |
String sql="insert into dairy(time,infor,message)values(?,?,?)"; |
try { |
PreparedStatement ps=con.prepareStatement(sql); |
ps.setDate(1, time); |
ps.setString(2, infor); |
ps.setString(3, message); |
ps.executeUpdate(); |
} catch (SQLException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
|
} |
|
public List<Message> listMessage(){ |
Connection con = jdbc.getConnection(); |
//查询语句 |
String sql="select id,time,infor,message from dairy"; |
//接收信息 |
List<Message> list=new ArrayList<Message>(); |
/*创建Message对象 |
* Message mg=new Message(); |
* 不能放在while之外,当使用上述方式创建对象时,内存地址给定, |
* list中的所有对象都指向同一个,最后一个 |
*/ |
|
try { |
PreparedStatement ps=con.prepareStatement(sql); |
ResultSet rs = ps.executeQuery(); |
while(rs.next()){ |
//注意位置(对引用的理解) |
Message mg=new Message(); |
//设置mg对象属性 |
mg.setId(rs.getInt(1)); |
mg.setTime(rs.getDate(2)); |
mg.setInfor(rs.getString(3)); |
mg.setMessage(rs.getString(4)); |
list.add(mg); |
} |
} catch (SQLException e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
return list; |
|
} |
/* |
* 测试:是否可以查询到结果集 |
*public static void main(String[] args) { |
* MessageDao dao = new MessageDao(); |
* List<Message> list = dao.listMessage(); |
* for(Message mg:list){ |
* System.out.println(mg.getId()+" "+mg.getTime()+" "+mg.getInfor()+" "+mg.getMessage()); |
* |
*} |
*} |
*/ |
} |
===============================vo 实体类=============================================== |
package fengke.mvc.vo; |
import java.sql.Date; |
import java.sql.Time; |
/** |
* 实体层 |
* @author 锋客 |
* 用于简化数据传输 |
*/ |
public class Message { |
/* |
* id: 主键 |
* time:时间 |
* infor:简介 |
* message:详细信息 |
*/ |
private int id; |
private Date time ; |
private String infor ; |
private String message; |
public int getId() { |
return id; |
} |
public void setId(int id) { |
this.id = id; |
} |
public Date getTime() { |
return time; |
} |
public void setTime(Date time) { |
this.time = time; |
} |
public String getInfor() { |
return infor; |
} |
public void setInfor(String infor) { |
this.infor = infor; |
} |
public String getMessage() { |
return message; |
} |
public void setMessage(String message) { |
this.message = message; |
} |
public Message() { |
super(); |
// TODO Auto-generated constructor stub |
} |
public Message(int id, Date time, String infor, String message) { |
super(); |
this.id = id; |
this.time = time; |
this.infor = infor; |
this.message = message; |
} |
|
} |
===================================结束================================ |