SpringMVC几个核心类(控制器核心类,加载配置文件核心类,处理url影射核心类,处理视图资源核心类,方法动态调用核心类)
核心类
canSpringmvc
- <span style="color:#000000;"><?xml version="1.0" encoding="UTF-8"?>
- <web-app version="3.0"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <display-name></display-name>
- <!-- 架构一个Spring,需要配置一个监听器,配置文件位置及名称若想自己取,则需配置ContextConfigLocation参数 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath:beans.xml
- </param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 架SpringMVC还需再配一个DispatcherServlet -->
- <servlet>
- <servlet-name>hncu</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <!-- 读取类似struts框架的配置文件struts.xml,该配置文件在springmvc的默认命名规则为:servlet的名字+" -servlet.xml "
- 如想自己制定springmvc的配置文件,则应进行以下配置:
- -->
- <init-param>
- <param-name>namespace</param-name>
- <param-value>hncu-servlet</param-value>
- </init-param>
- <!-- 项目一启动就加载SpringMVC的分发器 -->
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>hncu</servlet-name>
- <url-pattern>/sp/*</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
- </span>
- <span style="color:#000000;"><?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"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
- <!-- controller 的bean 可以用id或name标识,但id不能用"/",而name可以("/hello"标明访问路径) -->
- <bean name="/hello" class="cn.hncu.one.HelloWorldController"></bean>
- <!-- 为了把前段的url请求转换成访问对应的bean,要配如下这个类() spring4以后则可省略-->
- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
- <!-- 以转发形式显示的view必须配置下面这个的类以进行解析 -->
- <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
- <property name="basenames">
- <list>
- <value>hncu</value><!-- 资源配置文件在classpath下:hncu.properties -->
- </list>
- </property>
- <property name="defaultParentView" value="hncu"></property><!-- 配置默认父View -->
- </bean>
- <!-- 配置方法动态调用核心类 -->
- <bean id="MethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
- <!-- 默认执行的方法名 -->
- <property name="defaultMethodName" value="execute"></property>
- <property name="paramName" value="method"></property>
- </bean>
- <!-- 第2个Controller,演示多方法动态调用核心类 -->
- <bean name="/muliti" class="cn.hncu.one.MulitiMethodController">
- <property name="methodNameResolver" ref="MethodResolver"></property>
- </bean>
- </beans></span>
第一个controller-----HelloWorldController.java 访问方式:
- <span style="color:#000000;">package cn.hncu.one;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.View;
- import org.springframework.web.servlet.mvc.Controller;
- import org.springframework.web.servlet.view.RedirectView;
- //springmvc中的控制器要实现Controller接口,类似struts的action要实现Action接口一样
- public class HelloWorldController implements Controller{
- /* 版本1
- @Override
- public ModelAndView handleRequest(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- System.out.println("Hello Contorller......");
- return null;//没有导向结果页面
- }
- */
- /* 版本2导向一个重定向的结果页面
- @Override
- public ModelAndView handleRequest(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- System.out.println("Hello Contorller......RedirectView");
- //让控制器返回一个 重定向view
- View view=new RedirectView("/jsps/hello.jsp",true);//参数true表示访问时带项目名
- ModelAndView mv=new ModelAndView();//空参
- mv.setView(view);
- return mv;
- }
- */
- //版本3 导向一个转发的结果页面-----需要在配置文件中加载ResourceBundleViewResolver类
- @Override
- public ModelAndView handleRequest(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- System.out.println("Hello Contorller.....转发 ");
- //让我们的控制器返回一个 转发View
- ModelAndView mv=new ModelAndView("send","name","我的大城院");//导向 send 所对应的资源视图,并且封装参数:name="我的大城院"
- return mv;
- }
- }
- </span>
- <span style="color:#000000;">hncu.(class)=org.springframework.web.servlet.view.JstlView
- hncu.url=/jsps/hello.jsp
- send.url=/jsps/one.jsp
- one.url=/jsps/one.jsp
- two.url=/jsps/two.jsp
- three.url=/jsps/three.jsp
- four.url=/jsps/four.jsp</span>
MulitiMethodController.java
- <span style="color:#000000;">package cn.hncu.one;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
- import cn.hncu.domain.User;
- public class MulitiMethodController extends MultiActionController{
- //反模式:这种不带req和resp两个参数的方法不能被访问(要求至少要两个参数,多个也可以)
- public void one(){
- System.out.println("该方法访问不到.......");
- }
- public String execute(HttpServletRequest req,HttpServletResponse resp){
- System.out.println("这是一个默认方法,可以被访问到。。。。");
- return "one";
- }
- public String two(HttpServletRequest req,HttpServletResponse resp){
- System.out.println("two这个方法,可以被访问到。。。。");
- return "two";
- }
- public ModelAndView three(HttpServletRequest req,HttpServletResponse resp){
- System.out.println("three这个方法,可以被访问到。。。。");
- String name =req.getParameter("name");
- return new ModelAndView("three", "name", name);
- }
- //学习如何封装复杂数据
- public ModelAndView four(HttpServletRequest req,HttpServletResponse resp,User user){
- System.out.println("four这个方法,可以被访问到。。。。");
- ModelAndView mv=new ModelAndView();
- mv.setViewName("four");
- mv.addObject(user);
- return mv;
- }
- }
- </span>
方法名为"four"的访问路径为:http://localhost:8080/canSpringmvc/sp/muliti?method=four&name=Tom&age=21 Spring会帮我们封装对象
- <span style="color:#000000;">package cn.hncu.domain;
- public class User {
- private String name;
- private Integer age;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- @Override
- public String toString() {
- return "User [name=" + name + ", age=" + age + "]";
- }
- }
- </span>
SpringMVC几个核心类(控制器核心类,加载配置文件核心类,处理url影射核心类,处理视图资源核心类,方法动态调用核心类)相关推荐
- Java 类中各成分加载顺序和内存中的存放位置
一.什么时候会加载类? 使用到类中的内容时加载:有三种情况 1.创建对象:new StaticCode(); 2.使用类中的静态成员:StaticCode.num=9; StaticCode.show ...
- Angular项目中核心模块core Module只加载一次的实现
核心模块CoreModule在整个系统中只加载一次,如何实现? 创建core Modele:ng g m core 既然CoreModule是类,就有构造函数,在构造函数中进行依赖注入. export ...
- 你知道 Java 类是如何被加载的吗?
一:前言 最近给一个非Java方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM的ClassLoader,我确实也好久没写JVM相关的文章了,有点手痒痒,涂了皮炎平也抑制不住. 我在向朋友 ...
- java配置文件工具类,java项目加载配置文件的工具类
java项目加载配置文件的工具类 package com.loadproperties; import java.io.IOException; import java.io.InputStream; ...
- java使用哪个类,怎么知道 java类从哪个jar 加载
如何知道 java类从哪个jar 加载 Java的类装载器使用的是优先策略,类加载器加载类的时候先找到哪个就加载哪个 从JSP页面就行测试 JBuilder Generated JSP if(claN ...
- 懒加载和预加载的区别_类的动态创建(ro,rw)amp; 懒加载类和非懒加载类底层加载的区别 amp; 类和分类的搭配分析...
黑客技术点击右侧关注,了解黑客的世界! Java开发进阶点击右侧关注,掌握进阶之路! Python开发点击右侧关注,探讨技术话题!作者丨OSMin链接:https://juejin.im/post/5 ...
- 面试官:你真的知道 Java 类是如何被加载的吗?
来自:https://yq.aliyun.com/articles/710407 一:前言 最近给一个非Java方向的朋友讲了下双亲委派模型,朋友让我写篇文章深度研究下JVM的ClassLoader, ...
- java重写源码类不生效(自己重写的类没有被jvm加载)
背景 很多情况下我们需要调试源码或者修改源码以满足我们的开发需求 我们会项目的java目录下创建一个类,目录和类名都与源码的一致,然后将源码中的代码全部拷贝到我们自己创建的类中,再加入一些我们自己的逻 ...
- iOS开发之控制器创建与加载(生命周期)
1.如何创建一个控制器 控制器常见的创建方式有以下几种: (1)通过storyboard创建 (2)直接创建 MJViewController *mj = [[MJViewController all ...
最新文章
- Go 学习笔记(40)— Go 标准库之 log
- 利用 createTrackbar 进行二值化
- graphviz绘制决策树
- 1135 Is It A Red-Black Tree (30 分)【难度: 难 / 知识点: 红黑树 未完成】
- 集团化后的挚文还有很多“新故事”可以讲
- SpringBatch 读取JSON(JsonItemReader)用法(十一)
- flink sql的datastream与dataset初始化代码汇总
- SmartFoxServer资料
- [react] 在react中遍历的方法有哪些?它们有什么区别呢?
- php 中文截断,PHP中实现中文字串截取无乱码的解决方法
- win7 oracle数据库删除用户名,win7操作系统、 oracle10g 数据库创建、卸载 用户名的创建 、删除...
- RxSwift中Observable的各种创建方法
- js原生继承几种方式
- Undefined index: submit in的错误处理
- Tomcat日志配置,可结合log4j
- speedoffice如何根据身份证号码提取出性别
- 控制/ 状态寄存器(RCC_CSR) 复位
- html中设置粗斜体,HTML基础 b i 字体加粗 斜体
- 睡眠健康与肠道健康之间的双向联系
- 拼多多关键词搜索采集商品数据接口,拼多多分类ID搜索采集商品销量接口,拼多多上货接口