web项目中的分层:dao--service--servlet--jsp。
0.在idea中创建web项目,配置Tomcat9。file--project structure--modules--dependencies+(添加Tomcat9.0),这样才可以使用servlet和jsp
0.1在web-inf下创建lib文件夹,存放jar包:c3p0-0.9.1.2.jar(开源的JDBC连接池)/commoms-dbutils-1.7.jar/hamcrest-core-1.3.jar(核心包)/jstl-1.2.jar/jutil-4.12.jar(测试)/ojdbc6.jar(连接数据 库)/log4j-4.12.jar(记录日志)。1.在conf(Resource Root)文件夹下创建 c3p0-config.xml ,配置数据库的连接(注意是中划线,且名称不能写错)<?xml version="1.0" encoding="UTF-8" ?><c3p0-config> <default-config> <property name="user">scott</property> <property name="password">tiger</property> <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property> <property name="driverClass">oracle.jdbc.driver.OracleDriver</property> </default-config></c3p0-config>1.1在conf(Resource Root)文件夹下创建 Resource bundle命名为log4j.properties。(表示不懂)#debug 指的是记录日志的级别-info-warn-error#a 表示记录日志的位置log4j.rootLogger=debug,a,b#分别指明a和b代表的位置#表示a是指控制台的输出log4j.appender.a=org.apache.log4j.ConsoleAppender#控制台输出的目标,使用哪个命令输出异常信息log4j.appender.a.Target=System.out#设置输出日志的格式要求,使用模板布局log4j.appender.a.layout=org.apache.log4j.PatternLayout#指定模板 %d表示日期 %m异常的信息 %n表示换行log4j.appender.a.layout.ConversionPatten=%d{yyyy-MM-dd HH:mm:ss} %m%n #输出文件log4j.appender.b=org.apache.log4j.FileAppenderlog4j.appender.b.File=E:\\error.loglog4j.appender.b.layout=org.apache.log4j.PatternLayoutlog4j.appender.b.layout.ConversionPatten=%d{yyyy-MM-dd HH:mm:ss} %m%n2.在src 中创建com.neu.util包中DButil(连接数据库了) private static ComboPooledDataSource ds=new ComboPooledDataSource(); //获取连接数据库的数据源 public static DataSource getDataSource(){ return ds; }3.在src中创建com.neu.dao包中的YongHuDao(与数据库连接) //用户信息的添加 public int saveYonghu(String zhanghao,String mima,String mingcheng,String dianhua,String youxiang){ int row=0; //sql语句换行必须加空格 //尽量在plsql中编写sql语句,然后复制 String sql="insert into t_yonghu(yh_id,yh_zhanghao,yh_mima,yh_mingcheng,yh_dianhua,yh_youxiang)values " + "(seq_book_id.nextval,?,?,?,?,?)"; //创建dbutils包中的QueryRunner对象,其实就是我们以前使用的statement QueryRunner qr=new QueryRunner(DBUtil.getDataSource()); //QueryRunner的update方法可以执行insert/delete/update方法。query方法可以执行select方法。 try { row=qr.update(sql,zhanghao,mima,mingcheng,dianhua,youxiang);//括号中存放sql语句,其次给?赋值 } catch (SQLException e) { throw new RuntimeException(e);//异常 } return row; }4.在src中创建com.neu.service包中的YongHuService(与dao层连接)public boolean doSave(String zhanghao,String mima,String mingcheng,String dianhua,String youxiang){ YongHuDao yongHuDao=new YongHuDao(); boolean flag=false; try { int row=yongHuDao.saveYonghu(zhanghao,mima,mingcheng,dianhua,youxiang); if(row>0){ flag=true; } } catch (Exception e) { logger.debug(e); //使用log4j记录日志 把异常信息写入到文件中(可不写) } return flag;}5.直接在web文件夹下创建success.jsp/fail.jsp/yonghuzhuce.jsp。fail.jsp:<body> 操作失败!!5秒后自动返回或点击<a href="#" οnclick="history.back()">返回</a></body><script type="text/javascript"> function myback() { history.back(); } setTimeout("myback()",5000);//只执行一次,5秒后执行myback()函数 //setInterval("myback()",5000);//每隔5秒执行一次</script>yonghuzhuce.jsp:<body><div> <form action="YongHuZhuCeServlet.do" method="post"> <table> <tr> <td>账号</td><td><input type="text" name="zhanghao" id="zhanghao"></td> </tr> <tr> <td>密码</td><td><input type="password" name="mima" id="mima"></td> </tr> <tr> <td>姓名</td><td><input type="text" name="mingcheng" id="mingcheng"></td> </tr> <tr> <td>电话</td><td><input type="text" name="dianhua" id="dianhua"></td> </tr> <tr> <td>邮箱</td><td><input type="text" name="youxiang" id="youxiang"></td> </tr> <tr> <td style="align-content: center"> <input type="submit" value="注册"> </td> </tr> </table> </form></div></body>6.在src中创建com.neu.servlet包中的YongHuZhuCeServlet(与service,jsp层连接)在doPost方法中写入: //处理以post方式提交的请求 request.setCharacterEncoding("UTF-8");//post方式处理中文乱码 String zhanghao=request.getParameter("zhanghao");//获取jsp表单中的数据 String mima=request.getParameter("mima"); String mingcheng=request.getParameter("mingcheng"); String dianhua=request.getParameter("dianhua"); String youxiang=request.getParameter("youxiang"); YongHuService yongHuService=new YongHuService();//创建service中的对象 boolean flag=yongHuService.doSave(zhanghao,mima,mingcheng,dianhua,youxiang); if(flag){ //重定向 response.sendRedirect("success.jsp"); }else { response.sendRedirect("fail.jsp"); }