ssm项目(一)

前言:前段时间将ssm整合做完一个ssm项目,今天全部复盘一下。

ssm项目---》比较适合新手整合

一:项目分两个模块

1.用户的curd,批量操作,分页操作

涉及到的技术:SpringMVC,mybatis,Spring,Mysql

SpringMVC框架:负责编写Controller层,同时与前端页面进行数据交互。

mybatis框架:负责mysql数据的curd

Spring框架:核心的功能就是提供IOC容器,DI注入,事务管理。

成品如下:

2.用户的登录,注册

涉及到的技术ajax,jQuery

ajax:负责表单的异步提交,进行数据验证。

jQuery:该项目中主要的功能运用DOM编程来选取标签对象,获取值/设置值。

成品如下:

这个页面要实现的功能,ajax异步数据验证进行用户名/密码判空,判重。

这个页面要的功能:图片的ajax提交回显,各个输入框的数值判断。

将各个配置文件配置好,将各个包创建好,项目结构如下

OK!!!Let's do it!!!

二:项目的Dao层编写

首先看一下,我们的用户user有四个属性:id,name,age,birth,birthStr(用来保存String的Date)

先创建pojo

public class user {
	private Serializable id;
	private String name;
	private int age;
	private Date birth;
	//Date的数据如不做如何处理是这样的:Sat Oct 13 19:03:00 CST 2018
	//不是我们所要的,所以多写个属性保存处理之后的Date数据
	private String birthStr; 
    //get..set略去
}

OHOHO,这里说一下,因为pojo内涉及Date数据类型,SpringMVC无法自动转换,需要自定义converter,

不会看这里:https://mp.csdn.net/postedit/83017319

然后创建userDao接口,以及userDao.xml映射文件

userDao

public interface userDao {
	//保存一个
	public void save(user user);
	//根据id查询一个
	public user findById(Serializable id);
	//根据id删除一个
	public void deleteById(Serializable id);
	//更新一名用户
	public void update(user user);
	//查询所有用户
	public List<user> findAll();
	//根据名称来查询
	public user findByName(String name);
	//根据id集合来删除
	public void deleteByList(@Param("array")String[] idlist);
}

userDao.xml中进行sql映射

