smbms(超市订单管理系统)

1.创建数据库表
2.创建一个web的maven项目,并导入相应的包
3.创建项目结构pojo(实体层,跟数据库表一一对应的类),dao层(操作数据库表,分为接口和实现类),service层(业务层,分为接口和实现类),servlet(控制层,业务做完后,然后向前端返回结果,或者跳转页面),util(公共类,一些通用的类),filter(过滤器,在前端请求后,首先进入过滤器,再进入servlet)。
4.然后再web.xml中注册servlet。

注意:
1.在做项目过程中,测试类单独测试操作数据库,成功;但是通过servlet来访问数据库,失败。刚开始一头雾水,后来通过缩小范围确定是通过servlet访问数据库出现问题,在网上看了一些人遇到类似的问题,然后尝试网上给出的解决办法,最后终于解决了。原来是在tomcat服务器中运行web项目,访问数据库时,找不到mysql和c3p0的jar包原来的路径了。解决办法:在tomcat的lib目录下拷入mysql和c3p0的相关jar包,并且在项目的WEB-INF/lib目录下拷入mysql和c3p0的相关jar包,重新在服务器中运行项目成功。
2.在web.xml里注册登录过滤器时,过滤器映射路径为/*时,项目运行后提示无法打开路径,/*代表访问所有路径,项目运行后,设置的首先会访问登录界面,这时会进入到登录过滤器映射的类中,因为session为空,所以会重定向到登录界面,然后又会进入到登录过滤器映射的类中,这样就会进入到无限循环中,从而引发提示无法打开路径。解决办法可以将访问登录界面排除在过滤器映射路径之外。

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        HttpServletResponse resp = (HttpServletResponse) servletResponse;
        if(req.getSession().getAttribute(Constant.USER_SESSIONID)==null){
            resp.sendRedirect("/smbms/login.jsp");
        }
        filterChain.doFilter(servletRequest,servletResponse);
    }

java 实现MDB协议 java dbms_java 实现MDB协议


解决办法如下:修改路径,登录界面不会触发过滤器。

<filter-mapping>
        <filter-name>adminFilter</filter-name>
        <url-pattern>/jsp/*</url-pattern>
    </filter-mapping>

3.同一个连续两次进行重定向,会报错。比如filter里面一次重定向,servlet里面又一次重定向,会报错;或者filter里面出现两次重定向,会报错。