javaweb登陆注册小Demo

前言:

最近学习了MVC(进度有点慢,刚考完驾照 这个暑假可以专心搬砖了)

采用的技术:

主体:MVC+Servlet+JSP+JDBC
封装数据:BeanUtils重构 
封装数据操作:Dbutils重构
封装数据库连接:C3P0连接池重构 (用到了动态代理扩展方法)

准备将之前所学的零零散散的知识串起来 写了一个简单完整的登陆注册小demo 。
可以简单来回顾下MVC模型

M: model层 控制与数据库之间的数据操作
V:view视图层,用来展示数据
C:control控制层,只要用来转发重定向选择跳转的页面

来张图更形象:
javaweb登陆注册小Demo_第1张图片

Git地址:

https://github.com/jjc123/LoginAndRegister

两个问题:

问题一:缺少jar包:
WEB-INF下lib文件中应该添加如下三个jar包 然后添加到项目path中

//jsp页面需要
1. jsp-api.jar
//servlet需要
2. servlet-api.jar
//数据库连接需要
3. mysql-connector-java-8.0.11.jar
//beanutils需要,方便封装数据
4. commons-beanutils-1.9.3.jar
5. commons-logging-1.2.jar
//dbutils需要,方便封装对数据库的操作
6. commons-dbutils-1.7.jar
//c3p0连接池必须
7. c3p0-0.9.5.2.jar
8. mchange-commons-java-0.2.11.jar

如果项目下载来有红叉叉,先检查build path 的jar是否导错
然后可以将web.xml重新加载一遍(可以删掉然后重新创建)

这几个jar我都放在百度云可供下载,是最新的。
https://pan.baidu.com/s/1BCzTFMCW9un65o_es7SlLg

问题二:版本不匹配:
javaweb登陆注册小Demo_第2张图片

javaweb登陆注册小Demo_第3张图片

还有其他零散需要注意的:
注意点1:

${pageContext.request.contextPath}  
<%=request.getContextPath()%>

用于解决使用相对路径时出现的问题,它的作用是取出所部署项目的名字。

应用 :表单

"${pageContext.request.contextPath}/ TeacherServlet?method=register" method="POST">

注意2:
错误页面:
第一种是自定义异常类
为什么需要自定义异常类呢 比如 视图层是用来显示数据的,最好不要有逻辑判断 来根据错误类型显示内容。这个时候就用自定义异常类,当你try抛出异常类的时候,如:

throw new TeacherException("注册失败,该账号已被注册");

根据异常类的类型,执行不同的显示操作

catch (TeacherException e)  
{System.out.println(e.getMessage());}

catch (Exception e)
{e.printStackTrace();}

第二种配置错误跳转页面:

  <error-page>
  <error-code>404error-code>
  <location>/error/404.jsplocation>
  error-page>
  <error-page>
  <error-code>500error-code>
  <location>/error/500.jsplocation>
  error-page>

注意:如果是语法错误,它是不会被catch的exception异常类捕获
这个时候要采用上面的配置全局错误跳转页面。

catch (Exception e)
{e.printStackTrace();}

但是类似于:这类是会被catch的exception异常类捕获

int a=3/0;

注意3:
dao层和service层都需要定义接口

注意4:
转发和重定向:
request.getContextPath()获取当前项目地址
转发:

1. 是服务器端操作,
2. 地址是内部跳转 不需要加项目名  
3. 转发后的代码不会执行
4. 可以传输数据,放到request中
5. 执行效率高点

重定向:

1. 是浏览器端操作
2. 地址是浏览器与服务器之间跳转,需要加项目名:
3. 重定向后的代码也会执行
4. 不能保存转发数据
5. 执行效率低点

跳转错误页面我都是用重定向,其他页面跳转一般用转发,因为一般涉及到数据的传输

//转发
request.getRequestDispatcher(“/index.jsp”).forward(request, response);
//重定向
response.sendRedirect(request.getContextPath()+”/error/error.jsp”);

你可能感兴趣的:(JAVA,Web基础)