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做的不是很好,感觉这个东西是个相当复杂的玩意。