博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第80节:Java中的MVC设计模式
阅读量:6856 次
发布时间:2019-06-26

本文共 25570 字,大约阅读时间需要 85 分钟。

第80节:Java中的MVC设计模式

前言

了解java中的mvc模式.复习以及回顾!

事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn.rollBack

隔离级别分别有:

读未提交有脏读 读已提交有不可重复读 可重复读有幻读 可串行化可以解决脏读,幻读,不可重复读

数据库连接池用于创建和管理连接对象.

DBCP和C3P0,分别了解代码设置和配置文件设置

DBUtils可以简化数据的增删改查.

QueryRunner runner = new QueryRunner();

runner.update();

runner.query();

DBUtils通用的增删改

public void testInsert(){ // 查询 Connection conn = null; Statement st = null; try{  // 获取连接对象 conn = JDBCUtil.getConn(); // 根据连接对象,得到state ment st = conn.createStatement(); // 执行添加 String sql = "insert into t_stu values(null, 'dashu', 23)"; // 影响行数 int result = st.executeUpdate(sql); if(result > 0){  System.out.println("添加成功"); }else{  System.out.println("添加失败"); }}catch(Exception e){ e.printStackTrace();}finally{ JDBCUtil.release(conn, st);}复制代码

通用的增删改方法

package com.dashucoding.commoncrud;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import org.junit.Test;import com.dashucoding.util.JDBCUtil;import com.dashucoding.util.JDBCUtil02;public class CommonCRUDUtil {		@Test	public void testUpdate() {//		update("insert into account values(null, ?, ?)" , "dashu", 10);		//		update("delete from account where id = ?", 1);				update("update account set money = ? where id = ?", 1999, 2);	}	// 通用的增删改功能	public void update(String sql, Object ...args) {		Connection conn = null;		PreparedStatement ps = null;				try {			conn = JDBCUtil02.getConn();			ps = conn.prepareStatement(sql);			for(int i = 0; i

数据库的元数据

java.sql接口 DatabaseMetaData所有超级接口: Wrapperpublic interface DatabaseMetaData extends Wrapper数据库的整体综合信息复制代码

方法

getCatalogs()可以获取在数据库中使用的类别名称getCatalogSeparator()获取此数据库用作类别和表名之间的分隔符的StringgetCatalogTerm()获取数据库供应商用于"catalog"的首选手语getClientInfoProperties()获取驱动程序支持的客户端信息属性的列表getConnection()获取此元数据对象所产生的连接getDatabaseMajorVersion()获取底层数据库的主版本号getDatabaseProductName()获取此数据库产品的名称getDatabaseProductVersion()获取此数据库产品的版本号getDefaultTransactionIsolation()获取此数据库的默认事务隔离级别getDriverMajorVersion()获取此JDBC驱动程序的主版本号getDriverMinorVersion()获取此JDBC驱动程序的次版本号getDriverName()获取此JDBC驱动程序的名称getDriverVersion()获取此JDBC驱动程序的String形式的版本号复制代码

参数的元数据

java.sql接口 ParameterMetaDatapublic interface ParameterMetaData extends Wrapper获取PreparedStatement对象中每个参数标记和属性信息的对象.复制代码

方法的摘要

getParameterClassName(int param)获取Java类的完全限定名称getParameterCount()获取PreparedStatement对象中的参数数量getParameterMode(int param)获取指定参数的SQL类型getParameterTypeName(int param)获取指定参数的特定于数据库的类型名称getPrecision(int param)获取指定参数的指定两列大小getScale(int param)获取指定参数的小数点右边的位数isNullable(int param)获取是否允许在指定参数中使用null值isSigned(int param)获取指定参数的值是否可以是带符号的数字复制代码

结果集元数据

java.sql接口 ResultSetMetaDatapublic interface ResultSetMetaData extends Wrapper复制代码

用来描述数据的数据,叫做元数据

数据库元数据,参数元数据,结果集元数据

package com.dashucoding.commoncrud;import java.sql.Connection;import java.sql.ParameterMetaData;import java.sql.PreparedStatement;import java.sql.SQLException;import org.junit.Test;import com.dashucoding.util.JDBCUtil;import com.dashucoding.util.JDBCUtil02;public class CommonCRUDUtil {		@Test	public void testUpdate() {//		update("insert into account values(null, ?, ?)" , "dashu", 10);		//		update("delete from account where id = ?", 1);				update("update account set money = ? where id = ?", 1999, 2);	}	// 通用的增删改功能	public void update(String sql, Object ...args) {		Connection conn = null;		PreparedStatement ps = null;				try {			conn = JDBCUtil02.getConn();			ps = conn.prepareStatement(sql);			// 元数据			// 获取的有几个问好			ParameterMetaData metaData = ps.getParameterMetaData();			int count = metaData.getParameterCount();						for(int i = 0; i

TestDBUtils.java

// 删除queryRunner.update("delete from account where id = ?", 4);// 更新queryRunner.update("update account set money=? where id=?", 10000, 5);// 执行查询,查询到的数据还是在那个result里面然后调用下面的handle方法,由用户手动封装Account account = queryRunner.query("select * from account where id =?", new ResultSetHandler
(){@Override public Account handle(ResultSet rs) throws SQLException{ Account account = new Account(); while(rs.next()){ String name = rs.getString("name"); int money = rs.getInt("money"); account.setName(name); account.setMoney(money); } return account; }}, 6);复制代码

快速查询方法

@Testpublic void testQuery(){ query("select * from account where id = ?", 接口的实现类对象, 3);}复制代码
class A implements ResultSetHandler {		@Override		public void handle(ResultSet rs) {			// TODO Auto-generated method stub					}			}复制代码

通用的查询方法

package com.dashucoding.commoncrud;import java.sql.Connection;import java.sql.ParameterMetaData;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import org.junit.Test;import com.dashucoding.domain.Account;import com.dashucoding.util.JDBCUtil;import com.dashucoding.util.JDBCUtil02;public class CommonCRUDUtil {	class A implements ResultSetHandler
{ @Override public Account handle(ResultSet rs) { // TODO Auto-generated method stub try { Account account = new Account(); if(rs.next()) { String name = rs.getString("name"); int money = rs.getInt("money"); account.setName(name); account.setMoney(money); } return account; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /*@Override public Object handle(ResultSet rs) { // TODO Auto-generated method stub return null; }*/ /*@Override public void handle(ResultSet rs) { // TODO Auto-generated method stub try { while(rs.next()) { String name = rs.getString("name"); int money = rs.getInt("money"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }*/ } @Test public void testQuery() { /*query("select * from account where id=?", new ResultSetHandler() { @Override public void handle(ResultSet rs) { // TODO Auto-generated method stub } },3);*/ /*Account account = query("select * from account where id = ?", new A(), 2); System.out.println(account.toString());*/ query("select * from account where id = ?", new ResultSetHandler
() { @Override public Account handle(ResultSet rs) { // TODO Auto-generated method stub return null; }}, 2); } @Test public void testUpdate() {// update("insert into account values(null, ?, ?)" , "dashu", 10);// update("delete from account where id = ?", 1);// update("update account set money = ? where id = ?", 1999, 2); } public
T query(String sql, ResultSetHandler
handler, Object... args) { Connection conn = null; PreparedStatement ps = null; try { conn = JDBCUtil02.getConn(); ps = conn.prepareStatement(sql); // 元数据 // 获取的有几个问好 ParameterMetaData metaData = ps.getParameterMetaData(); int count = metaData.getParameterCount(); for (int i = 0; i < count; i++) { ps.setObject(i + 1, args[i]); } // 执行查询工作,然后得到结果集 ResultSet rs = ps.executeQuery(); // 把结果集丢给调用者, 让它去封装数据,返回封装数据 T t = (T) handler.handle(rs); return t; /*while(rs.next()) { rs.getInt("id"); rs.getString("name"); }*/ } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { JDBCUtil.release(conn, ps); } return null; } // 通用的增删改功能 /*public void update(String sql, Object... args) { Connection conn = null; PreparedStatement ps = null; try { conn = JDBCUtil02.getConn(); ps = conn.prepareStatement(sql); // 元数据 // 获取的有几个问好 ParameterMetaData metaData = ps.getParameterMetaData(); int count = metaData.getParameterCount(); for (int i = 0; i < count; i++) { ps.setObject(i + 1, args[i]); } ps.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { JDBCUtil.release(conn, ps); } }*/}复制代码
package com.dashucoding.domain;public class Account {	private String name;	private int money;	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getMoney() {		return money;	}	public void setMoney(int money) {		this.money = money;	}	@Override	public String toString() {		return "Account [name=" + name + ", money=" + money + "]";	}	}复制代码
package com.dashucoding.commoncrud;import java.sql.ResultSet;public interface ResultSetHandler
{ // 数据封装的规则,规范 T handle(ResultSet rs);}复制代码

JSP开发模式

mvc的设计模式

javaBean数据的封装+jsp可以在jsp中直接写java代码<% 封装数据 执行业务 准备数据%>特点维护比较难,jsp的页面代码会臃肿复制代码
servlet + javabean + jspmvc模式:m:model模型层封装数据javabeanv:view视图层jsp专注显示c:controller控制层servlet接收页面的请求,找模型层去处理复制代码

三层架构

客户端,web层,业务逻辑层,数据访问层

servlet/jsp web层 javabean 业务逻辑层 dao 数据访问层

web层 对应 controller view

业务逻辑层 对应 model

数据访问层 对应 model

mvc模式: controller view model

controller: 接收请求,调用模型层出来数据,反馈给view

view: 用于显示

model: 数据的封装,数据的处理

学生管理系统中的增删查改,分页,模糊查询

学生管理系统

欢迎使用学生管理系统, 按姓名查询, 按性别查询, 添加 有编号,姓名 ,性别,电话,生日,爱好,简介,操作.

创建数据库

dao环境搭建

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
首页

显示所有学生列表

复制代码
package com.dashucoding.dao;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.Student;/* * 这是针对学生表的数据访问 *  * */public interface StudentDao {		/*	 * 查询所有学生	 * list
* */ List
findAll() throws SQLException;}复制代码
package com.dashucoding.dao.impl;import java.sql.Connection;import java.sql.SQLException;import java.util.List;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanListHandler;import com.dashucoding.dao.StudentDao;import com.dashucoding.domain.Student;import com.dashucoding.util.JDBCUtil02;/* * 这是studentdao的实现,针对前面定义的规范,做出具体的实现 * */public class StudentDaoImpl implements StudentDao {	/*	 * 查询所有学生	 * */	@Override	public List
findAll() throws SQLException { QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource()); String sql = "select * from stu"; List
list = runner.query(sql, new BeanListHandler
(Student.class)); return list; }}复制代码
package com.dashucoding.domain;import java.util.Date;/* * 这是学生封装的对象bean * 根据表写 * */public class Student {	private int sid;	private String sname;	private String gender;	private String phone;	private String hobby;	private String info;	private Date birthday;	public int getSid() {		return sid;	}	public void setSid(int sid) {		this.sid = sid;	}	public String getSname() {		return sname;	}	public void setSname(String sname) {		this.sname = sname;	}	public String getGender() {		return gender;	}	public void setGender(String gender) {		this.gender = gender;	}	public String getPhone() {		return phone;	}	public void setPhone(String phone) {		this.phone = phone;	}	public String getHobby() {		return hobby;	}	public void setHobby(String hobby) {		this.hobby = hobby;	}	public String getInfo() {		return info;	}	public void setInfo(String info) {		this.info = info;	}	public Date getBirthday() {		return birthday;	}	public void setBirthday(Date birthday) {		this.birthday = birthday;	}			}复制代码
package com.dashucoding.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class StudentListServlet extends HttpServlet {	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {			}	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		doGet(request, response);	}}复制代码
package com.dashucoding.util;import java.io.FileInputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JDBCUtil02 {		static ComboPooledDataSource dataSource = null;	static {		dataSource = new ComboPooledDataSource();	}		public static DataSource getDataSource() {		return dataSource;	}	/**	 * 获取连接对象	 * @return	 * @throws SQLException 	 */	public static Connection getConn() throws SQLException{				return dataSource.getConnection();	}		/**	 * 释放资源	 * @param conn	 * @param st	 * @param rs	 */	public static void release(Connection conn , Statement st , ResultSet rs){		closeRs(rs);		closeSt(st);		closeConn(conn);	}	public static void release(Connection conn , Statement st){		closeSt(st);		closeConn(conn);	}		private static void closeRs(ResultSet rs){		try {			if(rs != null){				rs.close();			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			rs = null;		}	}		private static void closeSt(Statement st){		try {			if(st != null){				st.close();			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			st = null;		}	}		private static void closeConn(Connection conn){		try {			if(conn != null){				conn.close();			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			conn = null;		}	}}复制代码

service层

dao只做一件事,数据操作层service是业务层复制代码

查询数据

package com.dashucoding.dao;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.Student;/* * 这是针对学生表的数据访问 *  * */public interface StudentDao {		/*	 * 查询所有学生	 * list
* */ List
findAll() throws SQLException;}复制代码
package com.dashucoding.dao.impl;import java.sql.Connection;import java.sql.SQLException;import java.util.List;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanListHandler;import com.dashucoding.dao.StudentDao;import com.dashucoding.domain.Student;import com.dashucoding.util.JDBCUtil02;/* *这是StudentDao的实现,针对前面定义的规范,做出具体的实现 * */public class StudentDaoImpl implements StudentDao {	/*	 * 查询所有学生	 * */	@Override	public List
findAll() throws SQLException { QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource()); return runner.query("select * from stu", new BeanListHandler
(Student.class)); }}复制代码
package com.dashucoding.domain;import java.util.Date;/* * 这是学生封装的对象bean *  * */public class Student {		private int sid;	private String sname;	private String gender;	private String phone;	private String hobby;	private String info;	private Date birthday;		public Student() {		super();		// TODO Auto-generated constructor stub	}	public Student(int sid, String sname, String gender, String phone, String hobby, String info, Date birthday) {		super();		this.sid = sid;		this.sname = sname;		this.gender = gender;		this.phone = phone;		this.hobby = hobby;		this.info = info;		this.birthday = birthday;	}		public int getSid() {		return sid;	}	public void setSid(int sid) {		this.sid = sid;	}	public String getSname() {		return sname;	}	public void setSname(String sname) {		this.sname = sname;	}	public String getGender() {		return gender;	}	public void setGender(String gender) {		this.gender = gender;	}	public String getPhone() {		return phone;	}	public void setPhone(String phone) {		this.phone = phone;	}	public String getHobby() {		return hobby;	}	public void setHobby(String hobby) {		this.hobby = hobby;	}	public String getInfo() {		return info;	}	public void setInfo(String info) {		this.info = info;	}	public Date getBirthday() {		return birthday;	}	public void setBirthday(Date birthday) {		this.birthday = birthday;	}	@Override	public String toString() {		return "Student [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", phone=" + phone + ", hobby="				+ hobby + ", info=" + info + ", birthday=" + birthday + "]";	}			}复制代码
package com.dashucoding.service;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.Student;/* * 这是学生的业务处理规范 * */public interface StudentService {		/*	 * 查询所有学生	 * list
* */ List
findAll() throws SQLException;}复制代码
package com.dashucoding.service.impl;import java.sql.SQLException;import java.util.List;import com.dashucoding.dao.StudentDao;import com.dashucoding.dao.impl.StudentDaoImpl;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;/* * 这是学生业务实现 * */public class StudentServiceImpl implements StudentService{	@Override	public List
findAll() throws SQLException { StudentDao dao = new StudentDaoImpl(); return dao.findAll(); } }复制代码
package com.dashucoding.servlet;import java.io.IOException;import java.sql.SQLException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.dao.StudentDao;import com.dashucoding.dao.impl.StudentDaoImpl;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;public class StudentListServlet extends HttpServlet {	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		try {			// 查询所有的学生			StudentService service = new StudentServiceImpl();			List
list = service.findAll(); // 把数据存储到作用域中 request.setAttribute("list", list); // 跳转页面 request.getRequestDispatcher("list.jsp").forward(request,response); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}复制代码
package com.dashucoding.util;import java.io.FileInputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import javax.sql.DataSource;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JDBCUtil02 {		static ComboPooledDataSource dataSource = null;	static {		dataSource = new ComboPooledDataSource();	}		public static DataSource getDataSource() {		return dataSource;	}	/**	 * 获取连接对象	 * @return	 * @throws SQLException 	 */	public static Connection getConn() throws SQLException{				return dataSource.getConnection();	}		/**	 * 释放资源	 * @param conn	 * @param st	 * @param rs	 */	public static void release(Connection conn , Statement st , ResultSet rs){		closeRs(rs);		closeSt(st);		closeConn(conn);	}	public static void release(Connection conn , Statement st){		closeSt(st);		closeConn(conn);	}		private static void closeRs(ResultSet rs){		try {			if(rs != null){				rs.close();			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			rs = null;		}	}		private static void closeSt(Statement st){		try {			if(st != null){				st.close();			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			st = null;		}	}		private static void closeConn(Connection conn){		try {			if(conn != null){				conn.close();			}		} catch (SQLException e) {			e.printStackTrace();		}finally{			conn = null;		}	}}复制代码

小结业务逻辑

先写一个jsp页面,有个链接<a href="StudentListServlet"></a>写个Servlet,接收请求,去调用Service,由service去调用dao,写dao,然后做dao实现,再写Service,做Service的实现,在servlet存储数据,做出页面响应,在list.jsp上显示数据.

<%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%>
添加学生页面
姓名
性别
电话
生日
爱好 游泳 篮球 足球 看书 写字
简介
复制代码
package com.dashucoding.dao;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.Student;/* * 这是针对学生表的数据访问 *  * */public interface StudentDao {		/*	 * 查询所有学生	 * list
* */ List
findAll() throws SQLException; void insert(Student student) throws SQLException ;}复制代码
package com.dashucoding.dao.impl;import java.sql.Connection;import java.sql.SQLException;import java.util.List;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanListHandler;import com.dashucoding.dao.StudentDao;import com.dashucoding.domain.Student;import com.dashucoding.util.JDBCUtil02;/* *这是StudentDao的实现,针对前面定义的规范,做出具体的实现 * */public class StudentDaoImpl implements StudentDao {	/*	 * 查询所有学生	 */	@Override	public List
findAll() throws SQLException { QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource()); return runner.query("select * from stu", new BeanListHandler
(Student.class)); } @Override public void insert(Student student) throws SQLException { // TODO Auto-generated method stub QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource()); runner.update("insert into stu values(null, ?,?,?,?,?,?)", student.getSname(), student.getGender(), student.getPhone(), student.getBirthday(), student.getHobby(), student.getInfo() ); }}复制代码
package com.dashucoding.domain;import java.util.Date;/* * 这是学生封装的对象bean *  * */public class Student {		private int sid;	private String sname;	private String gender;	private String phone;	private String hobby;	private String info;	private Date birthday;		public Student() {		super();		// TODO Auto-generated constructor stub	}	public Student(int sid, String sname, String gender, String phone, String hobby, String info, Date birthday) {		super();		this.sid = sid;		this.sname = sname;		this.gender = gender;		this.phone = phone;		this.hobby = hobby;		this.info = info;		this.birthday = birthday;	}				public Student(String sname, String gender, String phone, String hobby, String info, Date birthday) {		super();		this.sname = sname;		this.gender = gender;		this.phone = phone;		this.hobby = hobby;		this.info = info;		this.birthday = birthday;	}	public int getSid() {		return sid;	}	public void setSid(int sid) {		this.sid = sid;	}	public String getSname() {		return sname;	}	public void setSname(String sname) {		this.sname = sname;	}	public String getGender() {		return gender;	}	public void setGender(String gender) {		this.gender = gender;	}	public String getPhone() {		return phone;	}	public void setPhone(String phone) {		this.phone = phone;	}	public String getHobby() {		return hobby;	}	public void setHobby(String hobby) {		this.hobby = hobby;	}	public String getInfo() {		return info;	}	public void setInfo(String info) {		this.info = info;	}	public Date getBirthday() {		return birthday;	}	public void setBirthday(Date birthday) {		this.birthday = birthday;	}	@Override	public String toString() {		return "Student [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", phone=" + phone + ", hobby="				+ hobby + ", info=" + info + ", birthday=" + birthday + "]";	}			}复制代码
package com.dashucoding.service;import java.sql.SQLException;import java.util.List;import com.dashucoding.domain.Student;/* * 这是学生的业务处理规范 * */public interface StudentService {		/*	 * 查询所有学生	 * list
* */ List
findAll() throws SQLException; void insert(Student student) throws SQLException ;}复制代码
package com.dashucoding.service.impl;import java.sql.SQLException;import java.util.List;import com.dashucoding.dao.StudentDao;import com.dashucoding.dao.impl.StudentDaoImpl;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;/* * 这是学生业务实现 * */public class StudentServiceImpl implements StudentService{	@Override	public List
findAll() throws SQLException { StudentDao dao = new StudentDaoImpl(); return dao.findAll(); } @Override public void insert(Student student) throws SQLException { // TODO Auto-generated method stub StudentDao dao = new StudentDaoImpl(); dao.insert(student); } }复制代码

package com.dashucoding.servlet;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dashucoding.domain.Student;import com.dashucoding.service.StudentService;import com.dashucoding.service.impl.StudentServiceImpl;/** * 用于处理学生的添加请求 */public class AddServlet extends HttpServlet {	protected void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		request.setCharacterEncoding("UTF-8");		try {			// 1. 获取客户端提交上来的数据			String sname = request.getParameter("sname");			String gender = request.getParameter("gender");			String phone = request.getParameter("phone");			String birthday = request.getParameter("birthday");			String info = request.getParameter("info");			// String hobby = request.getParameter("hobby");//hobby : 游泳,写字, 足球。			String[] h = request.getParameterValues("hobby");			String hobby = Arrays.toString(h);			hobby = hobby.substring(1, hobby.length() - 1);			// 2. 添加到数据库			// string -- date			Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);			Student student = new Student(sname, gender, phone, hobby, info, date);			StudentService service = new StudentServiceImpl();			service.insert(student);			// 3. 跳转到列表页			request.getRequestDispatcher("StudentListServlet").forward(request, response);		} catch (Exception e) {			e.printStackTrace();		}	}	protected void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		doGet(request, response);	}}复制代码

要的jar包,都在这.

结言

好了,欢迎在留言区留言,与大家分享你的经验和心得。

感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

达叔小生:往后余生,唯独有你 You and me, we are family ! 90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通 简书博客: 达叔小生

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

转载地址:http://rmiyl.baihongyu.com/

你可能感兴趣的文章
正则表达式大全
查看>>
SVN switch 用法详解
查看>>
Javascript文件下载顺序问题
查看>>
程序员第一定律:关于技能与收入
查看>>
网络通讯合并数据发送的重要性和实现原理
查看>>
Jquery getJSON 实现跨域请求 --- callback
查看>>
<转载>构造函数与拷贝构造函数
查看>>
[转]K近邻算法
查看>>
表单元素01
查看>>
React Native项目Xcode打包发布iOS问题
查看>>
JPress v1.0-rc2 发布,新增微信小程序 SDK
查看>>
Confluence 6 为搜索引擎隐藏外部链接
查看>>
Python Mysql 数据库操作
查看>>
iOS Autolayout 介绍 2 Interface Builder 技巧
查看>>
打卡加虐狗
查看>>
Springboot + swagger2 通过实体对象封装形式上传视频或者图片问题解决
查看>>
Confluence 5 中如何快速创建一个 JIRA Ticket
查看>>
TP5搭建虚拟主机详细步骤
查看>>
为什么我们做分布式使用Redis?
查看>>
【4opencv】求解向量和轮廓的交点
查看>>