在一个请求中发生这个现象:
有个session值"yh",这是个对象,里面有个属性名是"xh",这个请求中有个参数名也为"xh",请求提交后"yh"的"xh"属性值变成了请求参数"xh"的值。可我在一开始用户登录建立session值"yh"后就从未修改过"yh"的值啊!怪了!我将"yh"中新建了一个属性"yhh"保存与"xh"同样的值,这回"xh"值照旧被改了,但"yhh"值没有被改。
这是怎么回事呢?spring
有个session值"yh",这是个对象,里面有个属性名是"xh",这个请求中有个参数名也为"xh",请求提交后"yh"的"xh"属性值变成了请求参数"xh"的值。可我在一开始用户登录建立session值"yh"后就从未修改过"yh"的值啊!怪了!我将"yh"中新建了一个属性"yhh"保存与"xh"同样的值,这回"xh"值照旧被改了,但"yhh"值没有被改。
这是怎么回事呢?spring
@Controller
@SessionAttributes("yh")
@RequestMapping("/wj")
public class WjController extends TyController {
private static Logger logger = Logger.getLogger(WjController.class);
@Autowired
private WjService wjService;
@RequestMapping("/index")
public String indexPage() {
return "wj/index";
} @ModelAttribute("WjPostForm")
public WjPostForm createFormBean() {
return new WjPostForm();
} @RequestMapping("/list")
public ModelAndView listPage(@RequestParam(value="yehao",defaultValue="1") int yehao, @ModelAttribute("yh") Yh yh, HttpServletRequest req) {
ModelAndView mav = new ModelAndView();
String ip = req.getRemoteAddr(); checkResult cr = wjService.isView(yh.getXh());
if (cr.isPass()) {
mav.setViewName("wj/list");
mav.addObject("pageData", wjService.getPage(yehao));
wjService.Log(DB.RIZHI_LX_List, true, null, yh.getXh(), ip);
} else {
mav.addObject("message", cr.getErrMessage());
mav.setViewName("refuse");
wjService.Log(DB.RIZHI_LX_List, false, cr.getErrMessage(), yh.getXh(), ip); //未登录的用户号自动为0
}
logger.info("list结尾。yhh=" + yh.getXh());
return mav;
}
@RequestMapping(value="/view", params="xh")//params={"xh"}
public ModelAndView getView(@ModelAttribute("yh") Yh yh, HttpServletRequest req,
@RequestParam("xh") int xh, @RequestParam(value="yehao",defaultValue="1") int yehao,
@RequestParam(value="ly", defaultValue="list") String pageName) {
logger.info("view开始。[Yh]xh=" + yh.getXh() + "yhm=" + yh.getXsm() + ";yhh=" + yh.getYhh());
yh.setXh(yh.getYhh()); //xh被同名request参数替换,用备用值恢复
ModelAndView mav = new ModelAndView();
String ip = req.getRemoteAddr();
checkResult cr = wjService.isView(yh.getXh());
if (cr.isPass()) {
mav.setViewName("wj/view");
WjxxResult wr = wjService.getOne(xh);
mav.addObject("WjxxResult", wr);
wjService.Log(DB.RIZHI_LX_View, true, "[" + xh + "]" + wr.getBt(), xh, ip);
if ("search".equals(pageName)) {
pageName = "searchWj";
}
logger.info("页名:" + pageName);
mav.addObject("pageName", pageName);
} else {
mav.addObject("message", cr.getErrMessage());
mav.setViewName("refuse");
wjService.Log(DB.RIZHI_LX_View, false, cr.getErrMessage(), yh.getXh(), ip);
}
return mav;
}
@RequestMapping("wjPost")
public ModelAndView post(@Valid @ModelAttribute("WjPostForm") WjPostForm form, BindingResult br,
@ModelAttribute("yh") Yh yh, HttpServletRequest req) {
ModelAndView mav = new ModelAndView();
String ip = req.getRemoteAddr();
int yhh = yh.getXh();
if (!br.hasErrors()) {
checkResult cr = wjService.isFb(yhh); if (cr.isPass()) {
if (!wjService.checkUrl(form.getUrl())) {
int r = wjService.post(form, yhh);
if (r == 1) { //发布成功
mav.setViewName("wj/list");
wjService.Log(DB.RIZHI_LX_Fb, true, form.getBt(), yhh, ip);
} else {
mav.addObject("message", "发布失败");
mav.setViewName(QjParams.ViewWrong);
wjService.Log(DB.RIZHI_LX_Fb, false, "发布失败", yhh, ip);
}
} else {
Object[] o = {"网址已存在 "};
br.rejectValue("url", "", o, "网址已存在");
mav.setViewName("wj/index");
wjService.Log(DB.RIZHI_LX_Fb, false, "网址已存在", yhh, ip);
return mav;
}
} else {
mav.addObject("message", cr.getErrMessage());
mav.setViewName(QjParams.ViewRefuse);
if (cr.isLogin()) {
wjService.Log(DB.RIZHI_LX_Fb, false, cr.getErrMessage(), yhh, ip);
} else {
wjService.Log(DB.RIZHI_LX_Fb, false, cr.getErrMessage(), 0, ip);
}
}
} else {
wjService.Log(DB.RIZHI_LX_Fb, false, "表单填写错误", yhh, ip);
mav.setViewName("wj/index");
}
return mav;
}
@RequestMapping(value="/delWjxx", params={"xh", "yehao"})
public ModelAndView del(@ModelAttribute("yh") Yh yh, HttpServletRequest req,
@RequestParam("xh") int xh, @RequestParam("yehao") int yehao) {
ModelAndView mav = new ModelAndView();
String ip = req.getRemoteAddr();
yh.setXh(yh.getYhh()); //xh被同名request参数替换,用备用值恢复
int yhh = yh.getXh();
logger.info("yh.xh删除" + yhh);
checkResult cr = wjService.isSc(yhh, xh);
if (cr.isPass()) {
int r = wjService.delWjxx(xh);
if (r == 1) {
mav.setViewName("wj/list");
wjService.Log(DB.RIZHI_LX_Sc, true, String.valueOf(xh), yhh, ip);
} else {
mav.addObject("message", "删除失败");
mav.setViewName(QjParams.ViewWrong);
wjService.Log(DB.RIZHI_LX_Fb, false, "删除xh=[" + xh + "]失败", yhh, ip);
}
} else {
mav.addObject("message", cr.getErrMessage());
mav.setViewName(QjParams.ViewRefuse);
wjService.Log(DB.RIZHI_LX_Sc, false, cr.getErrMessage(), yhh, ip);
}
return mav;
}
}