mybatismvc:
package com.entor.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Controller 用来处理请求类
* @RequestMapping("/hello") 作用:处理请求地址/hello的请求
*/
@Controller
@RequestMapping("/hello")
public class HelloController {
/**
* @RequestMapping("/index") 处理请求地址是/index的请求(不区分请求方式),
* 如果类上也有注解,请求地址需要拼接类上注解的地址。
* @PostMapping("/index") 用来处理post请求方式请求
* @GetMapping("/index")用来处理get请求方式请求
* @return 方法返回时逻辑视图名称,通过配置文件中的视图资源解释器,找到对应视图文件进行渲染展示
* 查找规则:prefix+视图名称+suffix,此方法返回对应的视图文件时/index。jsp
*/
//@RequestMapping(value = "/index",method = RequestMethod.POST)
@PostMapping("/index") //等价于上面注解
public String index(){
System.out.println("post方式请求,Hello World");
return "index";
}
//@RequestMapping(value = "/index",method = RequestMethod.GET)
@GetMapping("/index") //等价于上面注解
public String index2(){
System.out.println("get方式请求,Hello World");
return "index";
}
}
mybatismvc核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--扫描组件包-->
<context:component-scan base-package="com.entor.controller"/>
<!--使用注解驱动装配请求地址处理类对象,客户端发送不同的请求地址交给不同的类不同的方法进行处理,
只有在类或者方法上添加需要的注解即可-->
<mvc:annotation-driven/>
<!--对静态资源文件不用做请求处理,比如css,js,images等-->
<mvc:default-servlet-handler/>
<!--配置资源视图解释器,作用:解释视图,根据服务器返回的内容选择不同的视图解释器最终渲染到视图界面显示给客户端-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置资源前缀路径,/值webapp根路径,从webapp根路径下查找视图文件-->
<property name="prefix" value="/"/>
<!--配置资源后缀路径,jsp文件-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--配置spring前置核心控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化参数,用来加载springmvc的核心配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<!--servlet映射地址,对web应用根路径下所有请求都进行处理-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern> <!--所有/下面的请求都可以响应-->
</servlet-mapping>
<!--配置字符编码过滤器,解决中文参数乱码问题-->
<filter>
<filter-name>characterEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
核心类
<!--使用注解驱动装配请求地址处理类对象,客户端发送不同的请求地址交给不同的类不同的方法进行处理,
只有在类或者方法上添加需要的注解即可-->
<mvc:annotation-driven/>
springmvc请求转发重定向
package com.entor.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TestController {
@GetMapping("/test1")
public String test1(){
System.out.println("test1");
return "test1"; //默认请求转发到test1.jsp页面
}
@GetMapping("/test2")
public String test2(){
System.out.println("test2");
return "redirect:test2.jsp"; //重定向到test2.jsp页面
}
@GetMapping("/test3")
public String test3(){
System.out.println("test3");
return "redirect:test2"; //重定向到test2请求
}
@GetMapping("/test4")
public String test4(){
System.out.println("test4");
return "forward:/test1"; //请求转发到/test2请求
}
}
springmvc服务器客户端之间的参数传递 方式一:
package com.entor.controller;
import com.entor.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
@Controller
public class ParamController {
/**
* 获取客户端传递过来的参数,在方法参数中直接注入HttpServletRequest,HttpServletResponse对象,方法跟servlet
* @param request
* @param response
* @return
*/
@GetMapping("/demo1")
public String demo1(HttpServletRequest request, HttpServletResponse response){
//获取客户端传递过来的参数
String id = request.getParameter("id");
String name = request.getParameter("name");
System.out.println("编号"+id+",姓名"+name);
//把值保存到request对象中,请求转发并传递值你给客户端
request.setAttribute("id",id);
request.setAttribute("name",name);
return "demo1";
}
/**
* 获取客户顿传递过来的参数,直接在方法参数中注入客户端参数名称即可获取
* @return
*/
@GetMapping("/demo2")
public String demo2(String id,String name,Map<String,Object> map){
System.out.println("编号"+id+",姓名"+name);
//把服务器要传递给客户端的数据封装在map就行了,在方法参数中添加map类型的参数,springmvc自动创建对象注入
map.put("id",id);
map.put("name",name);
return "demo2";
}
@GetMapping("/demo3")
public String demo3(String id, String name, Model model){
System.out.println("编号"+id+",姓名"+name);
//把服务器要传递给客户端的数据封装在Model就行了,在方法参数中添加Model类型的参数,springmvc自动创建对象注入
model.addAttribute("id",id);
model.addAttribute("name",name);
return "demo2";
}
@PostMapping("/add")
public String add(String name, String username, String password, int sex, int age, String birthday, Map<String,Object>map){
System.out.println("性名:"+name+",账号:"+username+",密码:"+password+",姓别:"+sex+",年龄:"+age+",生日:"+birthday);
map.put("name",name);
map.put("username",username);
map.put("password",password);
map.put("sex",sex);
map.put("age",age);
map.put("birthday",birthday);
return "show";
}
/**
* 客户端传递多个参数,可以封装多个成对象接收
* @param user
* @param map
* @return
*/
@PostMapping("/add2")
public String add2(User user,Map<String,Object>map){
System.out.println(user);
map.put("user",user);
return "show";
}
/**
* 初始化参数类型绑定
* @param binder
*/
/*@InitBinder
public void initBinder(WebDataBinder binder){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
CustomDateEditor editor = new CustomDateEditor(sdf,true);
//参数类型格式是yyyy-MM-dd当做java.util.Data类型处理
binder.registerCustomEditor(Date.class,editor);
}*/
}
springmvc注解的使用
package com.entor.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Controller 用来处理请求类
* @RequestMapping("/hello") 作用:处理请求地址/hello的请求
*/
@Controller
@RequestMapping("/hello")
public class HelloController {
/**
* @RequestMapping("/index") 处理请求地址是/index的请求(不区分请求方式),
* 如果类上也有注解,请求地址需要拼接类上注解的地址。
* @PostMapping("/index") 用来处理post请求方式请求
* @GetMapping("/index")用来处理get请求方式请求
* @return 方法返回时逻辑视图名称,通过配置文件中的视图资源解释器,找到对应视图文件进行渲染展示
* 查找规则:prefix+视图名称+suffix,此方法返回对应的视图文件时/index。jsp
*/
//@RequestMapping(value = "/index",method = RequestMethod.POST)
@PostMapping("/index") //等价于上面注解
public String index(){
System.out.println("post方式请求,Hello World");
return "index";
}
//@RequestMapping(value = "/index",method = RequestMethod.GET)
@GetMapping("/index") //等价于上面注解
public String index2(){
System.out.println("get方式请求,Hello World");
return "index";
}
}
springmvc客户端与服务器之间参数传递 方式二:
package com.entor.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.servlet.http.HttpSession;
import java.net.URLEncoder;
@Controller
@RequestMapping("/demo")
public class DemoController {
/**
* @RequestParam 作用在参数上,获取客户端参数,默认可以不写,自动根据参数名称匹配客户端传递的参数名称,也可以指定获取的参数名称
*
* @param username 获取客户端参数名称a的值赋值给变量username,而且参数a必须要传递,如果不传还可以设置参数默认值
* @param password
* @return
*/
@GetMapping("/demo1")
public String demo1(@RequestParam(value = "a",required = true,defaultValue = "admin") String username,
@RequestParam(value = "b",required = true,defaultValue = "admin")String password,HttpSession session){
session.setAttribute("username",username);
session.setAttribute("password",password);
System.out.println("账号:"+username+",密码:"+password);
return "demo1";
}
/**
*@RequestHeader 获取http请求协议头部信息,根据头部名称获取
* @CookieValue 获取http请求协议的cookie值,根据cookie名称获取
* @param accept
* @param cookie
* @param host
* @param userAgent
* @param cookie2
* @return
*/
@GetMapping("/demo2")
public String demo2(@RequestHeader(value = "Accept") String accept,
@RequestHeader(value = "Cookie") String cookie,
@RequestHeader(value = "Host") String host,
@RequestHeader(value = "User-Agent") String userAgent,
@CookieValue(value = "JSESSIONID") String cookie2){
System.out.println(accept);
System.out.println(cookie);
System.out.println(host);
System.out.println(userAgent);
System.out.println(cookie2);
return null;
}
@GetMapping("/demo3")
public String demo3(HttpSession session){
System.out.println("账号:"+session.getAttribute("username"));
System.out.println("密码:"+session.getAttribute("password"));
return null;
}
@GetMapping("/demo4")
public String demo4(int id,String name){
System.out.println("demo4");
System.out.println("编号:"+id+",姓名:"+name);
return null;
}
@GetMapping("/demo5")
public String demo5(int id,String name) throws Exception{
return "redirect:demo4?id="+id+"&name"+ URLEncoder.encode(name,"utf-8") ;//重定向到/demo4?id=1&name=张三
}
@GetMapping("/demo6")
public String demo6(int id,String name){
return "foward:/demo4";//请求转发可以传递值
}
/**
*
* @param id
* @param name
* @param attr 该参数对象用来封装参数值,以便重定向到其他请求中可以获取到值
* @return
*/
@GetMapping("/demo7")
public String demo7(int id,String name,RedirectAttributes attr){
attr.addAttribute("id",id);
attr.addAttribute("name",name);
return "redirect:demo8";//重定向到/demo8并传递参数
}
/**
* @ModelAttribute 获取重定向过来的前一个请求封装在RedirectAttributes对象中的参数值
* @param id
* @param name
* @return
*/
@GetMapping("/demo8")
public String demo8(@ModelAttribute(value = "id") int id,
@ModelAttribute(value = "name")String name){
System.out.println("编号:"+id+"姓名:"+name);
return null;
}
}