springmvc之获取参数的方法(必看)

作者:jingxian 时间:2023-12-20 09:25:59 

1、导包,四大核心包,一个切面包(AOP),logging,web,springmvc

2、配置文件,核心代码如下:

web.xml


<servlet>
 <servlet-name>springDispatcherServlet</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:springmvc.xml</param-value>
 </init-param>
 <load-on-startup>1</load-on-startup>
</servlet>

<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
 <servlet-name>springDispatcherServlet</servlet-name>
 <url-pattern>/</url-pattern>
</servlet-mapping>

<!--字符编码的filter一定要放在最前面 -->
 <filter>
  <filter-name>CharacterEncodingFilter</filter-name>
 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 <!-- 配置encoding,告诉我们指定的编码格式 -->
 <init-param>
  <param-name>encoding</param-name>
  <param-value>utf-8</param-value>
 </init-param>
 <!-- 解决响应乱码 -->
 <init-param>
  <param-name>forceEncoding</param-name>
  <param-value>true</param-value>
 </init-param>
 </filter>
 <filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/</url-pattern>
 </filter-mapping>
  <!-- 支持rest的filter -->
 <filter>
  <filter-name>HiddenHttpMethodFilter</filter-name>
 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>HiddenHttpMethodFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

springmvc.xml


<context:component-scan base-package="com.atguigu"></context:component-scan>
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 <!-- 视图分析器 -->
  <property name="prefix" value="/WEB-INF/pages/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>
</beans>

index.jsp: 首页进入


<body>
<a href="hello" rel="external nofollow" >hello</a><br/>
<a href="handle01?user=123456" rel="external nofollow" >获取请求参数</a><br/>
<a href="handle02" rel="external nofollow" >获取请求头</a><br/>
<form action="saveBook" method="post">
 图书id<input type="text" name="id"/><br/>
 图书name<input type="text" name="name"/><br/>
 图书author<input type="text" name="author"/><br/>
 图书price<input type="text" name="price"/><br/>
 图书sales<input type="text" name="sales"/><br/>
 图书stock<input type="text" name="stock"/><br/>
 <hr/>
 <!-- 级联属性来封装值 -->
 作者name;<input type="text" name="person.name"/><br/>
 作者address;<input type="text" name="person.address"/><br/>
 <input type="submit" value="保存图书"/>
</form>
<hr/>
<h2>给页面携带数据</h2>
<a href="output01" rel="external nofollow" >output01</a>
</body>

springmvc之获取参数的方法(必看)

3./WEB-INF/pages 跳转后的内容

1).success.jsp


<body>
<h1>成功!</h1>
${msg}===${reMsg}
</body>

2).testScope.jsp


<body>
<h1>测试数据带在了哪个scope</h1>
request:${requestScope.msg }<br />
session:${sessionScope.msg }<br />
application:${applicationScope.msg}
</body>

4.src/bean包 Author.java


