SMBMS项目(二)

工具类写完了之后,我们可以先把过滤器写了:

package com.dongmu.filter;

import javax.servlet.*;
import java.io.IOException;

public class ChacterEncodingFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        servletResponse.setContentType("text/plain;charset=utf-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

然后配置web.xml文件,它自动生成的版本比较低,我们进行下面的操作:
在这里插入图片描述
把原来的删了再重新加入一个4.0的,不过多赘述细节了.:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--字符编码过滤器-->
    <filter>
        <filter-name>ChacterEncodingFilter</filter-name>
        <filter-class>com.dongmu.filter.ChacterEncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>ChacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    
</web-app>

然后导入我们的静态资源文件,
在这里插入图片描述
在这里插入图片描述
没有的话可以在gitee上面找到开源的资料可以用于学习。
在这里插入图片描述
然后设置欢迎界面,
在这里插入图片描述
把这个注释掉,然后启动项目
在这里插入图片描述
我们做项目可以一个功能一个功能地来做:

1:由于用户要登录,我们肯定要检测用户信息对不对,那么我们就要查询数据库,所以写一个DAO接口实现类,提供根据用户userCode查询,返回用户信息。
2:dao层持久层是处理底层的,我们的业务方法卸载service层,所以在这个里面判断查询到的密码和用户输入的一不一致。一致的话要返回用户,而不是返回一个boolean值,因为后面的业务中我们还要知道具体是谁登录了。
3:看它跳转的页面是什么

现在实现了页面的跳转,过程中遇到的问题:

1:   InputStream stream = new FileInputStream("src/main/resources/db.properties");
      InputStream stream = DBUtil.class.getResourceAsStream("/db.properties");
      一开始用上面这种方法不知道为什么不行,老是路径不对,但是测试的时候都可以读取到,一到项目里面就找不到文件路径了,下面这种测试的时候和在项目中都可以,不知道为什么。
      
      查了资料说:InputStream is = new FileInputStream(file);读取工程中的配置文件时要求配置文件是在项目根目录下或盘符上,如果配置文件放在类路径下,FileInputStream(file)是读不到的。
      
	  Class.getClassLoader.getResourceAsStream(String path) :只能从类根路径下获取,path不能以’/'开头
	  getResourceAsStream(path):path 不以’/'开头时表示是从此类所在的包下取资源,以’/'开头则是从类根路径下获取。

现假设有一个类(Test.java)要读取配置文件
      
2<%@include file="error/error_404.jsp"%>着用方式是会把不同页面的java代码放在一起形成一个页面,所以如果i在我引入的文件中已经定义过了就会报错,而<jsp:include page="error/error_404.jsp"/>这种引入标签的方式不会把java代码放在一起,而是把形成的页面拼在一起。这部分在jsp编译生成的Java代码中可以看到。

3:删掉jsp中的<!DOCTYPE html>.

接下来就是退出以及销毁session防止地址栏恶意登录
在用户退出的时候写一个销毁session的方法,但是用户可以地址栏恶意访问,这时候加一个过滤器,检查没有session的时候就跳转到错误页面,但是这个时候拦截路径怎么配置呢?
如果写成/*的话就会导致我们的登录界面也锁住,导致无论如何也无法登录,所以这时候就体现出来我们把其他的jsp放在个单独的文件夹里的好处了,
在这里插入图片描述
我们可以把拦截路径写成/jsp/*这个时候就不会拦截掉登录界面了。
这个时候我们需要注意的是在登录界面跳转到登录后的界面的方式是重定向,不然的话转发它就直接跳转到了登陆后的界面,不会走过滤器。即使不走过滤器也要你密码必须正确才能转发。
个人总结:内部私密资源之间可以请求转发,但是外部和内部之间跳转最好用重定向。但是 这个时候即使写了转发好像也是需要密码正确才能转发到内部资源,所以这个也不是一定的。
如果希望在跳转前后, 能够通过request对象带数据到目的地, 只能使用转发

如果仅仅是做一个跳转,没有其他要求,此时推荐使用转发(转发是一次请求,一次响应,可以减少访问服务器的次数,降低服务器的压力)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: b站狂神的javaweb smbms项目是一个基于JavaWeb技术的超市管理系统,主要功能包括商品管理、订单管理、用户管理等。该项目采用MVC架构,使用了JSP、Servlet、JDBC等技术,具有较高的实用性和可扩展性。通过学习该项目,可以深入了解JavaWeb开发的流程和技术,提高自己的编程能力。 ### 回答2: B站的“狂神Javaweb SMBMS项目”是一门使用Java Web技术开发的视频教程。这个项目主要用于实践学习的目的,可以帮助初学者更好地理解Java Web开发的流程和相关技术。 该视频教程的难度比较适中,讲解详细,由浅入深,循序渐进。适合有一定基础的Java学习者跟随学习,透彻了解Java Web开发的整个流程。项目SMBMS为主题,又称超级简易订单管理系统,是一个比较典型的Java Web项目。 在项目中,学习者将学习到多种技术和工具的应用,比如JSP、Servlet、JavaBean、JDBC等等,同时也会接触到MySql数据库的使用。学习者需要按照视频教程中准备好的模板和代码进行实践,学习到开发一个完整的JavaWeb项目的方方面面。 总体来说,该视频教程以项目实践为主,相较于纯理论学习更加有趣和实用。学习者通过自己的实践,可以更加深入地理解JavaWeb技术开发的本质。这个项目听说是非常受欢迎的,同时B站也有其他狂神讲授的课程,同时推荐给有志于学习JavaWeb开发的同学们。 ### 回答3: B站狂神的javaweb SMBMS项目是一个非常优秀的JavaWeb项目,它可以帮助JavaWeb工程师更好地理解和掌握JavaWeb开发技术,同时也可以为初学者提供一个很好的学习范例。 该项目主要包含了SMBMS超市管理系统的设计与实现,它的功能非常全面,包括用户管理、供应商管理、订单管理、商品管理等等。该系统的界面美观,功能完善,交互体验优秀。 在该项目的实现过程中,狂神老师采用了现代化的技术栈,如SSH框架、Bootstrap、JQuery等,不仅实现了界面与后台逻辑的分离,而且做到了代码复用,减少了代码的冗余。在此基础上,老师还掌握了AJAX技术,实现了无刷新交互,提升了系统的用户体验。 此外,该项目还采用了Maven工程管理工具,将各个功能模块进行模块化开发,同时实现了持久层的数据访问和事务管理,减轻了后台开发的难度。 总之,该SMBMS超市管理系统项目结合了诸多技术,实现了一个功能完备、极具可操作性的系统,从而满足了JavaWeb开发的许多需求。学习该项目,可以加深对JavaWeb开发技术的理解,提升开发能力和实战水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海冥鱼未眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值