meiyourena 2013-05-10 21:52
浏览 245
已采纳

spring mvc 为什么不能访问

我写了一个类UserController:
[code="java"]
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.itech.model.User;

@Controller
@RequestMapping("/user")
public class UserController {

private Map<String, User> users=new HashMap<String,User>();
public  UserController() {
    users.put("huhuawen1", new User("huhuawen1","29", "123", "123@163.com"));
    users.put("huhuawen2", new User("huhuawen2","28", "456", "456@163.com"));
    users.put("huhuawen3", new User("huhuawen3","20", "789", "789@163.com"));
}

@RequestMapping(value="/users",method=RequestMethod.GET)
public String list(Model model) {
    model.addAttribute("users",users);
    return"user/list";
}
//链接到add页面时是GET请求
@RequestMapping(value="/add",method=RequestMethod.GET)
public String add(@ModelAttribute("user") User user) {
    return"user/add";
}
//具体添加用户时是post请求
@RequestMapping(value="/add",method=RequestMethod.POST)
public String add(@Validated User user,BindingResult br ) {//一定要紧跟Validated之后写验证结果
    if(br.hasErrors()){
        //如果有错,就跳转到add视图
        return "user/add";
    }
    users.put(user.getUserName(), user);
    System.out.println("123");
    return"redirect:/user/users";
}


@RequestMapping(value="/{userName}/update" , method=RequestMethod.GET)
public String update(@PathVariable String userName,Model  model){

    model.addAttribute(users.get(userName));
    return "user/update";
}
@RequestMapping(value="/{userName}/update",method=RequestMethod.POST)
public String update(@Validated User user,@PathVariable String userName,BindingResult br    ) {//一定要紧跟Validated之后写验证结果
    users.put(user.getUserName(), user);
    System.out.println("123");
    return"redirect:/user/users";
}

@RequestMapping(value="/{userName}/delete" , method=RequestMethod.GET)
public String delete(@PathVariable String userName,Model  model){
    users.remove(userName);
    return"redirect:/user/users";
}

@RequestMapping(value="/userlogin" , method=RequestMethod.POST)
public String login ( String userName,String password,HttpSession session){

// session.setAttribute('session', arg1)
return"redirect:/user/users";
}

@RequestMapping(value="/{userName}" , method=RequestMethod.GET)
public String show(@PathVariable String userName,Model  model){
    System.out.println("userName="+userName);
    model.addAttribute(users.get(userName));
    return "user/show";
}

}

[/code]
login.jsp:
[code]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



Insert title here



userName

password





[/code]
现在这里面的show方法和login 有一点冲突,因为我在地址栏输入的user/userlogin 它当作了show方法的userName参数了,有什么方法避免吗?
  • 写回答

2条回答 默认 最新

  • jinnianshilongnian 2013-05-13 08:53
    关注

    因为我在地址栏输入的user/userlogin 它当作了show方法的userName参数了,有什么方法避免吗? 地址栏直接输入是get请求

    很明显
    @RequestMapping(value="/userlogin" , method=RequestMethod.POST)

    你的/userlogin只处理POST请求

    可以把
    method=RequestMethod.POST --->method={RequestMethod.GET, RequestMethod.POST}
    这样可以get/post了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 java大作业爬取网页
  • ¥15 怎么获取欧易的btc永续合约和交割合约的5m级的历史数据用来回测套利策略?
  • ¥15 有没有办法利用libusb读取usb设备数据
  • ¥15 为什么openeluer里面按不了python3呢?
  • ¥15 关于#matlab#的问题:训练序列与输入层维度不一样
  • ¥15 关于Ubuntu20.04.3LTS遇到的问题:在安装完CUDA驱动后,电脑会进入卡死的情况,但可以通过键盘按键进入安全重启,但重启完又会进入该情况!
  • ¥15 关于#嵌入式硬件#的问题:树莓派第一天重装配置python和opencv后第二天打开就成这样,瞎捣鼓搞出来文件夹还是没把原来的界面调回来
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥15 C++数组中找第二小的数字程序纠错