@RequestMapping(value = "/login")
//相当于xml路径,将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。
//访问login.jsp时,访问LoginController中的方法
@RequestMapping(value = "/index4", method = RequestMethod.GET)
method = RequestMethod.GET 代表get方式访问
@Autowired 相当于与下一层进行联系
private MenuService menuService;
Private static final long serialVersionUID=-2185628190364829983L;
/*serialVersionUID 用来表明类的不同版本间的兼容性。
如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private static final long serialVersionUID这个属性,具体数值自己定义。
javabean对象只要继承了Serializable接口,在序列化时都会有个唯一标识,用来区分各个版本.这个唯一的标识就是serialVersionUID属性指定的;默认情况下可以不指定,但是推荐指定; 比如用IDE:JB开发,不会有任何问题;但是如果又用IDE:Eclipse开发,则会有warning级别的提示。
@Autowired // 相当于 new service对象
//与service建立练联系是用在JavaBean中的注解,通过byType形式,
//用来给指定的字段或方法注入所需的外部资源。
实体类:
@Entity //对实体注解
@Table(name="car_system_admin")//声明此对象映射到数据库对应的表名称 name=表名称
@NamedQuery(name="CarSystemAdmin.findAll", query="SELECT c FROM CarSystemAdmin c")
//在实体类中定义命名查询。中的属性name指定命名查询的名称,query属性指定命名查询的语句。
@Id //声明这是主键
@Column(name="admin_id") //column 声明该属性与数据库字段的映射关系。数据库字段名
private String adminId;
@Temporal(TemporalType.TIMESTAMP) //实体类会封装成完整的时间“yyyy-MM-dd hh:MM:ss”的 Date类型。
@Transient //非数据库字段表示该属性并非一个到数据库表的字段的映射,
//ORM框架将忽略该属性. 如果一个属性并非数据库表的字段映射,
//就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic
pwd = DigestUtils.md5DigestAsHex((pwd+admin.getSalt()).getBytes());
加密的参数值直接进行加密处理
在方法中:
return "redirect:/login/toLogin"; //重定向:login是指根目录,在转到tologin这个方法
return "/sys/login"; //跳转页面
@ModelAttribute:
①绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用。
其实 @ModelAttribute 此处对于供视图页面展示来说与 model.addAttribute("attributeName", abc); 功能类似。
②暴露@RequestMapping 方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。
③暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择的所在城市等,而且在执行功能处理方法( @RequestMapping 注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用;
@ResponseBody 返回一个josn,调用ajax返回奇函数