SpringMVC直接跳转和类型转换

一、跳转问题

mvc正常的跳转逻辑是:index.jsp -> Controller -> success.jsp
而想不经过controller层又要以mvc的形式跳转,则需要下面的操作:
path写拦截的响应 , view-name写跳转的目的地,会自动加上视图解析器的前缀和后缀

<mvc:view-controller path="xxxxx"   view-name="success" />

注意!!!如果只写上面的标签,程序会直接忽略Controller层,想要Controller层的代码和该标签同时有效,需要再加上下面的标签:
该标签也是mvc的基础配置,建议以后的mvc项目都加上该标签

<mvc:annotation-driven></mvc:annotation-driven>

处理静态资源
在SpringMVC中,如果直接访问静态资源:404 。原因:之前将所有的请求 通过通配符“、” 拦截,进而交给 SPringMVC的入口DispatcherServlet去处理:找该请求映射对应的 @requestMapping,如http://localhost:8888/SpringMVCProject/img.png,程序会去找@RequsetMapping(“img.png”)
解决:如果是 需要mvc处理的,则交给@RequsetMapping(“img.png”)处理;如果不需要springmvc处理,则使用 tomcat默认的Servlet去处理。解决静态资源方案:如果有springmvc对应的@requestMapping则交给spring处理;如果没有对应@requestMapping,则交给服务器tomcat默认的servlet去处理 :实现方法,只需要增加2个注解即可 springmvc.xml:

<mvc:default-servlet-handler></mvc:default-servlet-handler>
<mvc:annotation-driven></mvc:annotation-driven>

二、类型转换

Spring自带一些 常见的类型转换器:
public String testDelete(@PathVariable(“id”) String id) ,public String testDelete(@PathVariable(“id”) Integer id)即可以接受int类型数据id 也可以接受String类型的id
自定义类型转换器:
举例子(将字符串转化成学生)
学生类:

public class Student {
    private int id;
    private String name;
    private int age;
    
     public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
        public Student() {
    }
}

编写转化器:

package converter;


import entity.Student;
import org.springframework.core.convert.converter.Converter;

public class MyConverter implements Converter<String, Student> {


    @Override
    public Student convert(String source) {
        //source接受前端传来的String:2-zs-23
        String[] studentStrArr = source.split("-");
        Student student = new Student();
        student.setId(Integer.parseInt(studentStrArr[0]));
        student.setName(studentStrArr[1]);
        student.setAge(Integer.parseInt(studentStrArr[2]));
        return student;
    }
}
//写好后还需要将MYConverter加入到springmvc中,需要三步操作,详情请看Springmvc.xml

xml文件配置:

 <!--1将自定义转换器 纳入SpringIOC容器-->
    <bean id="myConverter" class="converter.MyConverter"></bean>
    <!--2将myConverter再纳入到  springmvc提供的装换器Bean中-->
   <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="myConverter"/>
            </set>
        </property>
    </bean>
    <!--3将conversionService注册到annotation-driver中-->
    <!--此配置是springmvc的基础配置,很多功能都需要通过该注解协调-->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

测试:
前端输入的时候需要安装 1-zs-23,这种格式输入

<form action="handler/testConverter">
    学生信息:<input name="studentInfo" type="text"/>
    <input type="submit" value="转换">
</form>
    @RequestMapping("testConverter")
    public String testConverter(@RequestParam("studentInfo") Student student){//因为自己写的转换器已经配置到springmvc中了,所以这里可以自动转换!
        System.out.println(student);
        return "success";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

键盘歌唱家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值