wuheng hace 2 años
padre
commit
a01fc17b8a

+ 8 - 0
day02/pom.xml

@@ -10,6 +10,14 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>day02</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>

+ 16 - 0
day02/src/main/java/com/lovecoding/mvc/EncodingFilterDemo.java

@@ -0,0 +1,16 @@
+package com.lovecoding.mvc;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+@Controller
+public class EncodingFilterDemo {
+
+    @PostMapping("/regUser")
+    public String regUser( User user ){
+        System.out.println( user );
+        return "redirect:success.jsp";
+    }
+
+}

+ 22 - 0
day02/src/main/java/com/lovecoding/mvc/MyEncode.java

@@ -0,0 +1,22 @@
+package com.lovecoding.mvc;
+
+import javax.servlet.*;
+import java.io.IOException;
+
+public class MyEncode implements Filter {
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        servletRequest.setCharacterEncoding("UTF-8");
+        servletResponse.setCharacterEncoding("UTF-8");
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+}

+ 91 - 0
day02/src/main/java/com/lovecoding/mvc/RediRectController.java

@@ -0,0 +1,91 @@
+package com.lovecoding.mvc;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Spring MVC 重定向
+ *  操作成功!  中间页面
+ *  我们之前在 JSP 页面输出 301 302 状态码 进行重定向操作
+ */
+
+@Controller
+public class RediRectController {
+
+    /**
+     * 我们访问 A页面 , 转向 B页面
+     * 举例说明
+     *  我们个人所得税退税
+     *  国家网站
+     *  我们填写表单=>  save() 不展示页面的
+     *  重定向操作 save =>  msg 页面 通用消息展示页面
+     *
+     * @return
+     */
+    // 我们重新复习一下 JSP 的重定向
+    @GetMapping("/responseDemo")
+    public void responseDemo(HttpServletResponse resp){
+        try {
+            resp.sendRedirect("http://qq.com");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 使用ModelAndView 跳转
+     * @return
+     */
+    @GetMapping("/redirectModelAndView")
+    public ModelAndView redirectModelAndView( ModelAndView modelAndView){
+        //重定向到 responseDemo 页面
+        //由于 responseDemo 又重定向到了  腾讯
+        //最终我们能看到 qq.com 的页面
+        modelAndView.setViewName("redirect:responseDemo");
+        return modelAndView;
+    }
+
+    /**
+     * URL 重定向 并且 携带参数
+     * @param attributes
+     * @return
+     */
+    @GetMapping("/returnRedirectDemo")
+    public String returnRedirectDemo(RedirectAttributes attributes){
+        attributes.addAttribute("name", "张三");
+        attributes.addAttribute("age", 108);
+        return "redirect:defpage";
+    }
+
+    /**
+     * 默认跳转页面
+     * @return
+     */
+    @GetMapping("/defpage")
+    public String defPage(){
+        return "/defPage.jsp";
+    }
+
+    /**
+     *  请求转发
+     *  JSP 时代 也用过请求转发
+     *  SPringMVC 也可以使用 forward 进行页面转发
+     */
+    @GetMapping("/forwardDemo")
+    public String forwardDemo(){
+
+        //JSP 时代的代码
+        //req.getRequestDispatcher("/index.jsp").forward(req);
+        //SpringMVC时代的代码
+        //return "/index.jsp";
+        //默认return 就是请求转发
+        return "forward:/forwardDemo.jsp";
+    }
+
+}

+ 22 - 0
day02/src/main/java/com/lovecoding/mvc/RequestController.java

@@ -1,11 +1,14 @@
 package com.lovecoding.mvc;
 
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
+import java.util.HashMap;
 
 @Controller
 public class RequestController {
@@ -44,4 +47,23 @@ public class RequestController {
         return modelAndView;
     }
 
+
+    @GetMapping("/mapDemo")
+    public String mapDemo(HashMap<String, Object> map){
+        map.put("msg", "我是mapDemo的Object数据");
+        return "/mapDemo.jsp";
+    }
+
+    @GetMapping("modelDemo")
+    public String modelDemo(Model model){
+        model.addAttribute("msg", "我是 Model 存储的数据");
+        return  "/modelDemo.jsp";
+    }
+
+    @GetMapping("modelMapDemo")
+    public String modelMapDemo(ModelMap modelMap){
+        modelMap.addAttribute("msg", "我是ModelMap对象!");
+        return "modelMapDemo.jsp";
+    }
+
 }

+ 9 - 0
day02/src/main/java/com/lovecoding/mvc/User.java

@@ -0,0 +1,9 @@
+package com.lovecoding.mvc;
+
+import lombok.Data;
+
+@Data
+public class User {
+    String username;
+    Long age;
+}

+ 9 - 0
day02/src/main/webapp/WEB-INF/web.xml

@@ -17,4 +17,13 @@
         <url-pattern>/</url-pattern>
     </servlet-mapping>
 
+    <filter>
+        <filter-name>Encode</filter-name>
+        <filter-class>com.lovecoding.mvc.MyEncode</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>Encode</filter-name>
+        <url-pattern>/</url-pattern>
+    </filter-mapping>
+
 </web-app>

+ 19 - 0
day02/src/main/webapp/defPage.jsp

@@ -0,0 +1,19 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-03-26
+  Time: 上午 11:08
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<h1>
+    你看到了我 就证明重定向生效了
+</h1>
+<body>
+
+</body>
+</html>

+ 23 - 0
day02/src/main/webapp/form.jsp

@@ -0,0 +1,23 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-03-26
+  Time: 上午 11:28
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<div style="width: 400px; margin: 0 auto">
+    <h4> 注册用户 </h4>
+    <form action="<%=request.getContextPath()%>/regUser" method="post" >
+        <input name="username" value="" /> <br />
+        <input name="age" value="" /> <br />
+        <input type="submit" value="提交表单" />
+    </form>
+</div>
+</body>
+</html>

+ 18 - 0
day02/src/main/webapp/forwardDemo.jsp

@@ -0,0 +1,18 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-03-26
+  Time: 上午 11:21
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<h1>
+    你的请求被转发到了我这里!!!
+</h1>
+</body>
+</html>

+ 14 - 0
day02/src/main/webapp/index.jsp

@@ -18,6 +18,20 @@
 <a href="<%=request.getContextPath()%>/sessionDemo?name=李四"> 点击我跳转 sessionDemo 页面 </a>
 <hr />
 <a href="<%=request.getContextPath()%>/modelAndViewDemo"> 点击我跳转 modelAndView 页面 </a>
+<hr />
+<a href="<%=request.getContextPath()%>/mapDemo"> 点击我跳转 mapDemoView 页面 </a>
+<hr />
+<a href="<%=request.getContextPath()%>/modelDemo"> 点击我跳转 ModelDemoView 页面 </a>
+<hr />
+<a href="<%=request.getContextPath()%>/modelMapDemo"> 点击我跳转 modelMapDemo 页面 </a>
+<hr />
+<a href="<%=request.getContextPath()%>/responseDemo"> 点击我跳转 腾讯网站 页面 </a>
+<hr />
+<a href="<%=request.getContextPath()%>/redirectModelAndView"> 点击我二次重定向到 腾讯网站 页面 </a>
+<hr />
+<a href="<%=request.getContextPath()%>/returnRedirectDemo"> 点击我重定向到默认页页面 </a>
+<hr />
+<a href="<%=request.getContextPath()%>/forwardDemo"> 点击我体验请求转发页面 </a>
 
 
 </body>

+ 22 - 0
day02/src/main/webapp/mapDemo.jsp

@@ -0,0 +1,22 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-03-26
+  Time: 上午 10:38
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<h1>
+  <%
+    out.print(
+            request.getAttribute("msg")
+    );
+  %>
+</h1>
+</body>
+</html>

+ 20 - 0
day02/src/main/webapp/modelDemo.jsp

@@ -0,0 +1,20 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-03-26
+  Time: 上午 10:43
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<h1>
+    <%
+        out.print( request.getAttribute("msg") );
+    %>
+</h1>
+</body>
+</html>

+ 22 - 0
day02/src/main/webapp/modelMapDemo.jsp

@@ -0,0 +1,22 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-03-26
+  Time: 上午 10:48
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<h1>
+    <%
+        out.print(
+                request.getAttribute("msg")
+        );
+    %>
+</h1>
+</body>
+</html>

+ 18 - 0
day02/src/main/webapp/success.jsp

@@ -0,0 +1,18 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: lc
+  Date: 2023-03-26
+  Time: 上午 11:35
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <title>Title</title>
+</head>
+<body>
+<h1>
+  恭喜新!操作成功
+</h1>
+</body>
+</html>