SSM 完整项目 (内含源码)

SSM 完整项目  (内含源码)

SSM 电影后台管理项目

概述通过对数据库中一张表的CRUD,将相应的操作结果渲染到页面上。

笔者通过这篇博客还原了项目(当然有一些隐藏的坑),然后将该项目上传到了Github、Gitee,在末尾会附上有源码地址,读者可参考。

该项目使用的是 Spring+SpringMVC+Mybaits(SSM)后端架构,POJO—Dao—Service—Controller的结构,简单易懂。

POJO:实体类层,封装的是数据中的设计的表对应的元素。Dao:Mapper的接口以及Mapper.xml文件,实现sql操作。Service:服务实现层,调用Dao层方法进行实现。Controller:控制层,调用一个个Service层的实现方法完成一个个具体功能。 项目使用了前端JS检错和后端JSR303参数校验,能把绝大部分的问题都包括其中。类似于输入信息错误以及输入信息不合法,违规跳转等,也加入了过滤器,使用户可以有更好的体验。

电影后台管理系统的管理员在工作中需要查阅和管理如下信息:后台管理的管理员、电影信息、新闻信息以及类型信息。如下图:

项目展示准备环境: IDEAMySQL 5.1.47Tomcat 9Maven 3.6要求: 掌握MySQL数据库掌握Spring掌握MyBatis掌握SpringMVC掌握简单的前端知识实现1.创建好项目架构 先创建好com.zc.xxx路径下的文件;resources资源文件夹下的文件可以先不创建,下面会逐步创建。

2.SSM架构这部分如果感兴趣,想知道具体操作,可以查看文章 《SSM整合》

3.POJO层因为设计的数据库中有4个表,分别是:user、type、news、film

所以对应创建四个实体类,这里部分举例

代码语言:javascript复制public class user {

private Integer id;

private String username;

private String paw;

private Integer tele;

private String email;

// 有参\有参方法

// Get\Set方法

// toString()

} news实体类中使用了JSR303检验机制,不加注解也是可以的

代码语言:javascript复制public class news {

@NotNull

private Integer ISDN;

@NotNull

private String title;

@NotNull

private String author;

@DateTimeFormat(pattern = "yyyy-MM-dd")

@Past

private Date date;

@NotNull

private String description;

// 有参\有参方法

// Get\Set方法

// toString()

} 在这些实体类中,我使用的是直接添加构造方法;如果觉得麻烦,可以使用Lombok插件

4.Dao层 每一个Dao类都分别对应着一个实体类的操作

Mapper接口+Mapper.xml

进行部分举例

代码语言:javascript复制public interface UserMapper {

/**

* 获取用户列表

* @return

*/

public List getUserList();

/**

* id查用户

* @return

*/

public user getUserById(int id);

/**

* 添加用户

* @param user

* @return

*/

public int insertUser(user user);

/**

* 修改用户个人信息

* @return

*/

public int upUser(user user);

/**

* 修改密码

* @param user

* @return

*/

public int uppaw(user user);

}代码语言:javascript复制

select * from film.user where id=#{id}

select>

