shop登陆注册、分页、shopback拦截器

//三层模型 : Web Service Dao : 分工明确 细化功能

//MVC模型  :  模型模块  视图模块  控制模块:三层模型是对C模块的细分

首先在idea 下web文件新建head.jsp  register.jsp  login.jsp  在WEB-INF文件下新建main.jsp页面

在head.jsp中引入jQuery和jstl包

然后在regist.jsp和login.jsp中引入head.jsp

在页面中编写input标签,用于接收参数传输给后台进行接收及处理

1、可以写按钮事件,在js事件中通过jQuery获取输入框中内容

2、可以写入form表单中传递数据

$("#userName").val().trim();

之后通过ajax传值到后端进行数据处理

function submit(){

if(!userCheck){

alert("对不起,用户名不可用")

return;

}

var userName =$("#userName").val().trim();

var password =$("#password").val().trim();

if(password.trim()==""||password.length<6){

alert("对不起,密码不符合规则")

return;

}

var repassword =$("#repassword").val().trim();

if(password!=repassword){

alert("对不起,两次密码不一致")

return;

}

var d = {userName:userName,password:password,repassword:repassword};

$.ajax({

url:"/user/register",

type:"post",

data:d,

dataType:"json",

success:function (data) {

if(data.code==-1){

$("#message").text(data.message);

}else{

$("#message").text(data.message+",立即为您跳转页面");

setTimeout(function () {

location.href="/resource/pages/login.jsp";

},2000)

}

}

})


在web层接收前台传递过来的参数,可以用String userName =req.getParameter("userName");属性名的方式获取

也可导入工具包commons-beanutils-1.8.3.jar,用工具接收直接封装入javaBean中,(接收的属性名必须和javaBean中的成员变量名相同)UserBean user = WebUtils.populate(UserBean.class,req);

接着调用service层中UserService中的各种方法得到从数据库获取的值,进行判断登陆、注册等操作

service层中一般直接调用Dao层的方法获取原始数据,可以在本层进行一些简单的业务处理,如数据库long型时间转换日期型,密码加密存入数据库等,加密语句如下,

MessageDigest digest = MessageDigest.getInstance("md5");

//加密之前是字符串,加密之后是字节数组, 如果我们把字节数组存到数据库, 那么查询时的效率极低

byte[] bs = digest.digest(userBean.getPassword().getBytes());

//可以将任意字节数组转成明文的字符串

//01100001  01100010 01100011

//011000 010110 001001 100011

//24  22 9 35

Base64.Encoder encoder = Base64.getEncoder();

String str = encoder.encodeToString(bs);

userBean.setPassword(str);

而在DAO层则直接是根据方法名含义直接获取数据库中的数据


bean中则直接写javaBean类,成员变量名与数据库中的字段名相同,且类型相同

在web层调用获取的数据,经过处理可以放入Session域中,前端jsp页面通过jQuery获取后台的到信息进行展示,如商品展示。可以分页展示,

需要分页的信息,对应的java  Bean中要继承    Basebean。

里面存放总页数当前页等,在调用提取写好封装的paging类中的方法,根据javabean的开始页数和分页大小,还有二次调用传过来的当前页,判断当前页并拼接当前请求所带来的所有参数,再拼写分页当前页,使用字符串拼接成页面,返回一个字符串,在页面中引入这个字符串,则会自动转换成对应标签和信息,

在页面显示的商品详情则只会显示,调用时传递过去的开始页,及页面大小数量的所有商品。


相应的在shopback后台系统中判断用户登录之后才能对商品表的信息进行增删改查等操作,否则则会拦截。

如果用户没有登录,跳到登录页面,可以通过拦截器实现,在拦截器中判断

用户登录成功,则在该用户的session中放置登录标志,否则无

在拦截器中,只有登录才能显示商品详情及操作,或者可以查看一些静态页面,否则就跳到登录页面

//因为要使用session,所以将ServletRequest强转成HttpServletRequest

HttpServletRequest request = (HttpServletRequest) servletRequest;

//有一些静态资源和serlvet请求是不需要拦截的, 放行

//获取请求路径 /项目名/请求地址

String str = request.getRequestURI();

if(str.startsWith("/shopback/resource/")||str.startsWith("/shopback/user/login")){

filterChain.doFilter(request,servletResponse);

return;

}

//获取登陆标志

Object userBack = request.getSession().getAttribute("user");

//判断使用已经登陆

if(userBack==null){

request.getRequestDispatcher("/resource/pages/login.jsp").forward(request,servletResponse);

}else{

filterChain.doFilter(request,servletResponse);

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、jsp介绍 jsp作用jsp全称java server pages(java服务器页面),本质是一个servl...
    圣贤与无赖阅读 5,093评论 0 14
  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    91数据阅读 8,890评论 0 13
  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 4,270评论 0 0
  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 4,626评论 0 0
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代产品,是在 struts1和WebWork的...
    inke阅读 6,725评论 0 50

友情链接更多精彩内容