​
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" 
			"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.userDao">

	<delete id="deleteByList" parameterType="java.lang.String">
		delete from t_user where id in 
		<foreach collection="array" item="id" open="(" separator="," close=")">
			#{id}
		</foreach>
	</delete>

	<select id="findByName" resultType="bean.user">
	select * from t_user where name=#{name} 		
	</select>

	<select id="findAll" resultType="bean.user">
	select * from t_user
	</select>		
		
	<insert id="save">
	insert into t_user values(null,#{name},#{age},#{birth})
	</insert>
	
	<select id="findById" resultType="bean.user">
	select * from t_user where id=#{id}
	</select>
	
	<update id="update">
	update t_user set name=#{name},age=#{age},birth=#{birth} where id=#{id}
	</update>
	
	<delete id="deleteById">
	delete from t_user where id=#{id}
	</delete>
	
</mapper>

​

ok,Dao就编写好了。

三:项目Service层的编写

这一层比较简单,在Service包,serviceImpl包中将操作进行包装

UserService

public interface UserService {
	//保存一个
	public void save(user user);
	//根据id查询一个
	public user findById(Serializable id);
	//根据id删除一个
	public void deleteById(Serializable id);
	//更新一名用户
	public void update(user user);
	//查询所有用户
	public List<user> findAll();
	//根据名字查询
	public user findByName(String name);
	//根据集合id删除
	public void deleteByArr(String[] list) ;
}

UserServiceImpl

@Service
public class UserServiceImpl implements UserService {
	@Resource
	private userDao userDao;

	@Override
	public user findById(Serializable id) {
		user user = userDao.findById(id);
		if(user.getBirth()!=null) {
			user.setBirthStr(new SimpleDateFormat("yyyy-MM-dd").format(user.getBirth()));
		}
		return user;
	}

	@Override
	public void save(user user) {
		userDao.save(user);
	}

	@Override
	public void deleteById(Serializable id) {
		userDao.deleteById(id);
	}

	@Override
	public void update(user user) {
		userDao.update(user);
	}

	@Override
	public List<user> findAll() {
		List<user> list = userDao.findAll();
		for (user user : list) {
			user.setBirthStr(new SimpleDateFormat("yyyy-MM-dd").format(user.getBirth()));
		}
		return list;
	}


	@Override
	public user findByName(String name) {
		return userDao.findByName(name);
	}

	@Override
	public void deleteByArr(String[] list) {
		userDao.deleteByList(list);
	}

}

OK,Service层写好了

四:项目的view层编写

主要涉及的jsp页面,主页(index.jsp),添加页面add.jsp,修改页面update.jsp

index.jsp

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script type="text/javascript">
	function deleteItems() {
        //ajax是对多选框的判断,数值的获取,提交。
		var checkedNum = $("input[name='delete_id']:checked").length;
		alert(checkedNum);
		if(checkedNum==0){
			alert("至少选择一条数据");
			return false;
		}
		if(confirm("确认删除所选择的数据")){
            var checkedList = new Array();
            $("input[name='delete_id']:checked").each(function(){
                checkedList.push($(this).val());
            });
            $.ajax({
                type:"POST",
                url:"deleteItems",
                data:{"delitems":checkedList.toString()},
                datatype:"html",
                success:function(data){
                	alert("成功");
                },
                error:function(data){
                    art.dialog.tips('删除失败!');
                }
            });

		}
	}
</script>
</head>
<body>
	欢迎
	<br>
	<a href="login.jsp">退回登入</a>
	<div style="color: red">
		<a href="add.jsp">添加用户</a> <input type="button" value="批量删除"
			onclick="deleteItems()">
	</div>
	<form action="turnPage" method="get">
		<table align="center" bordercolor="red" border="1">
			<tr>
				<th colspan="6">用户表</th>
			</tr>
			<tr>
				<td>批量操作</td>
				<td>用户编号</td>
				<td>用户名称</td>
				<td>用户年龄</td>
				<td>用户出生</td>
				<td>操作</td>
			</tr>
			<c:forEach items="${users }" var="user">
				<tr>
					<td><input type="checkbox" id="delete_id" name="delete_id"
						value="${user.id }"></td>
					<td>${user.id }</td>
					<td>${user.name }</td>
					<td>${user.age }</td>
					<td>${user.birthStr }</td>
					<td><a
						href="findById">修改</a>
						<a href="delete?id=${user.id }">删除</a></td>
				</tr>
			</c:forEach>
		
		</table>
	</form>
</body>
</html>

update.jsp

修改的页面:点击修改--》fingById()方法--》再来当update页面的默认值

<body>
	欢迎来到修改页面,${findById.name }
	<form action="update" method=post>
		<table border="2" align="center">
			<tr>
				<th colspan="2">修改表</th>
			</tr>
			<tr>
				<td>用户编号</td>
				<td><input type="text" value="${findById.id }" name="id"
					readonly="readonly"></td>
			</tr>
			<tr>
				<td>用户名称</td>
				<td><input type="text" value="${findById.name }" name="name"></td>
			</tr>
			<tr>
				<td>用户年龄</td>
				<td><input type="text" value="${findById.age }" name="age"></td>
			</tr>
			<tr>	
				<td>出生年月</td>
				<td><input type="text" value="${findById.birthStr }" name="birth"></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" value="提交"></td>
			</tr>
		</table>
	</form>
</body>

add.jsp

<body>
欢迎来到添加页面
<form action="add" method="post">
	<table align="center">
		<tr>	
			<th colspan="2">添加用户表格</th>
		</tr>
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="name"></td>
		</tr>
		<tr>
			<td>年龄:</td>
			<td><input type="text" name="age"></td>
		</tr>
		<tr>
			<td>出生年月</td>
			<td><input type="text" name="birth"></td>
		</tr>
		<tr>
			<td colspan="2" align="center"><input type="submit" value="提交"></td>
		</tr>
	</table>
</form>

五:项目Controller层的编写

@Controller
public class userController {
	@Autowired
	private UserService UserServiceImpl;
	

	@RequestMapping(value = "/deleteItems")
	public String deleteItems(HttpServletRequest request,String delitems) {
		String[] idlist = delitems.split(",");
		UserServiceImpl.deleteByArr(idlist);
		return "redirect:/main";
	}

	@RequestMapping(value = "main")
	public String main(Model model) {
		model.addAttribute("users", UserServiceImpl.findByPager(pager));
		return "jsp/index";
	}



	@RequestMapping(value = "add")
	public String add(user user) {
		UserServiceImpl.save(user);
		return "redirect:/main";
	}

	@RequestMapping(value = "delete")
	public String delete(String id) {
		UserServiceImpl.deleteById(id);
		return "redirect:/main";
	}


	@RequestMapping(value = "/findById")
	public String findById(@Param("id") String id, Model model) {
		model.addAttribute("findById", UserServiceImpl.findById(id));
		return "jsp/update";
	}

	@RequestMapping(value = "/update")
	public String update(Model model, user user) {
		UserServiceImpl.update(user);
		return "redirect:/turnPage";
	}
}

OK,Dao层,Controller层,view层,service层编写好了,就可以进行简单的curd。

下篇写分页功能的添加。

 

 

 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值