作为一个无Java基础的程序员,需要在较短时间内投入项目编写,如果从ssm框架的底层原理进行逐步了解学习是不现实,所以在此分享一下我自己对ssm框架的学习过程,以及对ssm框架的粗浅理解。
首先说一下ssm框架是干嘛的,我对其初步的理解是:接受客户端的操作数据,经过已编写好的逻辑运算规则,操作数据库返回给客户端数据,或返回给客户端视图(一个新的页面)。
现在来说一下我要表达的重点——ssm框架工作的原理:
客户端发送请求,后台服务器接受到请求首先被控制层(Controller)拦截,根据映射关系调用业务层(Service)的方法,找到逻辑层(ServiceImpl) ,然后通过持久层(Mapper / Dao)获取对象,对数据库进行操作,查询到的结果存储在实体类(Entity)中,最后这个结果数据会被一层一层的返回到客户端。当然如果你只想请求一个简单的页面跳转,直接在控制层返回一个视图就好了!
说道这里,你或许会觉得这个层、那个层的完全没概念,这个没关系的,现在就以一个简单的项目给大家来点实质的感觉。
目录结构:
现在有一个需求:进入登录页面,在登录页面进行登录操作
第一步:进入到登录页面
package cn.com.dawnpro.demo.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import cn.com.dawnpro.demo.entity.User;
import cn.com.dawnpro.demo.service.UserService;
@Controller
public class UserController extends AbstractController{
@Resource
private UserService userService;
@RequestMapping("/toLogin.do")
public String toLogin(){
return "login";
}
}
这里就只是一个页面跳转,客户端发送一个请求(127.0.0.1:8080/demo/toLogin.do),服务器端接收到请求,控制层(controller)拦截到"/toLogin.do"这个消息,返回给客户端一个视图(网页界面)"login",当然这个login必须是一个已经存在的.html文件或者.jsp文件。当然这里为啥会拦截"/toLogin.do",以及返回到客户端的具体是.html还是.jsp,这个就看你配置文件里怎么设置了。
进入到登录页面,我们就可以进行登录操作了。
第二步:登录成功进入到主页
1.控制层(Controller)
@RequestMapping("/login.do")
@ResponseBody
public void login(String mail,String password,HttpSession session,HttpServletRequest request){
User user=userService.login(mail, password);
session.setAttribute("user", user.getName());
}
2.业务层(Service)
package cn.com.dawnpro.demo.service;
import java.util.List;
import cn.com.dawnpro.demo.entity.User;
public interface UserService {
public User login(String mail,String password);
}
3.逻辑层(ServiceImpl)
package cn.com.dawnpro.demo.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cn.com.dawnpro.demo.dao.UserDao;
import cn.com.dawnpro.demo.entity.User;
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public User login(String mail, String password) {
User user=userDao.findUser(mail,password);
return user;
}
}
4.持久层(Mapper / Dao)
package cn.com.dawnpro.demo.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import cn.com.dawnpro.demo.entity.User;
@Repository
public interface UserDao {
public User findUser(String mail,String password);
}
5.数据库操作配置(mapping.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.com.dawnpro.demo.dao.UserDao">
<select id="findUser" parameterType="string" resultType="cn.com.dawnpro.demo.entity.User">
select * from user where mail=#{mail} and password=#{password}
</select>
</mapper>
6.实体类(Entity)
package cn.com.dawnpro.demo.entity;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
public int uid;
public String name;
public String mail;
private String password;
public int getUid()
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getPassword(){
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(int uid, String name, String mail, String password) {
super();
this.uid = uid;
this.name = name;
this.mail = mail;
this.password = password;
}
public User() {
super();
}
@Override
public String toString() {
return "User [uid=" + uid + ", name=" + name + ", email=" + mail + ", password=" + password + "]";
}
}
好了,这基本上就是一个简单请求的ssm框架的基本工作流程了,我这里只要是为了阐述这个工作过程,至于其中复杂的验证过程默认为验证通过,以及相关的配置也是默认已经配好了。
现在你是不是对ssm框架有了清晰的结构了解呢?如果觉得有帮助的话,请给我一个赞吧!毕竟第一次写手记
热门评论
这和SSM没啥关系,这就是mvc而已
这和SSM没啥关系,这就是mvc而已
我们公司的项目把异常捕获放到了impl里.业务逻辑通常放到模型层,