JavaWeb后台编程——基于SSM框架

本人也是才开始学习,写博客记录学习过程以及记录一些注意关键点。

环境不是本人搭建的,我就直接记录SSM框架下主包要写什么,以下是我学习的理解,有不对的地方可以指正出来:
项目主包:
controller——控制层,连接后台和前台的数据操作(各种逻辑判断)
mapper——用于映射
entity——定义对应数据库内容的实体类
service——服务层,实现具体功能
要完成一个功能:
1、先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
2、写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
3、写Mapper.java,将Mapper.xml中的操作按照id映射成Java函数。
4、写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。
5、写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。
6、写JSP页面调用,请求哪些参数,需要获取什么数据。

DataBase ===> Entity ===> Mapper.xml ===> Mapper.Java ===> Service.java => Serviceimpl.java=> Controller.java ===> Jsp
以下代码都只是表达基本意思,导入包我没有显示,一般IDE编辑器会自动导入存在的包,在我认为重要的地方写中文注释:
一、写实体类entity,定义对象的属性:

public class TB_AD {
//最主要就是与数据库中内容的表头相对应
	private int id;
	private int fromdev;

public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public int getFromdev() {
	return fromdev;
}

public void setFromdev(int fromdev) {
	this.fromdev = fromdev;
}
}

二、写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、select、delete、update等。
id——给这个命一个名字以供mapper.java定义接口时的函数名
parameterType——这个是传入数据的类型定义(普通类型int、String、double…)(还有就是调用unity层定义的封装类)
resultType——这个是对输出函数类型的定义,同上。

