request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page"));是什么意思
时间: 2023-12-06 07:42:35 浏览: 25
这是一个Java代码段,用于获取HTTP请求中名为“page”的参数值,如果该参数不存在,则将其设置为1。具体来说,它使用request.getParameter("page")获取名为“page”的参数值。如果该参数的值为null,则返回1,否则将参数的值转换为整数并返回。因此,该行代码可以用于确保获取到的参数值是一个整数,并且在参数不存在时提供一个默认值。
相关问题
Junit4测试搜索框public class GoodsSearchServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {} private final GoodsService gService = new GoodsService(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String keyword = request.getParameter("keyword"); int pageNumber = 1; if(request.getParameter("pageNumber") != null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber") ) ; } catch (Exception ignored) { } } if(pageNumber<=0) { pageNumber=1; } Page p =gService.getSearchGoodsPage(keyword,pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p =gService.getSearchGoodsPage(keyword,pageNumber); } } request.setAttribute("p", p); request.setAttribute("keyword", URLEncoder.encode(keyword,"utf-8")); request.getRequestDispatcher("/goods_search.jsp").forward(request, response); }
您可以使用Junit4编写以下测试用例来测试搜索框:
```
@RunWith(MockitoJUnitRunner.class)
public class GoodsSearchServletTest {
@Mock
HttpServletRequest request;
@Mock
HttpServletResponse response;
@Mock
RequestDispatcher dispatcher;
@Mock
GoodsService goodsService;
@InjectMocks
GoodsSearchServlet goodsSearchServlet;
@Test
public void testDoGet() throws Exception {
String keyword = "test";
int pageNumber = 1;
Page page = new Page();
page.setTotalPage(1);
page.setPageNumber(1);
when(request.getParameter("keyword")).thenReturn(keyword);
when(request.getParameter("pageNumber")).thenReturn(String.valueOf(pageNumber));
when(goodsService.getSearchGoodsPage(eq(keyword), eq(pageNumber))).thenReturn(page);
when(request.getRequestDispatcher("/goods_search.jsp")).thenReturn(dispatcher);
goodsSearchServlet.doGet(request, response);
verify(request).setAttribute("p", page);
verify(request).setAttribute("keyword", URLEncoder.encode(keyword,"utf-8"));
verify(request).getRequestDispatcher("/goods_search.jsp");
verify(dispatcher).forward(request, response);
}
}
```
在这个测试用例中,我们创建了一个`HttpServletRequest`和`HttpServletResponse`对象,并模拟了`GoodsService`对象。我们使用注释`@InjectMocks`将`GoodsService`对象注入到`GoodsSearchServlet`中,然后测试`doGet`方法。 我们设置了请求参数,模拟了`GoodsService`的调用,并验证了结果。
public String list() { // 检测是否有登录,没登录则跳转到登录页面 if (!checkLogin()) { return showError("尚未登录", "./login.do"); } String order = Request.get("order", "id"); // 获取前台提交的URL参数 order 如果没有则设置为id String sort = Request.get("sort", "desc"); // 获取前台提交的URL参数 sort 如果没有则设置为desc int pagesize = Request.getInt("pagesize", 12); // 获取前台一页多少行数据 Example example = new Example(Shenqing.class); // 创建一个扩展搜索类 Example.Criteria criteria = example.createCriteria(); // 创建一个扩展搜索条件类 String where = " 1=1 "; // 创建初始条件为:1=1 where += getWhere(); // 从方法中获取url 上的参数,并写成 sql条件语句 criteria.andCondition(where); // 将条件写进上面的扩展条件类中 if (sort.equals("desc")) { // 判断前台提交的sort 参数是否等于 desc倒序 是则使用倒序,否则使用正序 example.orderBy(order).desc(); // 把sql 语句设置成倒序 } else { example.orderBy(order).asc(); // 把 sql 设置成正序 } int page = request.getParameter("page") == null ? 1 : Integer.valueOf(request.getParameter("page")); // 获取前台提交的URL参数 page 如果没有则设置为1 page = Math.max(1, page); // 取两个数的最大值,防止page 小于1 List<Shenqing> list = service.selectPageExample(example, page, pagesize); // 获取当前页的行数 // 将列表写给界面使用 assign("totalCount", request.getAttribute("totalCount")); assign("list", list); assign("orderby", order); // 把当前排序结果写进前台 assign("sort", sort); // 把当前排序结果写进前台 return json(); // 将数据写给前端 }
这是一个 Java 方法,用于获取并展示数据库中的数据列表。方法首先检查用户是否已登录,如果没有登录则跳转到登录页面。接下来,它从 URL 参数中获取排序和分页信息,并使用这些信息创建一个扩展搜索类。然后,它从 URL 参数中获取筛选条件,并将其添加到扩展搜索条件类中。接下来,它根据排序参数决定是按照正序还是倒序排序结果,然后获取当前页的行数,并将列表写给界面使用。最后,它将数据以 JSON 格式返回给前端。