springmvc常用操作

首先我们还是把包全部导入

 之后我们了解下springmvc的具体的操作流程。。。

 

import cn.itcast.ssm.pojo.Items;
import cn.itcast.ssm.service.finditcast;
@Controller
public class ItemsController {
    @Autowired
    private finditcast FItems;
@RequestMapping("/list")
public ModelAndView allItems() {
    List<Items> list=FItems.findallitcast();
    ModelAndView ModelAndView=new ModelAndView();
    ModelAndView.addObject("itemList", list);
    ModelAndView.setViewName("itemList");
    return ModelAndView;
    
}
}
 



@RequestMapping用法




  URL路径映射

 

@RequestMapping(value="/item")或@RequestMapping("/item

value的值是数组,可以将多个url映射到同一个方法

  窄化请求映射

@RequestMapping有多种用法
 

class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理。

如下:

@RequestMapping放在类名上边,设置请求前缀 

@Controller

@RequestMapping("/item")

方法名上边设置请求映射url

@RequestMapping放在方法名上边,如下:

@RequestMapping("/queryItem ")

访问地址为:/item/queryItem

请求方法限定

限定GET方法

@RequestMapping(method = RequestMethod.GET)

如果通过Post访问则报错:

HTTP Status 405 - Request method 'POST' not supported

例如:

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

限定POST方法

@RequestMapping(method = RequestMethod.POST)

如果通过Post访问则报错:

HTTP Status 405 - Request method 'GET' not supported

 GETPOST都可以

@RequestMapping(method={RequestMethod.GET,RequestMethod.POST})


参数绑定操作的注意事项

我们来举3个例子看一下

第一个例子

简单数据传输

一般都是get

根据id来查询要修改的商品

传输url

/itemEdit.action?id=**

这里我们可以不去使用ModelAndView,直接使用string返回jsp的名字,注意下参数里的id,简单的传输是需要和我们传输的名字是一致的id

 
@RequestMapping("/itemEdit")
    public String itemEdit(Integer id, Model model) {
        Items items = itemService.getItemById(id);
        //向jsp传递数据
        model.addAttribute("item", items);
        //设置跳转的jsp页面
        return "editItem";
    }

@RequestParam 也是可以的进行操作,

使用@RequestParam常用于处理简单类型的绑定

value:参数名字,即入参的请求参数名字,如value=“item_id”表示请求的参数区中的名字为item_id的参数的值将传入;

required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报;

TTP Status 400 - Required Integer parameter 'XXXX' is not present

defaultValue:默认值,表示如果请求中没有同名参数时的默认值

传输url

/itemEdit.action?id=**

定义如下:

public String editItem(@RequestParam(value="id",required=true) String item_id) {

}

  item_id为我们之后可以自己定义的名字

形参名称为id,但是这里使用value=" item_id"限定请求的参数名为id,所以页面传递参数的名必须为id。

注意:如果请求参数中没有id将跑出异常:

HTTP Status 500 - Required Integer parameter 'item_id' is not present

这里通过required=true限定item_id参数为必需传递,如果不传递则报400错误,可以使用defaultvalue设置默认值,即使required=true也可以不传item_id参数值

绑定pojo的操作

第二个例子是

1.将页面修改后的商品信息保存到数据库中。

请求的url/updateitem.action

参数:表单中的数据。

响应内容:更新成功页面

如果提交的参数很多,或者提交的表单中的内容很多的时候可以使用pojo接收数据。要求pojo对象中的属性名和表单中input的name属性一致。

页面定义如下;

<input type="text" name="name"/>

<input type="text" name="price"/>

请求的参数名称和pojo的属性名称一致,会自动将请求参数赋值给pojo的属性。

@RequestMapping("/updateitem")

public String updateItem(Items items) {

itemService.updateItem(items);

return "success";

}

注意:提交的表单中不要有日期类型的数据,否则会报400错误。如果想提交日期类型的数据需要用到后面的自定义参数绑定的内容。

高级的数据绑定

在商品列表页面选中多个商品,然后删除。

此功能要求商品列表页面中的每个商品前有一个checkbook,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品id删除商品信息。

jsp的操作

<c:forEach items="${itemList }" var="item">
<tr>
    <td><input name="ids" value="${item.id}" type="checkbox"></td>
    <td>${item.name }</td>
    <td>${item.price }</td>
    <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
    <td>${item.detail }</td>

<td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>

</tr>

</c:forEach>

@RequestMapping("/queryitem")
    public String queryItem(QueryVo queryVo, String[] ids) {
        System.out.println(queryVo.getItems().getName());
        System.out.println(queryVo.getItems().getPrice());
        System.out.println(ids.toString());
        return null;
    }

这里我们需要先分析下,批量删除的操作的一定是需要多个数据id来操作的,那这多个id也是在一个数组中操作得到的,我们这里传出的也就是一个数组的操作

如图在代码中的显示

<table width="100%" border=1>
<tr>
    <td>商品名称</td>
    <td>商品价格</td>
    <td>生产日期</td>
    <td>商品描述</td>
    <td>操作</td>
</tr>
<tr>
    <td><input name="ids" value="1" type="checkbox"></td>
    <td>台式机</td>
    <td>3000.0</td>
    <td>2016-02-03 13:22:53</td>
    <td></td>
    <td><a href="/springmvc-web/itemEdit.action?id=1">修改</a></td>
</tr>
<tr>
    <td><input name="ids" value="2" type="checkbox"></td>
    <td>笔记本</td>
    <td>6000.0</td>
    <td>2015-02-09 13:22:57</td>
    <td></td>
    <td><a href="/springmvc-web/itemEdit.action?id=2">修改</a></td>
</tr>
<tr>
    <td><input name="ids" value="3" type="checkbox"></td>
    <td>背包</td>
    <td>200.0</td>
    <td>2015-02-06 13:23:02</td>
    <td></td>
    <td><a href="/springmvc-web/itemEdit.action?id=3">修改</a></td>
</tr>
</table>

我们一定得到的数组的操作,就是[1.2.3]的操作

那现在我们在控制器里就有了两种的方法,1.直接传入到我们的数组中,2.


 

猜你喜欢

转载自www.cnblogs.com/cf1336/p/10592424.html