7.24第五次实训笔记
程序员文章站
2022-05-25 21:14:58
...
实训感受
1、今天实现了注销、添加角色的功能。注销比较容易实现,主要就是一个页面的跳转和remove信息就可以了。但是添加角色有一些困难,课后运行测试的时候感觉有些地方还是不够严谨,还可以再改进一下。
2、今天完成了小组分配的任务,登录、注册和订单管理部分,基本上都是老师在课堂上讲过的,稍微改改就可以了,但我在实现显示信息的时候耽误了很长时间,一是我没有改根路由,导致无法跳转到findAll页面,二是数据库的列名是用下划线命名的,而java支持的是驼峰命名法,因此这些数据无法在页面上显示,将列名用驼峰命名就改好了这个问题。
总的来说,今天收获很多,尤其是做完小组项目,对课堂学的内容又有了更深入的理解和掌握,使用gitee上传代码,也让我对gitee更加熟悉。
实训流程
1、依次实现注销和添加角色的功能
2、完成小组项目
课堂任务编码实现
bean层添加
UserRole
package com.zr.bean;
public class UserRole {
private int userId;
private int roleId;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
@Override
public String toString() {
return "UserRole{" +
"userId=" + userId +
", roleId=" + roleId +
'}';
}
public UserRole(int userId, int roleId) {
this.userId = userId;
this.roleId = roleId;
}
public UserRole() {
}
}
controller
package com.zr.controller;
import com.zr.bean.PageInfo;
import com.zr.bean.Role;
import com.zr.bean.User;
import com.zr.dao.IUserDao;
import com.zr.service.IRoleService;
import com.zr.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private IUserService userService;
@Autowired
private IRoleService roleService;
@RequestMapping("login.do")
public ModelAndView login(User user,HttpSession session){
int id = userService.login(user.getUsername(),user.getPassword());
ModelAndView modelAndView=new ModelAndView();
if(id != -1){
List<Integer> roleIds=roleService.findRoleByUserId(id);
session.setAttribute("user",user);
session.setAttribute("roleIds",roleIds);
modelAndView.setViewName("main");
}
else {
modelAndView.setViewName("../failer");
}
return modelAndView;
}
@RequestMapping("findAll.do")
public ModelAndView findAll(@RequestParam(defaultValue = "1") int currentPage, String username,
@RequestParam(defaultValue = "0") int type,
HttpSession session){
if(type==1){
session.setAttribute("searchname",username);
}else if(type==0){
username=(String) session.getAttribute("searchname");
}else if(type==2){
session.removeAttribute("searchname");
}
PageInfo<User> pageInfo = userService.findAll(currentPage,username);
ModelAndView mv=new ModelAndView();
mv.setViewName("user-list");
mv.addObject("pageInfo",pageInfo);
return mv;
}
@RequestMapping("deleteById.do")
public String delete(int id){
userService.deleteById(id);
return "redirect:findAll.do"; //重定向
}
@RequestMapping("add.do")
public String add(User user){
userService.add(user);
return "redirect:findAll.do";
}
@RequestMapping("toUpdate.do")
public ModelAndView toUpdate(int id){
User user=userService.selectUserById(id);
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("user",user);
modelAndView.setViewName("user-update");
return modelAndView;
}
@RequestMapping("update.do")
public String update(User user){
userService.update(user);
return "redirect:findAll.do";
}
@RequestMapping("logout.do")
public String logout(HttpSession session){
session.removeAttribute("user");
return "../login";
}
//传值方法:使用ModelAndView
//当url处于这个时,由listCategory方法来处理请求
@RequestMapping("toAddRole.do")
public ModelAndView toAddRole(int id){
//创建一个模型视图对象
ModelAndView modelAndView = new ModelAndView();
//获取到查询的数据
List<Role> roleList = roleService.findNotRoleByUserId(id);
//将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
modelAndView.addObject("roles",roleList);
//放入jsp路径
modelAndView.setViewName("user-role-add");
modelAndView.addObject("id",id);
//返回ModelAndView对象
return modelAndView;
}
@RequestMapping("addRole.do")
public String addRole(String roleIds,String userId){
String[] strs = roleIds.split(",");
List<Integer> ids = new ArrayList<>();
for(String s:strs){
ids.add(Integer.parseInt(s));
}
roleService.addRole(ids,Integer.parseInt(userId));
return "redirect:findAll.do";
}
}
dao层新增
IUserDao
package com.zr.dao;
import com.zr.bean.Role;
import java.util.List;
public interface IRoleDao {
List<Integer> findRoleIdsByUserId(int id);
List<Role> findNotRoleByUserId(int id);
}
service层新增
RoleServiceImpl
package com.zr.service.impl;
import com.zr.bean.Role;
import com.zr.bean.UserRole;
import com.zr.dao.IRoleDao;
import com.zr.service.IRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class RoleServiceImpl implements IRoleService {
@Autowired
private IRoleDao roleDao;
@Override
public List<Integer> findRoleByUserId(int id) {
return roleDao.findRoleIdsByUserId(id);
}
@Override
public List<Role> findNotRoleByUserId(int id) {
return roleDao.findNotRoleByUserId(id);
}
@Override
public void addRole(List<Integer> ids, int userId) {
for(int i:ids){
UserRole userRole=new UserRole();
userRole.setRoleId(i);
userRole.setUserId(userId);
}
}
}
IRoleService
package com.zr.service;
import com.zr.bean.Role;
import java.util.List;
public interface IRoleService {
List<Integer> findRoleByUserId(int id);
List<Role> findNotRoleByUserId(int id);
void addRole(List<Integer> ids, int userId);
}
成果展示
hualili用户,既是admin也是user,点击添加角色后,显示如下:
可见无法添加角色。
登录ikun用户,他既不是admin,也不是user,
可以添加角色。
注销功能在右上角,点击后跳转登录页面,不再展示。
小组项目进程
每个功能都在完善中,预计明天可以将整个项目进行整合、测试并交付。
上一篇: 萌懂系列之HashMap原理
下一篇: 八皇后问题(递归回溯)