最常用的注解@Repository、@Service、@Controller
@Repository 它用于将数据访问层 (DAO层) 的类标识为 Spring Bean
@Service 通常作用在业务层
@Constroller 通常作用在控制层
×这些注释都需要在配置文件中配置才能起到一些特定的作用×
代码写在service和controller区别
service里有'事物',在报错时会有'回滚'操作,循环体内都不会执行。
controller里执行了几条就返回几条结果,报错后不再执行;
SpringMVC总结
使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值
使用@PathVariable时,URL是这样的:http://host:port/path/参数值
一,springMVC接收前台参数
**取json的值时 这样写
//前台
var data={}
data.name = name;
data.password = password;
//后台,required = false表示可以不传true为必须传
public String sharer( @RequestParam(required = false)String password, @RequestParam("pass")String password) {
syso(name);
syso(password)
}
//后台也可以直接接收(json里的名字要和接收的名字一样)
public String sharer( String password, String password) {
syso(name);
syso(password)
}
1,使用HttpServletRequest获取
@RequestMapping("/sharer")
public String sharer(HttpServletRequest request){
Long id = Long.parseLong(request.getParameter("id"));
Integer userId = Integer.parseInt((String) request.getParameter("checkinId"));
String name = request.getParameter("name")
}
2,Spring会自动将表单参数注入到方法参数
//和表单的name属性保持一致
@RequestMapping("/sharer")
//表单属性是pass,用变量password接收
public String sharer(String name, @RequestParam("pass")String password) {
syso(name);
syso(password)
}
3,自动的bean注入
<form action="sharer">
用户名:<input name="name"/>
密码:<input name="pass"/>
<input type="submit" value="登陆">
</form>
//封装的User类
public class User{
private String name;
private String pass;
}
@RequestMapping("/sharer")
public String login(User user)
{
syso(user.getName());
syso(user.getPass());
}
4,url带参
@RequestMapping(value = "/uploadPages/{id}", method = RequestMethod.GET)
public String uploadPages(@PathVariable("id") Long id, Model model) {
Sharer sharer = new Sharer();
sharer = sharerService.getSharerById(id);
return "sharer/upload";
}
二.springMVC向页面传值:
当Controller组件处理后,向jsp页面传值,
1,使用HttpServletRequest 和 Session 然后setAttribute(),就和Servlet中一样
2,使用ModelAndView对象
3,使用ModelMap对象
4,使用@ModelAttribute注解
1,Model数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/sharer")
public ModelAndView sharer(String name,String pass){
User user = userService.login(name,pwd);
Map<String,Object> data = new HashMap<String,Object>();
data.put("user",user);
return new ModelAndView("success",data);
}
2,使用ModelMap参数对象示例:
ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do")
public String login(String name,String pass ,ModelMap model){
User user = userService.login(name,pwd);
model.addAttribute("user",user);
model.put("name",name);
return "success";
}
3,使用@ModelAttribute示例
在Controller方法的参数部分或Bean属性方法上使用
@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do")
public String login(@ModelAttribute("user") User user){
//TODO
return "success";
}
@ModelAttribute("name")
public String getName(){
return name;
}
4,Session存储:
可以利用HttpServletReequest的getSession()方法
@RequestMapping("/login.do")
public String login(String name,String pwd ModelMap model,HttpServletRequest request){
User user = serService.login(name,pwd);
HttpSession session = request.getSession();
session.setAttribute("user",user);
model.addAttribute("user",user);
return "success";
}