<!-- 增加 -->
<!--parameterType是实体类dao的绝对路径,但是我在xml中配置开启了别名,就省略了前面,写的相对于xingluo.navigate.entity的路径-->
<insert id="addAd" parameterType="TB_AD">
	<!--  默认参数 -->
	insert into tb_ad(id,fromdev,destID,px) values(#{param1},#{param2},#{param3},#{param4})
	<!--
	固定参数名 
	insert into tb_dev(id,fromdev,destID,px) values(#{id},#{fromdev},#{destID},#{px}) 
	-->
</insert>

<!-- 删除 -->
<delete id="deleteAd" parameterType="int">
      delete from tb_ad where id=#{id}   
</delete>

<!-- 修改 -->
 <update id="updateAd" parameterType="TB_AD" > 
 	update tb_ad set id=#{id},fromdev=#{fromdev},destID=#{destID},px=#{px} where id=#{id} 
 </update>

<!-- 查询 -->
<select id="selectById" parameterType="int" resultType="TB_AD">
	SELECT * FROM tb_ad where id=#{id}
</select>

<select id="list" parameterType="String" resultType="TB_AD">
	SELECT * FROM tb_ad
</select>
三、写Mapper.java,将Mapper.xml中的操作按照id映射成Java函数。

@Param——可以将传进的数据进行固定参数名,以便xml中轻松辨认

public interface TB_DESTMapper {
	//增加
	void addDest(int id,String destname,double lng,double lat);
	//可以注释,将id,destname,lng,lat固定
	//void addDest(@Param("id")int id,@Param("destname")String destname,@Param("lng")double lng,@Param("lat")double lat);
	
//删除
void deleteDest(@Param("id")int id);

//修改
void updateDest(@Param("id")int id,@Param("destname")String destname,@Param("lng")double lng,@Param("lat")double lat);

//查询
List<TB_DEST> selectByName(@Param("destname")String destname);
List<TB_DEST> list();

}

四、写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。

这个主要就是定义service的接口,一般函数名与mapper.java中函数名一样,方便对应

public interface TB_DESTService {
	//增加
void addDest(int id, String destname, double lng, double lat);

//删除
void deleteDest(int id);

//修改
void updateDest(int id, String destname, double lng, double lat);

//查询
List<TB_DEST> getDestByName(String destName);
List<TB_DEST> list();

}

五、写Serviceimpl.java, service的具体实现

@Service——用于标注业务层组件,如果一个类自动带了@Service注解,将自动注册到Spring容器,不需要再在application.xml文件定义bean了
@Autowired—— @Autowired注解的作用是解决对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
@Override—— 1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。

@Service
public class TB_DESTServiceimpl implements TB_DESTService {
	
	@Autowired
	TB_DESTMapper tbdest;

	//添加数据
	@Override
	public void addDest(int id,String destname,double lng,double lat) {
		tbdest.addDest(id,destname,lng,lat);
	}
	
	//删除
	@Override
	public void deleteDest(int id) {
		tbdest.deleteDest(id);
	}
	
	//修改
	@Override
	public void updateDest(int id, String destname, double lng, double lat) {
		tbdest.updateDest(id, destname, lng, lat);
	}
	
	//各种查找数据
	@Override
	public List<TB_DEST> getDestByName(String destname) {
		return tbdest.selectByName(destname);
	}
	@Override
	public List<TB_DEST> list() {
		return tbdest.list();
	}
	
}

六、写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。
@Controller——Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了RequestMapping 注解。Controller 只是定义了一个控制器类,而使用RequestMapping 注解的方法才是真正处理请求的处理器。
@RequestMapping——RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@Controller
public class DestinationControl {
	
	@Autowired
	TB_DESTService tbdest;
	
	//查询
	//跳转到destination页面,列出设备名称
	@RequestMapping("/destination")
	public String destination(Model model) {
		List<TB_DEST> list = tbdest.list();
		model.addAttribute("list",list);
		return "destination";
	}
	@RequestMapping("/selectByDestName")
	public String destinationUpdate(HttpServletRequest req,HttpServletResponse resq,Model model)throws ServletException, IOException{
		req.setCharacterEncoding("UTF-8");
		String destname=req.getParameter("destname");
		
		List<TB_DEST> list = tbdest.getDestByName(destname);
		model.addAttribute("list",list);
		return "destination";
	}
	@RequestMapping("/routeSelectByDestName")
	public String routeSelectByDestName(HttpServletRequest req,HttpServletResponse resq,Model model)throws ServletException, IOException{
		req.setCharacterEncoding("UTF-8");
		String destname=req.getParameter("destname");
		
		List<TB_DEST> list = tbdest.getDestByName(destname);
		model.addAttribute("list",list);
		return "route-selectDest";
	}
	
	//跳转到destination-add界面
	@RequestMapping("/destination-add")
	public String destinationAdd(Model model){
		return "destination-add";
	}
	
	//增加
	@RequestMapping("/addDest")
	public String add(HttpServletRequest req,HttpServletResponse resq,Model model) throws ServletException, IOException{
		
		req.setCharacterEncoding("UTF-8");
		
		//获取前台数据,强制转换类型
		int id=Integer.parseInt(req.getParameter("id"));
		String destname=req.getParameter("destname");
		double lng=Double.parseDouble(req.getParameter("lng"));
		double lat=Double.parseDouble(req.getParameter("lat"));
		
		tbdest.addDest(id,destname,lng,lat);
		
		List<TB_DEST> list = tbdest.list();
		model.addAttribute("list",list);
		return "destination";
	}
	
	//删除
	@RequestMapping("/deleteDest")
	protected String deleteDest(HttpServletRequest request, HttpServletResponse response,Model model) throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		//接受前端传来的id
		int id=Integer.parseInt(request.getParameter("id"));
		
		tbdest.deleteDest(id);
		
		List<TB_DEST> list = tbdest.list();
		model.addAttribute("list",list);
		return "destination";
	}
	
	
	//修改
	@RequestMapping("/destUpdate")
	public String update(HttpServletRequest req,HttpServletResponse resq,Model model)throws ServletException, IOException{
		req.setCharacterEncoding("UTF-8");
		String destname=req.getParameter("destname");
		
		List<TB_DEST> list = tbdest.getDestByName(destname);
		model.addAttribute("list",list);
		
		return "destination-update";
	}
	@RequestMapping("/updateDest")
	public String updateDest(HttpServletRequest req,HttpServletResponse resq,Model model) throws ServletException, IOException{
		
		req.setCharacterEncoding("UTF-8");
		
		//获取前台数据,强制转换类型
		int id=Integer.parseInt(req.getParameter("id"));
		String destname=req.getParameter("destname");
		double lng=Double.parseDouble(req.getParameter("lng"));
		double lat=Double.parseDouble(req.getParameter("lat"));
		
		tbdest.updateDest(id, destname, lng, lat);
		
		List<TB_DEST> list = tbdest.list();
		model.addAttribute("list",list);
		return "destination";
	}	
	
}

七、写JSP页面调用,请求哪些参数,需要获取什么数据。

这个主要是前台编写,我只是实现 增、删、改、查 基本功能只能大概看一下。。。。。

最后附上几张截图:
在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值