public class Author {
 private String name;
 private String address;Book.java:


public class Book {
private int id;
private String name;
private double price;
private int sales;
private int stock;
private Author person;
private String imgPath = "static/img/default.jpg";
private String author;

src/controller 包, HelloController.java: 如果不加,则不能访问


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

@RequestMapping("/hello") //连接地址必须加上"/hello"
public String hello(){
 return "success";

}
}

TestParamController.java


@Controller
public class TestParamController {

/**
 * 1、直接给方法的参数位置写上一个和请求带来的参数的名字相同的变量
 * 2、这个变量就封装的是带来的参数的值
 * user = request.getParameter("user")
 * 3、如果没有就是null
 *
 * @RequestParam("user"):指定获取哪个参数的值
 * 1、默认发送请求必须带上这个参数;
 *   否则:HTTP Status 400 - Required String parameter 'user' is not present
 * 2、required=false可以设置不是必须的;没带null
 * 3、defaultValue="未命名"指定没带时的默认值;
 *   user = request.getParameter("user");
 */

@RequestMapping("/handle01")
public String handle01(
  @RequestParam(value = "user", required = false, defaultValue = "未命名") String user) {
 System.out.println("获取的User:" + user);
 return "success";
}

/**
 * 获取请求头;
 *   request.getHeader("User-Agent")
 * 注解做了下面这些事情
 * @RequestHeader("User-Agent")String userAgent;
 *   userAgent = request.getHeader("User-Agent");*/
@RequestMapping("/handle02")
public String handle02(
  @RequestHeader(value = "User-Agent", required = false, defaultValue = "没有的") String userAgent) {
 System.out.println("User-Agent:" + userAgent);
 return "success";
}

/**
 * 获取某个cookie的值;
 * JSESSIONID=B05C018F82AA1B0BD3845831FADFE49A
 * @CookieValue("JSESSIONID")String jid
 * 注解做了下面这些事情
 * Cookie[] cookies = request.getCookies();
 * for(Cookie c:cookies){
 *  if(c.getName().equals("JSESSIONID")){
 *   jid = c.getValue();
 *  }
 * }*/
@RequestMapping("/handle03")
public String handle03(
  @CookieValue(value = "JSESSIONID", required = false, defaultValue = "hhhhh") String jid) {
 System.out.println("jid:" + jid);
 return "success";
}

/*传入POJO;直接帮我们封装页面的值; 方便简单,少写很多代码,实现代码分离,解耦和
 * 1、book = new Book();
 * 2、把book对象中的每一个属性的值查出来,request.getParameter(属性);
 * 3、把这个值设置进去
 * 注意:因为SpringMVC会进行类型转换,所以提交的数据一定要是合法的,否则400错误*/
@RequestMapping("/saveBook")
public String handle04(Book book) {
 System.out.println("book的值:" + book);
 return "success";
}

@RequestMapping("/handle05")
// pringMVC还允许我们在请求参数上使用原生的ServletAPI HttpServletRequest HttpServletResponse
// HttpSession
public String handle05(HttpSession session, HttpServletRequest request,
  HttpServletResponse response) {
 session.setAttribute("msg", "哈哈哈");

request.setAttribute("reqMsg", "嘿嘿嘿");

return "success";
}

}

src/dataout/ DataOutPutController.java 给页面携带数据


@Controller //给页面携带数据
public class DataOutPutController {

/**
 * 1、返回值改为ModelAndView(包含模型数据(Model)和要去的页面地址(View));
 *   数据放在请求域中;
 * 2、在请求参数上传入Model、Map、ModelMap都行;给他们里面保存的数据会放在请求域中
 * Model、Map、ModelMap最终其实都是再有用BindingAwareModelMap;
 * 相当于给BindingAwareModelMap中保存数据就是给请求域中保存
 * Model   Map
 *  ||   ||
 *  ||   \/
 *  ||  ModelMap
 *  \/   \/
 *  ExtendedModelMap【隐含模型】 extends ModelMap implements Model
 *   \/
 *  BindingAwareModelMap
 * @return
 */
@RequestMapping("/output04")
public String output04(ModelMap model){
 //视图解析器会对视图名进行拼串
 model.addAttribute("msg","output04");
 System.out.println(model.getClass());
 return "testScope";

}
@RequestMapping("/output03")
public String output03(Model model){
 model.addAttribute("msg", "output03");
 System.out.println(model.getClass());
 return "testScope";
}
@RequestMapping("/output02")
public String output02(Map<String,Object>map){
 //视图解析器会对视图名进行拼串
 map.put("msg", "output02");
 System.out.println(map.getClass());
 return "testScope";
}
@RequestMapping("/output01")
public ModelAndView output01(){
 //视图解析器会对视图名进行拼串
 ModelAndView modelAndView = new ModelAndView();
 modelAndView.setViewName("testScope");
 modelAndView.addObject("msg", "output01");
 return modelAndView;

}
}

来源:http://www.cnblogs.com/JavaBlackHole/p/7382384.html

标签:springmvc,获取参数
0
投稿

猜你喜欢

  • SpringMVC深入讲解文件的上传下载实现

    2022-04-21 09:01:51
  • c#多种加解密示例(md5加密解密)

    2022-08-26 07:17:10
  • C++ boost scoped_ptr智能指针详解

    2023-10-04 19:11:45
  • C#双缓冲技术实例详解

    2023-02-02 15:56:37
  • ViewFlipper实现上下翻滚轮播效果

    2023-10-06 08:55:40
  • 深入理解Java高级特性——注解

    2021-05-23 20:28:54
  • C#中定时任务被阻塞问题的解决方法

    2023-10-27 00:56:02
  • C++中的类模板详解及示例

    2023-10-04 17:33:28
  • C#使用iTextSharp添加PDF水印

    2021-10-09 08:59:27
  • idea离线使用jrebel的超详细教程

    2022-05-18 10:01:27
  • Mybatis plus 配置多数据源的实现示例

    2023-10-04 15:57:33
  • Java的可变参数与Collections类的功能示例解析

    2022-03-05 18:45:47
  • c#取得控制台应用程序根目录

    2023-06-16 14:25:44
  • java泛型中占位符T和?有什么区别

    2022-07-05 02:53:56
  • Springboot内置的工具类之CollectionUtils示例讲解

    2023-08-23 20:47:13
  • java中带参数的try(){}语法含义详解

    2021-10-27 05:20:16
  • Java中的递归详解(用递归实现99乘法表来讲解)

    2021-12-30 14:14:10
  • java中单例模式讲解

    2022-05-22 14:24:07
  • Java 逻辑运算符中&&与&,||与|的区别

    2021-05-30 15:24:26
  • Spring boot整合mybatis实现过程图解

    2023-01-15 09:31:05
  • asp之家 软件编程 m.aspxhome.com