ssm超市订单管理-用户管理+登录功能的实现

VO(View Object)对象 用于接收客户端多参数请求 用于返回给客户端时使用 隐藏细节信息
事务是放在service层
sqlsession是放在dao层的
dao里面的sql可以写通用的 service层的查询写的准确点的

未来你通过路径直接访问WEB-INF下的路径是访问不了的 但是你可以通过web.xml进行设置

servlet是把不好的东西过滤掉

问题:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解决:

dispatcherServlet拦截范围太广泛 / 但是拦截的这个并不是我们想要处理的

所以我们希望springmvc不在拦截这种请求 我们自己可以做下静态资源的放行

需要在springmvc-servlet.xml中进行设置一下

静态资源放行:
			原因:我们给DispatcherServlet配置的URL匹配路径为/ 那么它会拦截根目录下的所有的请求
				所以导致我们的css、image、js等静态资源文件也被拦截了。
				但是我们也清除,这些静态文件,不需要我们进行拦截!
			所以解决方案如下:
				1.将Servlet的Url匹配路径更改*.do  /  *.action
				2.将根目录下的静态资源目录全部更改为采用默认Servlet处理方式
				3.精确放行
	 -->

	 2.默认的处理方式<mvc:default-servlet-handler/> 全部放行 万一你有一个daload文件夹 下载资源的 但是并不是所有的用户都可以下载 这个时候需要拦截一定的页面
	 3.精确放行
<!-- 
	 	location:静态资源在项目中的位置
	 	mapping:对应的URL路径
		/**类似于这种 css/xxx/xx.css
<mvc:resources location="/statics/css" mapping="/statics/css/**"></mvc:resources>
	  -->
	  
	 <mvc:resources location="/statics/image" mapping="/statics/image/**"></mvc:resources> 
	 
用户登录功能

从后端开始

dao层 .xml 接口 sql语句(写了一个通用的查询,包括分页的查询,用户登录的查询)

service层 登录业务 实现类 接口

采用spring开发 返回值user 参数(userCode,userpassword)

先判断用户在不在 如果在 再从用户中取出来密码和你的参数的密码进行比较
集合.get(0)方法 取出来第一个元素

controller层 写个方法

requestMapping 请求地址对应前端
参数 和前端name值对应
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String doLogin(@RequestParam String userCode, 									@RequestParam String userPassword, 							HttpServletRequest request)throws Exception {
User loginUser = userService.getLogin(userCode, userPassword);
		if (loginUser == null) {
request.setAttribute(ErrorMessage.USER_ERROR_FLAG, 		                            ErrorMessage.USER_LOGIN_ERROR_MSG);
	// 默认请求转发 return "forward:login";
	//return 后面跟的 直接会到视图解析器中解析 
			 return "login";
		}
		// 登陆成功 存储用户信息 跳转到系统首页
		request.getSession().setAttribute(Constants.USER_SESSION, loginUser);
		// VO(View Object)对象 用于接收客户端多参数请求 用于返回给客户端时使用隐藏细节信息
		return "frame";
}

service返回的方法是user对象 对user进行判断 对该对象进行判断

登录失败:存储错误信息 返回登录页面+提示(提示:参数带个request

登陆成功 存储用户信息 跳转到系统首页 session

用户注销功能(退出)

session里面的信息去掉 跳转回登录页面
请求转发 地址栏不变化
localhost:8080/smbms.logot退出地址
你如果写return “login”
当你退出来的时候 地址仍然为localhost:8080/smbms.logot

controller 写方法 参数session

在spring中 需要获取servlet api 直接写就可以

注意地址   在你跳转的时候写/ 表示跳转到了 根目录
	public String doLogout(HttpSession session) {
		// 从session中移除当前用户
		session.removeAttribute(Constants.USER_SESSION);
		// 返回到首页
		return "redirect:/";
	}
用户管理

实现分页查询

dao 写sql 两个方法 返回值 一个是long 另一个是集合

			totalCount list是后台查出来的

service 返回值void 参数pageBean工具类+你查询的条件 startIndex+pageSize

可以借助vo对象

package cn.kgc.vo;

import java.io.Serializable;

import cn.kgc.utils.Constants;
/*用于接收用户列表查询的参数*/
public class QueryUserListVO implements Serializable{
	