insert into film.user (username,paw,tele,email) values (#{username},#{paw},#{tele},#{email})

insert>

update film.user set username = #{username},tele = #{tele},email = #{email} where id = #{id}

update>

update film.user set paw=#{paw} where id = #{id}

update>

mapper>5.Service层 每个Dao层也会有一个对应的Service实现层

进行部分举例

UserService

代码语言:javascript复制public interface UserService {

/**

* 得到全部User数据

* @return

*/

public List getUserList();

/**

* 插入一个User

* @param user

* @return

*/

public int insertUser(user user);

/**

* 更新用户信息

* @param user

* @return

*/

public int upUser(user user);

/**

* 更新用户密码

* @param user

* @return

*/

public int uppaw(user user);

/**

* 通过id查找用户

* @param id

* @return

*/

public user getUserById(int id);

}代码语言:javascript复制@Service

public class UserServiceimpl implements UserService{

@Autowired

private UserMapper userMapper;

@Override

public List getUserList() {

return userMapper.getUserList();

}

@Override

public int insertUser(user user) {

return userMapper.insertUser(user);

}

@Override

public int upUser(user user) {

return userMapper.upUser(user);

}

@Override

public int uppaw(user user) {

return userMapper.uppaw(user);

}

@Override

public user getUserById(int id) {

return userMapper.getUserById(id);

}

}6.Controller层 Controller层的代码都是实现具体功能的代码

因为代码过长,在此只举例User的Controller层代码

代码语言:javascript复制@Controller

public class UserController {

@Autowired

private HttpServletRequest request;

@Autowired

@Qualifier("userServiceimpl")

private UserService userService;

/**

* 登录

* @param username

* @param password

* @param code

* @return

*/

@RequestMapping("/Login")

public String getUserList(String username, String password, String code){

List userList = userService.getUserList();

for (user user : userList) {

System.out.println(user);

if(user.getUsername().equals(username)&&user.getPaw().equals(password)){

HttpSession session = request.getSession();

Object attribute = session.getAttribute(Constants.KAPTCHA_SESSION_KEY);

if(code.equals(attribute)){

session.setAttribute("user",user);

return "main.jsp";

}else {

request.setAttribute("mgs", "验证码错误");

return "index.jsp";

}

}

}

// System.out.println(user.getUsername()+"-----"+user.getPaw());

request.setAttribute("mgs", "用户名或密码错误");

return "index.jsp";

}

/**

* 注销

* @return

*/

@RequestMapping("/exit")

public String exit(){

request.getSession().removeAttribute("user");

return "index.jsp";

}

/**

* 注册

* @param user

* @return

*/

@RequestMapping("/register")

public String insertUser(user user){

List userList = userService.getUserList();

for (user user1 : userList) {

if (user1.getUsername().equals(user.getUsername())){

request.setAttribute("mgs1", "已经存在该用户");

return "index.jsp";

}else {

System.out.println(user);

userService.insertUser(user);

return "index.jsp";

}

}

return "index.jsp";

}

/**

* 修改用户信息

* @param user

* @return

*/

@RequestMapping("/upUser")

public String upUser(user user){

int i = userService.upUser(user);

System.out.println(user+"-----"+i);

if (i>0){

user user1 = userService.getUserById(user.getId());

request.getSession().setAttribute("user",user1);

request.setAttribute("mgs4","修改成功");

return "person/person_info.jsp";

}else{

request.setAttribute("mgs4","修改失败");

return "person/person_info.jsp";

}

}

/**

* 修改密码

* @param user

* @return

*/

@RequestMapping("/uppaw")

public String uppaw(user user, String paw1){

user userById = userService.getUserById(user.getId());

System.out.println(user+"----------"+paw1);

if(userById.getPaw().equals(paw1)){

userService.uppaw(user);

user user1 = userService.getUserById(user.getId());

request.getSession().setAttribute("user",user1);

request.setAttribute("mgs3","修改密码成功");

return "person/updatepwd.jsp";

}else{

request.setAttribute("mgs3","输入原始密码不对");

return "person/updatepwd.jsp";

}

}

} 该项目地址为:

Github:https://github.com/MoYu-zc/Film_manage

Gitee:https://gitee.com/MoYu-zc/film_manage 个人博客为:

MoYu’s HomePage

MoYu’s Gitee Blog

相关文章

365用什么浏览器登录 爱神爱神在哪里(复古版)

爱神爱神在哪里(复古版)

🗓️ 01-22 👁️ 4655
365bet网络足球赌博 小腿比大腿白很多是怎么回事

小腿比大腿白很多是怎么回事

🗓️ 09-05 👁️ 5430
365bet网络足球赌博 秒转小时转换器

秒转小时转换器

🗓️ 06-22 👁️ 4743
365bet账号被限制 2023年如何轻松截取电影截图

2023年如何轻松截取电影截图

🗓️ 10-06 👁️ 8631
365bet网络足球赌博 如何在微信群中使用微信艾特所有人功能详细指南
365用什么浏览器登录 邪恶镰刀 – Dota 2物品指南[7.40c]

邪恶镰刀 – Dota 2物品指南[7.40c]

🗓️ 02-07 👁️ 2812