SpringMVC接受参数的几种方式

 我来答
ijava学习网
2018-07-04 · 国内最优秀java资源共享平台
ijava学习网
国内最优秀的java免费资源共享及学习平台,专注从实战中学习与成长。主要包括教程、经验分享、知识、资讯、工具、手册、视频及各种资源下载。
向TA提问
展开全部
1. 几种页面跳转方式

1.1 通过HttpServletResponse的API直接输出(不需要配置渲染器)

案例: @Controller

public class RequestController{

@RequestMapping("/resp")

public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {

resp.getWriter().println("hello HttpServletResponse");

}

1.2 使用HttpServletResponse 重定向到另一个视图(其他不变 )

@RequestMapping("/resp")

public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {

resp.sendRedirect("index.jsp");

}

}

1.3 使用HttpServletRequest 转发(默认访问/下的index.jsp页面 不受渲染器的影响)

@RequestMapping("/resp")

public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {

req.setAttribute("message","it's forword ");

req.getRequestDispatcher("index.jsp").forward(req,resp);

}

1.4直接返回jsp页面的名称(无渲染器)

@RequestMapping("/nice")

public String hello1(){

//转发方式1

return "home.jsp";

//转发方式2

return "forward:index.jsp";

//重定向方式

return "redirect:index.jsp";

}

1.5 使用modelandview 需要视图解析器 能指定跳转页面

public class HelloController implements Controller {

@Override

public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest,

javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {

ModelAndView mv = new ModelAndView();

//封装要显示到视图的数据

mv.addObject("msg","hello myfirst mvc");

//视图名

mv.setViewName("hello");

return mv;

}

}

<bean id="viewResolver"

class="org.springframework.web.servlet.view.UrlBasedViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

<!--结果视图的前缀-->

<property name="prefix" value="/WEB-INF/jsp/"/>

<!--结果视图的后缀-->

<property name="suffix" value=".jsp"/>

</bean>

1.6

//通过modelmap方式

@RequestMapping("/modelmap")

public String modelHello(String name,ModelMap map){

map.addAttribute("name",name);

System.out.println(name);

return "index.jsp";

}

2. 获取页面参数的几种方式

1、直接把表单的参数写在Controller相应的方法的形参中

案例:

/**

* 1.直接把表单的参数写在Controller相应的方法的形参中

*/

@RequestMapping("/add")

public String add(String username,String password) {

System.out.println("username is:"+username);

System.out.println("password is:"+password);

return "index";

}

2、通过HttpServletRequest接收

案例:

/**

* 2、通过HttpServletRequest接收

*/

@RequestMapping("/add")

public String add(HttpServletRequest request) {

String username=request.getParameter("username");

String password=request.getParameter("password");

System.out.println("username is:"+username);

System.out.println("password is:"+password);

return "index";

}

3、通过一个bean来接收

案例:

public class User {

private Long id;

private String username;

private String password;

public User(){}

public Long getId() {

return id;

}

public String getUsername() {

return username;

}

public String getPassword() {

return password;

}

public void setId(Long id) {

this.id = id;

}

public void setUsername(String username) {

this.username = username;

}

public void setPassword(String password) {

this.password = password;

}

}

/**

* 3、通过一个bean来接收

*/

@RequestMapping("/add")

public String add(User user) {

System.out.println("username is:"+user.getUsername());

System.out.println("password is:"+user.getPassword());

return "index";

}

4、通过@PathVariable获取路径中的参数

案例:

/**

* 4、通过@PathVariable获取路径中的参数

* @param username

* @param password

* @return

*/

@RequestMapping(value="/add/{username}/{password}",method=RequestMethod.GET)

public String addUser4(@PathVariable String username,@PathVariable String password) {

System.out.println("username is:"+username);

System.out.println("password is:"+password);

return "index";

}

访问路径
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式