spring mvc controller接收请求值及controller之间跳转及传值

我的想法:radio判断:@RequestMapping(value="/choose")@ResponseBodypublicStringfindalllab(Stri... 我的想法:
radio判断:
@RequestMapping(value="/choose")
@ResponseBody
public String findalllab(String username ,String password, int quanxian){
if (quanxian==1) {
return "/Student/welcome";

if (quanxian==2) {
return "/User/welcome";
} else {
return "/error";
}

}

学生登录:
public class StudentController {

@Autowired
StudentService studentservice;

@RequestMapping("/welcome")
public String login(String sname, String sword,String sgrade, Map<String, Object> map) {
System.out.println(sname);
if (studentservice.login(sname, sword)) {
map.put("sname", sname);
return "/frame1";
} else {
return "/error1";
}
}

管理员登录:
@RequestMapping("/welcome")
public String login(String username, String password, Map<String, Object> map) {
System.out.println(username);
if (userservice.login(username, password)) {
map.put("username", username);
return "/frame";
} else {
return "/error";
}
}
这样是运行不了的,有没有帮我修改下或者提供更好的方法,万分感谢!
jsp登录界面代码
展开
 我来答
gcaijiuh90
2017-04-11 · TA获得超过248个赞
知道小有建树答主
回答量:337
采纳率:100%
帮助的人:240万
展开全部
Spring接收请求参数:
1,使用HttpServletRequest获取
Java代码 收藏代码
@RequestMapping("/login.do")
public String login(HttpServletRequest request){
String name = request.getParameter("name")
String pass = request.getParameter("pass")
}
2,Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。和Struts2一样
Java代码 收藏代码
@RequestMapping("/login")
public String login(HttpServletRequest request,
String name,
@RequestParam("pass")String password) // 表单属性是pass,用变量password接收
{
log.info(name);
log.info(password)
}
3,自动注入Bean属性
Java代码 收藏代码
<form action="login">
用户名:<input name="name"/>
密码:<input name="pass"/>
<input type="submit" value="登陆">
</form>
//封装的User类
public class User{
private String name;
private String pass;
}
Java代码 收藏代码
@RequestMapping("/login")
public String login(User user)
{
log.info(user.getName());
log.info(user.getPass());
}
向页面传值:
当Controller组件处理后,向jsp页面传值,
1,使用HttpServletRequest 和 Session 然后setAttribute(),就和Servlet中一样
2,使用ModelAndView对象
3,使用ModelMap对象
4,使用@ModelAttribute注解
Model数据会利用HttpServletRequest的Attribute传值到success.jsp中
Java代码 收藏代码
@RequestMapping("/login")
public ModelAndView login(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);
}
使用ModelMap参数对象示例:
ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中
Java代码 收藏代码
@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";
}
使用@ModelAttribute示例
在Controller方法的参数部分或Bean属性方法上使用
@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中
ModelMap对象的 addAttribute,put两个方法有什么区别就是 addAttribute是不允许添加空值的key,put是允许的
Java代码 收藏代码
@RequestMapping("/login.do")
public String login(@ModelAttribute("user") User user){
//TODO
return "success";
}
@ModelAttribute("name")
public String getName(){
return name;
}
Session存储:
可以利用HttpServletReequestwww.scjgcj.comgetSession()方法
Java代码 收藏代码
@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";
}
Spring MVC contorller跳转到另一个controller并传值
示例均从createOrderForOld跳转到createOrder
1: forward 请求转发
@RequestMapping(value ="/createOrderForOld")
public String createOrder(HttpServletRequest request,ModelMapmodel) {
return"forward:/createOrder";
}
@RequestMapping(value ="/createOrder")
public String createOrder(String oderId,String orderName,ModelMap model) {
return"index;
}
forward跳转,是请求转发,参数自动跳转,所以当:8080/my-app/createOrderForOld?orderId=123 该链接请求createOrderForOld接口后 请求转发到createOrder接口时,参数自动带过来了,createOrder中oderId自动赋值为“123”,参数名称需一致,否则无法传参赋值。
2: redirect 重定向
@RequestMapping(value ="/createOrderForOld")
public String createOrder(HttpServletRequest request,ModelMap model) {
model.put("orderName","newOld");
return"redirect:/createOrder?orderId=123";
}
@RequestMapping(value ="/createOrder")
public String createOrder(String oderId,String orderName,ModelMap model) {
return"index";
}
当请求:8080/my-app/createOrderForOld 链接请求createOrderForOld接口后 请求重定向到createOrder接口时,通过model.put方法 ,createOrder中oderName自动赋值为“newOld”,通过参数拼接orderId自动赋值为“123”。
故redirect跳转到另一个controller是通过model还是拼接url均可。参数名称需一致,否则无法传参赋值。
RedirectAttributes和ModelMap或Model不推荐一起使用,因为在redirect传值时,同时存在,只有RedirectAttributes中参数值被传递,ModelMap或Model中变量不会传递。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式