	private static final long serialVersionUID = 1L;
	private String userName;
	private Long userRole;
	private Integer p=1;
	private Integer pageSize=Constants.USER_DEFAULT_PAGESIZE;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public Long getUserRole() {
		return userRole;
	}
	public void setUserRole(Long userRole) {
		this.userRole = userRole;
	}
	public Integer getP() {
		return p;
	}
	public void setP(Integer p) {
		this.p = p;
	}
	public Integer getPageSize() {
		return pageSize;
	}
	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}
	
	
}

当前页 每页显示多少条 前台传给我们的

@Override
	public void getListForPaging(PageBean<User> pageBean, QueryUserListVO vo) throws Exception {
		Map<String, Object> params=new HashMap<>();
		params.put("userName",vo.getUserName() );
		params.put("userRole",vo.getUserRole() );
		/*对于总记录数的查询 可能需要name+role
		 * 对于list查询 还需要startIndex+pageSize
		*/
	Long totalCount = userMapper.getCountByCondistions(params);
		pageBean.setTotalCount(totalCount);
		
		/*userMapper.xml对应*/
		params.put("startIndex",pageBean.getStartIndex() );
		params.put("pageSize",pageBean.getPageSize() );

		List<User> list = userMapper.getListByConditions(params);
		pageBean.setList(list);
			}

controller 写方法

设置 当前页+每页显示条数

/* ###########################用户信息分页展示############################ */
	/* 写了参数QueryUserListVO vo 接收前台信息name 并且直接存储到对应的类中 自动按照属性注入 */
	@RequestMapping(value = "/userlist")
	public String doUserList(QueryUserListVO vo, Model model) throws Exception {
		PageBean<User> pageBean = new PageBean<>();
		// 一开始点击用户管理的时候,可能没有传进去参数 需要你进行判断
		pageBean.setCurrentPage(vo.getP());
		// 利用对象的引用传递
		pageBean.setPageSize(vo.getPageSize());

		List<Role> roleList = roleService.getList();
		userService.getListForPaging(pageBean, vo);
		// 记得存起来pageBean
		model.addAttribute("pageBean", pageBean);
		model.addAttribute("roleList", roleList);
		// 查询条件回显
		model.addAttribute("userRole", vo.getUserRole());
		model.addAttribute("userName", vo.getUserName());
		return "userlist";
	}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

你点上一页 下一页 跳转至 其实调用的是查询这个方法

获取年龄
在这里插入图片描述

function page_nav(frm,num){
		frm.p.value = num;
		frm.submit();
}

function jump_to(frm,num){
    //alert(num);
	//验证用户的输入
	var regexp=/^[1-9]\d*$/;
	var totalPageCount = document.getElementById("totalPageCount").value;
	//alert(totalPageCount);
	if(!regexp.test(num)){
		alert("请输入大于0的正整数!");
		return false;
	}else if(num > totalPageCount){
		alert("请输入小于总页数的页码");
		return false;
	}else{
		page_nav(frm,num);
	}
}
 <input type="hidden" name="p" value="1"/>
					 <input	value="查 询" type="submit" id="searchbutton">
					
<div class="page-bar">
	<ul class="page-num-ul clearfix">
		<li>共${param.totalCount }条记录&nbsp;&nbsp; ${param.currentPageNo }/${param.totalPageCount }页</li>
		<c:if test="${param.currentPageNo > 1}">
			<a href="javascript:page_nav(document.forms[0],1);">首页</a>
			<a href="javascript:page_nav(document.forms[0],${param.currentPageNo-1});">上一页</a>
		</c:if>
		<c:if test="${param.currentPageNo < param.totalPageCount }">
			<a href="javascript:page_nav(document.forms[0],${param.currentPageNo+1 });">下一页</a>
			<a href="javascript:page_nav(document.forms[0],${param.totalPageCount });">最后一页</a>
		</c:if>
		&nbsp;&nbsp;
	</ul>
	<span class="page-go-form"><label>跳转至</label>
	   <input type="text" name="inputPage" id="inputPage" class="page-key" />页
	   <button type="button" class="page-btn" onClick='jump_to(document.forms[0],document.getElementById("inputPage").value)'>GO</button>
	</span>
</div>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值