• springmvc


    有点类似struts

    1.建立动态工程后,导入包

    在WEB-INF目录下创建 web.xml
    配置Spring MVC的入口 DispatcherServlet,把所有的请求都提交到该Servlet
    注意:springmvc
    springmvc这个名字在下一步会用到

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
    

    2.创建springmvc-servlet.xml

    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        <bean id="simpleUrlHandlerMapping"
            class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
                <props>
                    <prop key="/index">indexController</prop>
                </props>
            </property>
        </bean>
        <bean id="indexController" class="controller.IndexController"></bean>
    </beans>
    

    3.控制类 IndexController

    package controller;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
     
    public class IndexController implements Controller {
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            ModelAndView mav = new ModelAndView("index.jsp");
            mav.addObject("message", "Hello Spring MVC");
            return mav;
        }
    }
    

    4.准备index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" isELIgnored="false"%>
     
    <h1>${message}</h1>
    

    原理图

    笔记

    implements Controller,这个很像以前javaweb中的servlet , 负责转发,传达信息

    视图定位

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/page/"/>
    		<property name="suffix" value=".jsp"/>
    	</bean>
    

    意义

    注解

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context        
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
         
        <context:component-scan base-package="controller" />
        <bean id="irViewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/page/" />
            <property name="suffix" value=".jsp" />
        </bean>
    <!--     <bean id="simpleUrlHandlerMapping" -->
    <!--         class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> -->
    <!--         <property name="mappings"> -->
    <!--             <props> -->
    <!--                 <prop key="/index">indexController</prop> -->
    <!--             </props> -->
    <!--         </property> -->
    <!--     </bean> -->
    <!--     <bean id="indexController" class="controller.IndexController"></bean> -->
    </beans>
    

    学习SpringMVC不需要深入了解xml,会用就可以了

    =====================================

    参数

    package controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    import pojo.Product;
    
    @Controller
    public class ProductController {
    //	控制器ProductController,准备一个add方法映射/addProduct路径
    //	为add方法准备一个Product 参数,用于接收注入
    //	最后跳转到showProduct页面显示用户提交的数据
    	@RequestMapping("/addProduct")
    	public ModelAndView add(Product product) throws Exception{
    		ModelAndView mav = new ModelAndView("showProduct");
    		return mav;
    	}
    }
    
    

    重点

    注: addProduct.jsp 提交的name和price会自动注入到参数 product里
    注: 参数product会默认被当做值加入到ModelAndView 中,相当于:mav.addObject("product",product);

    个人笔记: JSP中的 name="name" name="price" 提交到

    。在ProductController 那边, addProduct.jsp 提交的name和price会自动注入到方法参数 product里 。然后,参数product会默认被当做值加入到ModelAndView 中,相当于:mav.addObject("product",product);**,也相当于以前的那个request.setatttribute("XX",hello);

    springMVC好强大啊 , form 表单 不用get 或者 post 都能接收参数

    一堆 product 傻傻分不清楚,${product} 从何而来,抛砖引玉为大家解惑

    
    绝大部分疑问都是围绕 ${product} 这个 product 到底是哪儿来的,看了站长的回答,其实是有些问题的。
    我自己一开始也是一脸懵逼的,经过多次实验以及google,给大家讲一下吧:
    
    如果按照教程好好学过来,大家应该都知道,EL 表达式中的参数应该是来自于 addObject("abc",xxx) 中的第一个参数 abc
    站长说的半对半错,他告诉你们参数 product 会默认被当做值加入到 ModelAndView 中
    但是没有说,这只是 addObject() 第二个参数的来历,有疑问的其实更关心第一个参数,也就是我们 EL 表达式中要用到的这个 "product" 从何而来:)
    
    一句话,大家就能明白:
    add()方法的【参数类型】会自动转小驼峰并加入到 ModelAndView 中作为 addObject() 的【第一个参数】,相当于 addObject("theFirstParam", product);
    
    综上:addObject 里第一个参数是根据 add() 的参数类型自动转成小驼峰命名,第二个参数是 add() 的参数名。
    
    区分命名,举个极端的栗子就明白了,这里代码看的不爽点上面【代码】到那里看
    
    bean:
    public class MyFuckingProduct {...};
    
    controller:
    public ModelAndView add(MyFuckingProduct 随便写我写中文应该没人发现吧) {...}
    
    jsp:
    ${myFuckingProduct.xxx}
    
    跑一下,bingo!
    
    大家注意 add() 方法的参数,参数名是什么根本不用管,瞎写一通 fhdhdfai2u3y,没有关系,因为默认的 addObject()方法第一个参数只跟你的参数类型有关系,第二个参数就是你瞎写的参数名。
    相当于:addObject("myFuckingProduct", 随便写我写中文应该没人发现吧);
    然后 EL 表达式写什么就很明了了。
    
    也就是解答下面的疑惑
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601095529221-505056154.png)
    
    
    
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601101751774-2147182770.png)
    
    
    ===============================
    
    ###客户端跳转(个人认为是相当于重定向)
    在前面的例子中,无论是/index跳转到index.jsp 还是/addProduct 跳转到showProduct.jsp,都是服务端跳转。((个人认为是相当于转发))。
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601102944946-688802196.png)
    
    
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601104130288-211931082.png)
    
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601104140068-634425259.png)
    
    
    ###Session在用户登录,一些特殊场合在页面间传递数据的时候会经常用到
    
    ##重要发现
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601113906313-663585324.png)
    
    
    session的作用就是服务器会为不同的浏览器创建一个新的JSESSIONID 。 
    上面演示的就是同一台电脑,打开了2个不同的浏览器的 
    session在浏览器关闭时 就会结束,并销毁这个流浪器JSESSIONID 的标识号
    
    经我实验确实这样,我又重新打开一个新的浏览器,发现它的JSESSIONID=8E6CFCF25896A903EA99DB97575A2797 ,总之 这个应该标记号应该是全球唯一的。估计还带有机器码相关的算法
    
    
    
    ##在Spring MVC中处理中文问题和Filter处理中文问题是一样的手段
    
    修改web.hml
    
    
    



    springmvc

    org.springframework.web.servlet.DispatcherServlet

    1


    springmvc
    /


    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter

    encoding
    utf-8



    CharacterEncodingFilter
    /*

    
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601162459890-354870292.png)
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601162558812-704366895.png)
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601162807375-180311363.png)
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601162820411-1668161588.png)
    
    ![](https://images2018.cnblogs.com/blog/1175089/201806/1175089-20180601162909579-1257819798.png)
  • 相关阅读:
    GetArxPath
    动态链接库
    获取文件名称 消除前面的绝对地址路径
    arx 插入图片
    cstring to utf8
    map 用法
    异常处理
    面向对象 "一"
    configparser模块
    装饰器
  • 原文地址:https://www.cnblogs.com/czy16/p/9114250.html
Copyright © 2020-2023  润新知