Spring Web ,使用annotation和form标签库开发web应用(二)请求的映射

来源:互联网 发布:nginx 多网站配置 编辑:程序博客网 时间:2024/05/30 23:01

摘要:讲述用户请求映射到controller不同方法的规则。在此之前,必须将web应用做好配置支持spring-web,并且支持annotations

 

假设WEB-INF/web.xml中的spring servlet映射如下:

     <servlet-mapping>

         <servlet-name>icshtml</servlet-name>

         <url-pattern>/ics/*</url-pattern>

     </servlet-mapping>

关于基础配置请看前一篇。

 

1.     简单Get映射:

当浏览器输入http://somehost:8080/myapp/ics/login时,映射到如下方法:

     @RequestMapping(value = "/ login", method = RequestMethod.GET)

     public String  login() {

         //do something

         return "login";//返回的页面路径是在icshtml-servlet.xml中配置的

     }

 

2.     简单Post映射:

页面login.jsp中有如下:

<form:form modelAttribute="user" target="_self" >

<form:input path="username" />

<form:password path="password" size="20"/>

<input type="submit" value="登录" name="B1" >

</form:form>

用户点击按钮提交时,表单信息会以post方式填写到请求中,即使url一样映射也不会和get方式冲突

@RequestMapping(value = "/ login", method = RequestMethod.POST)

     public String  loginPost(@ModelAttribute("user") User myUser) {

         //do something

         //check myUser username password

         return "welcome";//返回的页面路径是在icshtml-servlet.xml中配置的

     }

 

 

 

3.     服务端为用户填充表单数据:

http://somehost:8080/myapp/ics/new_card 返回的页面要获得部分数据填充

     @RequestMapping(value = "/new_card", method = RequestMethod.GET)

     public String new_card(ModelMap model) {

//do something

CardForm myCardForm = new CardForm();

//填充myCardForm中的变量

//放到servletContextsessionmap中,页面可以直接读取

         model.put("cardForm", myCardForm);

         return "new_card";

     }

在页面new_card.jsp中有如下:

其中cardcardForm的一个变量,用get方法获取validEndDatecard的一个变量;

Spring form标签可以直接读取cardForm中的变量,但是jstlc:out不能,只能从model中读取

<form:form modelAttribute="cardForm" target="_self" >

<form:input path="card.validEndDate" size="37" />

<form:input path="card.memo3" size="37" />

<c:out value="${cardForm.state}" />

<input type="submit" value="提交" name="B1">

</form:form>

 

 

4.     带自定义参数的url

Controller可以使用带参数@PathVariable("id")的方法,这样就可以通过url传递参数,如下为了获取card 信息进行编辑,通过给服务端传入id获取

http://somehost:8080/myapp/ics/edit_card/id/5 请求会映射到如下方法

     @RequestMapping(value = "/edit_card/id/{id}", method = RequestMethod.GET)

     public String edit_card(@PathVariable("id") String cardId, Model model) {

         //fetch card info by cardId, which mean “5”,and fill in myCardForm

         Model.put("cardForm", myCardForm);

         return "new_card";

     }

 

 

5.     http参数的请求:

 

表单提交的时候不一定要用@ModelAttribute来封装,可以直接按http请求参数来映射,通过@RequestParam("iccardNumber")来指定http参数。

如页面表单如下:

<form:form method="POST" action="${pageContext.request.contextPath }/ics/card_num_new">

         <input type="text" name="iccardNumber" size="20" />

         <input type="submit" value="添加" name="newAdd" />

</form:form>

对应方法(iccardNumber对应是input 标签的name属性指定):

     @RequestMapping(value = "/card_num_new", method = RequestMethod.POST)

     public String card_num_new(@RequestParam("iccardNumber") String iccardNumber, ModelMap model) {

         System.out.println("cardNumberList()=" + cardNumberList.size());

         model.put("cardNumberList", cardNumberList);

         return "card_num_management";

     }

 

 

(待续)

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 对方不出谅解书怎么办 寻衅滋事没抓的 怎么办 公务员政审父母拘留过怎么办 我参与了网赌怎么办 亲人出车祸去世家属怎么办 车牌换了原保险怎么办 北京车牌夫妻变更车险怎么办 赌博拘留15天不交罚款怎么办 给人打了不赔钱怎么办 打了人对方讹钱怎么办 换车了原来的etc怎么办 换异地车牌了etc怎么办 被执行人拘留15天后不还钱怎么办 被执行人拘留后还是不还钱怎么办 摩托车套牌被交警扣了怎么办 套牌摩托车遇到交警怎么办 不知情收到小偷东西了怎么办 盗窃罪法院判定农民赔钱没钱怎么办 公安局通知家属取刑拘通知书怎么办 老公诈骗坐牢家人该怎么办 家人被拘留我该怎么办 车牌被偷了一个怎么办 车牌给人家偷了怎么办 收购了偷来的铝怎么办 员工自动离职后档案怎么办 辞职了老板不发工资怎么办 上班老板不发工资怎么办 逮捕后延长羁押期限怎么办手续 员工提出辞职公司不同意怎么办 员工提出辞职后即不来上班怎么办 打架把对方打成轻伤害怎么办 被刑拘了家人该怎么办 看守所在押人员检查出乙肝怎么办 孩子不写作业老师该怎么办 孩子老师向我表白该怎么办 幼儿园老师打孩子家长该怎么办 老师对孩子太苛刻该怎么办 孩子不敢上学怕老师该怎么办 学生上课迟到老师该怎么办 看守所转监狱不收怎么办 己判实刑有病看守所不收怎么办