增删改查
这些代码都是需要在dao层实现的 ,然后在service层里面用dao去调用一个个方法将需要传输的数据return出去
public List<SysUserInfo> getUserList() {
String sql = "select *from sys_user";
return jdbctemplate.query(sql, new BeanPropertyRowMapper<SysUserInfo>(SysUserInfo.class));
}
查询操作,返回一个 RowMapper类型的list
public void insertUserInfo(SysUserInfo su) {
String sql = "insert into sys_user(user_name,passwd,salt,real_name,avatar,phone,email,gender,locked,create_time) values(?,?,?,?,?,?,?,?,?,now())";
jdbctemplate.update(sql,su.getUserName(),su.getPasswd(),su.getSalt(),su.getRealName(),su.getAvatar(),su.getPhone(),su.getEmail(),su.getGender(),0);
}
插入操作
public void alter(SysUserInfo su) {
String sql = "update sys_user set user_name=?,real_name=?,passwd=?,phone=?,email=?,gender=? where user_id=? ";
jdbctemplate.update(sql,su.getUserName(),su.getRealName(),su.getPasswd(),su.getPhone(),su.getEmail(),su.getGender(),su.getUserId());
}
修改操作
public void del(int userId) {
String sql = "delete from sys_user where user_id=?";
jdbctemplate.update(sql,userId);
}
删除操作
隐藏自己的真实路径
可以在前端控制器所包含的那个xml配置文件中(也就是说配置视图解析器的xml文件)我们可以通过mvc标签修改访问路径 但是这个xml配置文件头部一定要将mvc标签包含进去
<mvc:view-controller path="/userAdd" view-name="user/add"/>
view-name 也就是我们在controller里面的那个返回值,视图解析器也起作用,我们只需要写出中间部分即可
接收数据
一定要注意配置过滤器,否则传递的数据会乱码也可以直接在web的xml配置文件中配置字符的过滤器
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
1.通过HttpServletAPI原生对象接收数据(也就是HttpServletRequest和HttpServletResponse或者HttpServletSession等等)
通过这种方法获取的时候需要在参数声明
public String add(HttpServletRequest request) {
String name = request.getParamter("name");
}
然后便可以在这个方法中去获得参数
2.@RequestPara注解方式(这个是要加在参数里面的,并且会自动将我们的类型转换)
> 通过@RequestParam 获取用户提交的参数,
参数name 和 value表示 提交数据属性名称
required,当required为true, 用户没有提交对应的属性值,则会报异常
defaultValue:通过defaultValue 可以为变量设置默认值
当变量名与提交的数据属性名相同时,可以省略@RequestParam,
spring mvc 会将数据类型自动转换。
public String add(@RequestParam("userName") String Name,@RequestParam("age") int age) {
System.out.println("传递的名字" + Name);
System.out.println("传递的年龄" + age);
return "ok";
}
如果说,你在参数里面写了几个传入的参数,那么你的jsp页面提交的时候所需要传入的参数不能为空,一定要有值。否则页面会报错400
我们可以设置默认值 防止未传值报错,也就是当传入为空或者为null时 该属性便是默认值。
@RequestParam(value="userName",defaultValue="zcc") String Name
当我们不提交的时候,这时候 Name就是zcc
在采用这种方法的时候,其实注解是可以省略掉的,传输的数据直接传入参数就行,但是!!! 传入的时候参数的属性名一定要与jsp页面的name属性值相同
public String add(String userName, int age)
3.封装成一个javaBean对象传入进来
public String add(UserInfo us) {
System.out.println(us);
return "ok";
}
UserInfo里面的属性名和jsp标签中的name属性值相同
跳转
这里是引用
@RequestMapping("/del")
public String del(SysUserInfo us) {
userService.del(us.getUserId());
return "redirect:list";
}
@RequestMapping("list")
public String list(Map<String,Object> map) {
map.put("userList", userService.getUserList());
return "user/list";
}
在打开del 的时候,在删除完成后,会跳转到list链接里面去如果要跳到另外一个控制器(也就是另外一个Controller类)的时候,多加一个controller的路径即可 也就是redirect:路径/list。也就是response.sendRedirect(“path”)
return "forward:list";
这里是服务器端跳转方式相当于request.getRequestDispatcher(“path”).forward(request, response);