SpringMVC学习

SpringMVC项目配置步骤

(1)add Framework support… 选中web项目
(2)配置tomcat服务器,添加一个artifact
(3)WEB-INF下新建lib目录放入相关jar包
(4)加载jar包:Project Structure -> Libraries -> 加一个lib选中项目目录下对应lib位置(记得选中对应项目)
(5)在src下粘贴springmvc.xml文件,修改其中需要扫描的包(属性base-package)
(6)在web -> WEB-INF下的web.xml中使用alt+enter处理报错位置

部分用法 & 小知识总结

(1)使用时先新建一个XXXController类,然后在类前加上@Controller注解
(2)@RequestMapping注解可以让前台访问时能找到对应类和方法
(3)方法前可以通过加上在RequestMapping(value = “/insert”, method = RequestMethod.POST)注解中的method参数,来限制 方法可以接收的请求类型,如果不写,默认get和post请求都可以接收
(4)页面上的属性要和类里面的一致才可以使用
(5)访问完希望到一个页面展示,如果没有任何操作会报404错误
(6)要返回json格式数据,先导入3个jar包(保证3个jar包加载上),在方法前加上注解@ResponseBody,如果不需要就不要写
(7)SpringMVC中重定向的写法:return “redirect:/student/selectAll.action”(注意这里不用写项目名是因为SpringMVC帮我们简化了写法,而不是重定向本身不需要)
(8)SpringMVC中转发到一个页面展示:return “/student_info.jsp”(转发本身就不需要项目名)
(9)@RequestParam(value = “page”, required = true, defaultValue = “5”)注解的三个参数(里面所有的设置是用于后台中的一个参数):value用于前后台参数名的适配(当前台传过来的参数名和后台不一样时,可以设置value的值为前台的参数名,可以让前台的该参数名的参数适配后台的对应参数),required用于设置是否必须要传递该参数(如果设置该值为true,若前台没有传递过来这个参数,就会出现400错误),defaultValue用于设置参数的缺省值,如果前台没有传递该参数,那么会把该值赋给后台对应参数。
(10)405错误:找到了,但是不支持的请求(限制了接收的请求是post或者get之后,如果发送另一种请求则会出现这样的错误)
(11)400错误:错误的请求(少了参数)

另一种前台向后台参数传递的写法(参数作为路径传递):
// 另一种传参数的写法
// /SpringMVC/student/deleteById1/12.action
@RequestMapping("/deleteById1/{id}")
// 参数作为路径传递需要加上下面的注解
public String deleteById1(@PathVariable("id") Integer id) {
    System.out.println("StudentController.deleteById1");
    System.out.println("id: " + id);
    return "redirect:/student/selectAll.action";
}
视图解析器:使用SpringMVC转发到页面展示等,让我们写转发路径时更简单一些

相当于自动加上对应的前缀和后缀,但是注意因为已经自动加上了,所以如果我们不去掉已有的对应前缀和后缀就会访问出错,需要配置springmvc.xml文件。springmvc.xml中的配置:

<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <!-- 路径前缀 -->
   <property name="prefix" value="/jsp/"/>
   <!-- 路径后缀 -->
   <property name="suffix" value=".jsp"></property>
</bean>
拦截器的使用

相当于之前的filter,用法有所不同:新建MyInterceptor类implements实现HandlerInterceptor接口,重写其中的preHandle、postHandle和afterCompletion方法。相当于把原来filter中doFilter方法之前和之后的操作分开成了两个方法preHandle和postHandle,preHandle是在访问到后台之前的一些限制条件(方法返回值为boolean类型变量,true则继续访问,false则停止继续访问),postHandle是返回的过程中的操作。简单示例:

public class MyInterceptor1 implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        System.out.println("MyInterceptor1.preHandle");
        // true继续访问,false不继续执行
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println("MyInterceptor1.postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}

springmvc.xml文件中需要加上的配置:

<!-- 配置拦截器 -->
<mvc:interceptors>
   <mvc:interceptor>
      <mvc:mapping path="/**"/>
      <!--路径需要修改-->
      <bean class="mvc.interceptor.MyInterceptor1"/>
   </mvc:interceptor>
   <mvc:interceptor>
      <mvc:mapping path="/**"/>
      <bean class="mvc.interceptor.MyInterceptor2"/>
   </mvc:interceptor>
</mvc:interceptors>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值