自己动手写一个简单的mvc框架(一)前期准备
来源:互联网 发布:离子注入仿真软件 编辑:程序博客网 时间:2024/06/02 01:05
准备练习自己写个mvc框架,在此记录一下,通过练习,提高自己的水平 ,加深对mvc框架的理解。因为水平有限,有错误不足之处,还请各位多多指点,不胜感激。
使用java版本:1.8
前期准备:
jdk1.8,tomcat8.0,mysql-connector的jar包
使用servlet+jdbc+jsp+mysql,先实现一个用户的增删查
实体类User
public class User {
private Integer id;
private String name;//姓名
private Integer sex;//性别 0为女,1为男
private String phone;//电话
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
数据库建一个User表:
create table user (id int(11) auto_increment primary key,name varchar(40) not null, sex int(1) not null, phone varchar(11))
获取数据库Connection的工具类
package net.forward.demo.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost/myframework";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
static{
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
/**
* 获取连接
*/
public static Connection getConnection() throws Exception {
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
/**
* 关闭连接
*/
public static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
DAO类
package net.forward.demo.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import net.forward.demo.domain.User;
import net.forward.demo.util.DatabaseConnection;
public class UserDAO {
/**
* 关键字查询
* @param keyword
* @return
*/
public List<User> getList(String keyword) {
List<User> users = new ArrayList<User>();
PreparedStatement ps = null;
Connection connection = null;
boolean notEmpty = (keyword != null && keyword.trim().length() > 0);//判断关键词是否为空
try{
connection = DatabaseConnection.getConnection();
String sql = "select * from user";
if (notEmpty) {
sql += " where name like ? or phone like ?";
}
ps = connection.prepareStatement(sql);
if (notEmpty) {
ps.setString(1, "%"+keyword+"%");
ps.setString(2, "%"+keyword+"%");
}
ResultSet rs = ps.executeQuery();
User user = null;
while (rs.next()) {
user = new User();
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setSex(rs.getInt(3));
user.setPhone(rs.getString(4));
users.add(user);
}
return users;
}catch (Exception e) {
e.printStackTrace();
return users;
}finally {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
DatabaseConnection.closeConnection(connection);
}
}
/**
* 添加用户
* @param user
* @return
*/
public boolean addUser(User user) {
boolean flag = false;
PreparedStatement ps = null;
Connection connection = null;
try{
connection = DatabaseConnection.getConnection();
String sql = "insert into user(name,sex,phone) values(?,?,?)";
ps = connection.prepareStatement(sql);
ps.setString(1, user.getName());
ps.setInt(2, user.getSex());
ps.setString(3, user.getPhone());
if (ps.executeUpdate() > 0){
return true;
}else{
return false;
}
}catch (Exception e) {
e.printStackTrace();
return false;
}finally {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
DatabaseConnection.closeConnection(connection);
}
}
/**
* 根据id删除用户
* @param id
* @return
*/
public boolean delUser(Integer id) {
boolean flag = false;
PreparedStatement ps = null;
Connection connection = null;
try{
connection = DatabaseConnection.getConnection();
String sql = "delete from user where id=?";
ps = connection.prepareStatement(sql);
ps.setInt(1, id);
if (ps.executeUpdate() > 0){
return true;
}else{
return false;
}
}catch (Exception e) {
e.printStackTrace();
return false;
}finally {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
DatabaseConnection.closeConnection(connection);
}
}
}
Servlet简单实现
@WebServlet(name="UserServlet", urlPatterns="/user/*")
public class UserServlet extends HttpServlet {
private UserDAO userDao = new UserDAO();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri = request.getRequestURI();//返回/MyFramework/user/xxx
String method = uri.substring(uri.lastIndexOf("/")+1);//获得xxx
if (method.equals("list")) {
getUserList(request, response);
}else if (method.equals("initAdd")){
initAdd(request, response);
}else if (method.equals("add")) {
addUser(request, response);
}else if (method.equals("del")) {
delUser(request, response);
}
}
/**
* 初始化添加页面
*/
private void initAdd(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("../userpage/add.jsp").forward(request, response);
}
/**
* 获得用户列表
*/
private void getUserList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("users", userDao.getList(request.getParameter("keyword")));
request.getRequestDispatcher("../userpage/list.jsp").forward(request, response);
}
/**
* 添加用户
* @throws IOException
* @throws ServletException
*/
private void addUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User user = new User();
user.setName(request.getParameter("name"));
user.setSex(Integer.parseInt(request.getParameter("sex")));
user.setPhone(request.getParameter("phone"));
boolean flag = userDao.addUser(user);
if (flag == true) {
response.sendRedirect("list");
}else{
request.setAttribute("msg", "添加失败");
response.sendRedirect("../error.jsp");
}
}
/**
* 删除用户
* @throws IOException
* @throws ServletException
*/
private void delUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer id = Integer.parseInt(request.getParameter("id"));
boolean flag = userDao.delUser(id);
if (flag) {
response.sendRedirect("list");
}else{
request.setAttribute("msg", "删除失败");
response.sendRedirect("../error.jsp");
}
}
}
查询页面 list.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="user/list" method="post">
<h3>用户列表 <input type="text" name="keyword" placeholder="关键字" /> <input type="submit" value="查询" /></h3>
</form>
<table style="width:500px" border=1 cellpadding=5>
<thead>
<th>序号</th>
<th>名称</th>
<th>性别</th>
<th>手机号</th>
<th>操作</th>
</thead>
<tbody>
<c:forEach items="${users }" var="user" varStatus="index">
<tr>
<td>${index.index+1 }</td>
<td>${user.name }</td>
<td>${user.sex==0?"女":"男"}</td>
<td>${user.phone }</td>
<td><input type="button" value="删除" onclick="del(${user.id})" /></td>
</tr>
</c:forEach>
</tbody>
</table>
<input type="button" value="添加新用户" onclick="add()" />
<script>
function add() {
window.location.href = "user/initAdd";
}
function del(id) {
window.location.href = "user/del?id="+id;
}
</script>
</body>
</html>
添加页面 add.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html >
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<fieldset style="width:500px">
<legend>添加用户</legend>
<form action="user/add" method="post">
<div>
<lable for="name">用户名</lable>
<input type="text" name="name" id="name" />
</div>
<div>
<label for="sex">性 别</label>
<select name="sex" id="sex">
<option value="0">女</option>
<option value="1">男</option>
</select>
</div>
<div>
<label for="phone">手机号</label>
<input type="text" name="phone" id="phone" />
</div>
<input type="submit" value="添加" />
</form>
</fieldset>
</body>
</html>
目前项目的文件结构是
请求地址:
查询:/user/list
初始化添加界面:/user/initAdd
添加:/user/add
删除:/user/del
阅读全文
0 0
- 自己动手写一个简单的mvc框架(一)前期准备
- 自己动手写一个简单的MVC框架(第一版)
- 自己动手写一个简单的MVC框架(第二版)
- 自己动手写一个简单的MVC框架(第二版)
- 自己动手写一个web框架(一):实现IOC与MVC
- 自己动手模仿 springmvc 写一个 mvc框架
- 自己动手模仿 springmvc 写一个 mvc框架
- 自己动手写javaweb mvc框架 之 项目准备
- 自己动手写MVC框架
- 项目开发的前期准备(一)
- 自己写一个MVC框架(一)
- 自己动手创建简单的MVC框架
- 自己动手写PHP MVC框架
- 自己动手写PHP MVC框架
- 自己动手写PHP MVC框架
- 自己动手写PHP MVC框架
- openCV前期准备(一)
- 自己动手,写一个简单的线程池(1)
- 优秀机器学习视频笔记收集
- 数据仓库的定义、特征、产生和发展、现状和趋势
- jzoj. 1349. 最大公约数
- jsp页面get方式上传表单,中文乱码
- Math类的常用方法
- 自己动手写一个简单的mvc框架(一)前期准备
- IntelliJ IDEA相关
- postman webapi webrequest 传送文件和接受文件
- require_once失败------又是软链接惹的祸
- Linux驱动:module_platform_driver
- 机器学习-学习笔记 线性模型(二)
- 骨络数据
- Return type declarations返回类型声明
- ajax是什么