概念:

实现方式:
使用@PathVariable

在url相同的情况下,会根据请求方式的不同来执行不同的方法。
使用RestFull风格的好处:简洁、高效、安全
方式一:这里的@RequestParam("username")意思是,将前端用username="xxx"的值传到name变量里。

方式二:当接受的对象是一个对象时,那我们在前端传入的变量名应与实体类中的名字保持一致,否则就为null

2.2、数据回显
也有三种方式,分别是Model,ModelMap,ModelAandView
这个是第三种的。


tips:
我以为我的配置是最优的,结果... 果然,人就是不能乱飘。

先建个包,再建个类,专门用于存放过滤器的代码,用以解决乱码的问题。代码如下:
- package com.zhang.Filter;
- import javax.servlet.*;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletRequestWrapper;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.util.Map;
-
- public class GenericEncodingFilter implements Filter {
- @Override
- public void destroy() {
- }
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException, IOException {
- //处理response的字符编码
- HttpServletResponse myResponse=(HttpServletResponse) response;
- myResponse.setContentType("text/html;charset=UTF-8");
-
- // 转型为与协议相关对象
- HttpServletRequest httpServletRequest = (HttpServletRequest) request;
- // 对request包装增强
- HttpServletRequest myrequest = new MyRequest(httpServletRequest);
- chain.doFilter(myrequest, response);
- }
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- }
-
- }
-
- //自定义request对象,HttpServletRequest的包装类
- class MyRequest extends HttpServletRequestWrapper {
-
- private HttpServletRequest request;
- //是否编码的标记
- private boolean hasEncode;
- //定义一个可以传入HttpServletRequest对象的构造函数,以便对其进行装饰
- public MyRequest(HttpServletRequest request) {
- super(request);// super必须写
- this.request = request;
- }
-
- // 对需要增强方法 进行覆盖
- @Override
- public Map getParameterMap() {
- // 先获得请求方式
- String method = request.getMethod();
- if (method.equalsIgnoreCase("post")) {
- // post请求
- try {
- // 处理post乱码
- request.setCharacterEncoding("utf-8");
- return request.getParameterMap();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- } else if (method.equalsIgnoreCase("get")) {
- // get请求
- Map
parameterMap = request.getParameterMap(); - if (!hasEncode) { // 确保get手动编码逻辑只运行一次
- for (String parameterName : parameterMap.keySet()) {
- String[] values = parameterMap.get(parameterName);
- if (values != null) {
- for (int i = 0; i < values.length; i++) {
- try {
- // 处理get乱码
- values[i] = new String(values[i]
- .getBytes("ISO-8859-1"), "utf-8");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- }
- }
- hasEncode = true;
- }
- return parameterMap;
- }
- return super.getParameterMap();
- }
-
- //取一个值
- @Override
- public String getParameter(String name) {
- Map
parameterMap = getParameterMap(); - String[] values = parameterMap.get(name);
- if (values == null) {
- return null;
- }
- return values[0]; // 取回参数的第一个值
- }
-
- //取所有值
- @Override
- public String[] getParameterValues(String name) {
- Map
parameterMap = getParameterMap(); - String[] values = parameterMap.get(name);
- return values;
- }
- }
然后再在web.xml中进行相关配置
- <filter>
- <filter-name>encodingfilter-name>
- <filter-class>com.zhang.Filter.GenericEncodingFilterfilter-class>
- filter>
- <filter-mapping>
- <filter-name>encodingfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
4、JSON
4.1、概念:

在前端页面json和js对象的相互转换:

这里需要注意的是@RestController 注解会自动将返回值转换为JSON或XML格式的响应。

注意@RestController=Controller+ResponseBody,二者可以组合起来搭配使用。用RestController注解返回的就只是一个JSON风格的字符串。

我的jdk版本是1.8。
- package com.zhang.pojo;
-
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- @Data //需要导入lomb的相关依赖
- @AllArgsConstructor //有参构造
- @NoArgsConstructor //无参构造
- public class User {
- private String name;
- private int age;
- private String sex;
- }
- <dependencies>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.12version>
- <scope>testscope>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-webmvcartifactId>
- <version>5.3.4version>
- dependency>
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>servlet-apiartifactId>
- <version>2.5version>
- dependency>
- <dependency>
- <groupId>javax.servletgroupId>
- <artifactId>jstlartifactId>
- <version>1.2version>
- dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.coregroupId>
- <artifactId>jackson-databindartifactId>
- <version>2.9.8version>
- dependency>
- <dependency>
- <groupId>org.projectlombokgroupId>
- <artifactId>lombokartifactId>
- <version>1.18.26version>
- <scope>compilescope>
- dependency>
- dependencies>
-
- <build>
- <resources>
- <resource>
- <directory>src/main/javadirectory>
- <includes>
- <include>**/*.propertiesinclude>
- <include>**/*.xmlinclude>
- includes>
- <filtering>falsefiltering>
- resource>
- <resource>
- <directory>src/main/resourcesdirectory>
- <includes>
- <include>**/*.propertiesinclude>
- <include>**/*.xmlinclude>
- includes>
- <filtering>falsefiltering>
- resource>
- resources>
- build>
-
- <context:component-scan base-package="com.zhang.controller"/>
-
- <mvc:default-servlet-handler />
-
- <mvc:annotation-driven />
-
-
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- id="internalResourceViewResolver">
-
- <property name="prefix" value="/WEB-INF/jsp/" />
-
- <property name="suffix" value=".jsp" />
- bean>
-
- <mvc:annotation-driven>
- <mvc:message-converters register-defaults="true">
- <bean class="org.springframework.http.converter.StringHttpMessageConverter">
- <constructor-arg value="UTF-8"/>
- bean>
- <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
- <property name="objectMapper">
- <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
- <property name="failOnEmptyBeans" value="false"/>
- bean>
- property>
- bean>
- mvc:message-converters>
- mvc:annotation-driven>
- "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">
-
-
- <servlet>
- <servlet-name>SpringMVCservlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
-
- <init-param>
- <param-name>contextConfigLocationparam-name>
- <param-value>classpath:springmvc-servlet.xmlparam-value>
- init-param>
-
- <load-on-startup>1load-on-startup>
- servlet>
-
-
- <servlet-mapping>
- <servlet-name>SpringMVCservlet-name>
- <url-pattern>/url-pattern>
- servlet-mapping>
-
- <filter>
- <filter-name>encodingfilter-name>
- <filter-class>com.zhang.Filter.GenericEncodingFilterfilter-class>
- filter>
- <filter-mapping>
- <filter-name>encodingfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
-
- web-app>
- import com.zhang.pojo.User;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
-
- @RestController
- public class UserController {
- @RequestMapping("/json1")
- public String json1() throws JsonProcessingException {
- ObjectMapper mapper=new ObjectMapper();
- User user=new User("章鱼卷",1,"女");
- String str=mapper.writeValueAsString(user);
- return str;
- }
- }

5、ssm整合:Mybatis层

学习就是苦中作乐,加油呀!我还有4天就开学了,呜呜呜,好快!