JSP、Servlet实战:团队开发新闻系统(三)架构简介
来源:互联网 发布:filco 蓝牙mac 编辑:程序博客网 时间:2024/05/28 11:49
JSP、Servlet实战:团队开发新闻系统(三)架构简介
jsp、servlet原生就是MVC设计思想。
Controller层是Servlet来充当,JSP充当View的角色,Model是Bean。
程序流程
jsp或者html页面请求servlet,为了代码结构清晰、提高开发效率,提取出service层,service如果需要与数据库打交道可以调用dao层。
- servlet用于请求转发、响应,
- service实现业务逻辑,
- dao用于操作数据库
Dao
如果没有统一的编码规范以及减少代码重复率,还可以抽离BaseDao,每个对应的dao继承BaseDao
BaseDao.java
package cn.edu.bzu.group12.orangenews.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * @author pangPython * 基础的数据库操作 */public abstract class BaseDao { private Connection conn = null; private Statement stat = null; public BaseDao(){ try { this.setConn(getConnection()); this.setStat(conn.createStatement()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获取数据库连接 private Connection getConnection() throws ClassNotFoundException, SQLException{ final String url = "jdbc:mysql://192.168.50.103:3306/group12"; final String user = "group12"; final String password = "group12"; Class.forName("com.mysql.jdbc.Driver"); return DriverManager.getConnection(url,user,password); } public Connection getConn() { return conn; } public void setConn(Connection conn) { this.conn = conn; } //查询 public ResultSet Query(String sql) throws SQLException{ return this.stat.executeQuery(sql); } //增 insert into table values() public boolean Insert(String sql){ return false; } //删 delete public boolean Delete(String sql){ return false; } //根据id删对象 public int DeleteById(int id){ //delete from table where id = b; return 0; } //改 update table set ''=''; public boolean Update(String sql){ return false; } public Statement getStat() { return stat; } public void setStat(Statement stat) { this.stat = stat; } //抽象方法 resultset 转换成 bean 对象类型 abstract Object RS2Obj(ResultSet rs,Object obj) throws SQLException;}
UserDao.java
package cn.edu.bzu.group12.orangenews.dao;import java.sql.ResultSet;import java.sql.SQLException;import org.apache.log4j.Logger;import cn.edu.bzu.group12.orangenews.bean.User;/** * @author pangPython * 用户数据库操作 */public class UserDao extends BaseDao{ Logger log = Logger.getLogger(UserDao.class) ; User user = new User(); //插入User到数据库 public int add(User user) { //insert into user values('pwd','user_name',1,'tel','email'); String sql = "insert into user(pwd,user_name,user_sex,tel,email) values('"+user.getPwd() +"','"+user.getUser_name() +"',"+user.getUser_sex() +",'"+user.getTel() +"','"+user.getEmail() +"')"; try { return this.getStat().executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } return 0; } public User get(int user_id) throws SQLException{ String sql = "select * from user where user_id = "+user_id; ResultSet rs = this.getStat().executeQuery(sql); user.setUser_id(user_id); while (rs.next()) { user = (User) RS2Obj(rs, new User()); } return user; } public User getUserByNameAndPwd(String user_name,String user_pwd) throws SQLException{ String sql = "select * from user where user_name = '"+user_name+"' and pwd = '"+user_pwd+"'"; ResultSet rs = this.getStat().executeQuery(sql); while (rs.next()) { user = (User) RS2Obj(rs, new User()); } return user; } //继承自BaseDao抽象方法 //把数据库查询的ResultSet转换成User对象 @Override Object RS2Obj(ResultSet rs, Object obj) throws SQLException { User user_obj = (User)obj; user_obj.setUser_id(rs.getInt("user_id")); user_obj.setUser_name(rs.getString("user_name")); user_obj.setPwd(rs.getString("pwd")); user_obj.setEmail(rs.getString("email")); user_obj.setUser_sex(rs.getInt("user_sex")); user_obj.setTel(rs.getString("tel")); return user_obj; } // SELECT LAST_INSERT_ID(); public int getLastInsertId(String table_name) throws SQLException{ String sql = "SELECT MAX(user_id) AS user_id FROM USER"; ResultSet rs = this.getStat().executeQuery(sql); while (rs.next()) { log.debug("返回了数据库中的结果!"); return rs.getInt("user_id"); } log.debug("返回了0!"); return 0; } //更新用户密码 public boolean UpdatePwd(int user_id, String new_pwd) throws SQLException { String sql = "update user set pwd = '"+new_pwd+"' where user_id = "+user_id; if(this.getStat().executeUpdate(sql)>0){ return true; } return false; } //更新用户信息 public boolean Update(User user) throws SQLException { String sql = "update user set user_name = '"+user.getUser_name()+"' , user_sex = "+user.getUser_sex()+" , email = '"+user.getEmail()+"' , tel = '"+user.getTel()+"' where user_id = "+user.getUser_id(); log.debug("打印sql信息:"+sql); if(this.getStat().executeUpdate(sql)>0){ return true; } return false; }}
Bean
bean是作为数据库表的映射,封装的实体类。设计时最好属性名与数据库表的字段名对应,user表就有一个对应的User.java
Service
service层主要写项目的业务逻辑,并且最好不出现数据库操作
实例化一个dao,在service中调用dao中的基础方法
Servlet
servlet中主要是重写service方法或者可以重写doGet、doPost方法。
实例化一个Service,处理来自用户的请求,接收参数,然后调用Service的方法,实现转发,或者重定向。
0 0
- JSP、Servlet实战:团队开发新闻系统(三)架构简介
- JSP、Servlet实战:团队开发新闻系统(七)腾讯新闻爬虫
- JSP、Servlet实战:团队开发新闻系统(二)团队分工
- JSP、Servlet实战:团队开发新闻系统(一)总述
- JSP、Servlet实战:团队开发新闻系统(四)页面布局
- JSP、Servlet实战:团队开发新闻系统(五)导航动态变换
- JSP、Servlet实战:团队开发新闻系统(六)类似ThinkPHP的中转页
- 基于JSP+SERVLET的新闻发布系统(三)
- 新闻系统(jsp+javabean+servlet)
- Jsp新闻发布系统(三)
- 基于JSP+SERVLET的新闻发布系统(二)
- JSP新闻系统之八 Servlet
- 使用JSP/Servlet技术开发新闻发布系统
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现
- 基于JSP+SERVLET的新闻发布系统(一)
- android 新闻系统客户端,服务器端采用JSP Servlet 实现
- Android 开发简介-系统架构
- Android 开发简介-系统架构
- ubuntu下opencv的安装
- unity 编辑器软件报错 相关
- Mysql delete历练
- @BeforeClass/@AfterClass 和 @Before/@After的区别
- C++ I/O问题
- JSP、Servlet实战:团队开发新闻系统(三)架构简介
- SPOJ_MINSUB:Largest_Submatrix(二分+单调栈)
- 阻止屏幕变暗进入休眠状态
- 2017MWC 西班牙MWC MWC门票 MWC邀请函 MWC观展
- 将自己积累的一些笔记记录下来
- 实例 (MySQLi 使用预处理语句)
- Spring Boot中使用@Async实现异步调用
- 关于在mac下的idea debug运行时会卡顿几十秒的问题
- mysql update 的时候使用left join和where语句