JSP、Servlet实战:团队开发新闻系统(三)架构简介
2017-01-06 10:46
489 查看
JSP、Servlet实战:团队开发新闻系统(三)架构简介
jsp、servlet原生就是MVC设计思想。
Controller层是Servlet来充当,JSP充当View的角色,Model是Bean。
程序流程
jsp或者html页面请求servlet,为了代码结构清晰、提高开发效率,提取出service层,service如果需要与数据库打交道可以调用dao层。servlet用于请求转发、响应,
service实现业务逻辑,
dao用于操作数据库
Dao
如果没有统一的编码规范以及减少代码重复率,还可以抽离BaseDao,每个对应的dao继承BaseDaoBaseDao.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.javaService
service层主要写项目的业务逻辑,并且最好不出现数据库操作实例化一个dao,在service中调用dao中的基础方法
Servlet
servlet中主要是重写service方法或者可以重写doGet、doPost方法。实例化一个Service,处理来自用户的请求,接收参数,然后调用Service的方法,实现转发,或者重定向。
相关文章推荐
- JSP、Servlet实战:团队开发新闻系统(七)腾讯新闻爬虫
- JSP、Servlet实战:团队开发新闻系统(六)类似ThinkPHP的中转页
- JSP、Servlet实战:团队开发新闻系统(一)总述
- JSP、Servlet实战:团队开发新闻系统(五)导航动态变换
- JSP、Servlet实战:团队开发新闻系统(二)团队分工
- JSP、Servlet实战:团队开发新闻系统(四)页面布局
- 【S2第二学期-使用JSP/Servlet技术开发新闻发布系统】全书知识点总结
- 使用JSP/Servlet技术开发新闻发布系统
- 教案:《开发基于JSPServletJavaBean的网上交易系统》第8章 View层开发:EL和JSTL
- JDBC+Servlet+JSP整合开发之22.JSP简介 推荐
- 从零开始打造一个新闻订阅APP之服务器篇(一、系统结构设计&开发流程简介)
- 基于JSP+SERVLET的新闻发布系统(二)
- 深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)
- 基于JSP+SERVLET的新闻发布系统(一)
- 【课程分享】基于plusgantt的项目管理系统实战开发(Spring3+JDBC+RMI的架构、自己定义工作流)
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第三篇:新闻发布,新闻修改,新闻删除功能的实现
- 基于JSP+SERVLET的新闻发布系统(三)
- HttpWatch工具简介及使用技巧 [MVC开发中会用的工具,MVC架构与实战中也有涉及]
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第一篇:前期环境准备
- Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之01.JDBC简介 推荐