案例:商品管理

该博客分享了JavaWeb开发中登录注册功能的实现,包括商品的增删改查操作,重点介绍了模糊查询功能和如何通过filter进行登录拦截。同时讨论了SqlSessionFactory的优化和异步请求的使用。
摘要由CSDN通过智能技术生成

JavaWeb的学习已经告一段落了,之前还有很多不熟悉的地方(关键是有的东西没有自己动手做一做),所以我做了这个案例来熟悉熟悉之前的

一,描述

这一次不仅有登录注册,还有商品的增删改查,查询这里我只做了一个输入框的模糊查询,至于其他的例如分页查询、联合查询什么的也就SQL语句不一样,但是我记得之前我上传过一个是有这些的。另外,我还用filter做了简单的拦截,如图

虽然在导航栏输入的是list.html,但是它还是需要登录才能进去。

登录进去后:

为了省事,数据填的都很随意,而且样式我也没有美化过,但是基本功能都实现了。

二,部分代码

1、异步请求

<script>
        new Vue({
            el:"#goodslist",
            data(){
                return{
                    goodses:[]
                }
            },
            methods: {
                show(){
                    var _this=this;
                    axios({
                        method: "get",
                        url:"http://localhost:8080/studyweb/goods/selectAll?name="+document.getElementById("name1").value
                    }).then(function (resp){
                        _this.goodses=resp.data;
                    })
                }
            },
            mounted(){
                var _this=this;
                    axios({
                        method:"get",
                        url:"http://localhost:8080/studyweb/goods/selectAll"
                    }).then(function (resp){
                        _this.goodses=resp.data;
                    })
            }
        })
    </script>

上面的是用ajax发送异步请求,获得数据,然后通过vue把数据显示在页面上(初始化结束自动搜索全部和点击按钮进行模糊查询),我用的方式比较笨拙,直接就是两个异步请求,估计以后还会优化的吧。

2、SqlSessionFactory

在完成功能时,发现service层每次都需要创建SqlSessionFactory,并且原则上这个东西只应该被创建一次,之后每次取数据都从这一个取,所以就建了这么一个类

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MakeFactory {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    }

    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

里面的静态代码块在初始化时就会执行,即创建SqlSessionFactory对象,并且别的类可以通过这个类的getSqlSessionFactory()方法获得这个SqlSessionFactory对象。

3、filter

用于拦截请求的,我这里只是简单地使用了一下

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter("/*")
public class LoginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        String[] urls={"/login","/register.html","/goods/","update","add"};
        HttpServletRequest req=(HttpServletRequest)request;
        String url=req.getRequestURL().toString();
        for(String u:urls){
            if(url.contains(u)){
                chain.doFilter(req,response);
                return;
            }
        }

        HttpSession hs=req.getSession();
        if(hs.getAttribute("username")!=null){
            chain.doFilter(req,response);
        }else{
            req.getRequestDispatcher("/login.html").forward(req,response);
        }
    }

    @Override
    public void destroy() {

    }
}

这个filter做的不是很好,感觉这个东西是个相当复杂的玩意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值