SpringMVC使用方法

3:SpringMVC使用

1.创建web项目,导入对应jar包
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- junit测试包 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
        <scope>test</scope>
    </dependency>
    <!-- spring核心包 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
	  <!-- spring web集成 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>${spring.version}</version>
    </dependency>
	
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- mybatis核心包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>
    <!-- mybatis/spring包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.2.2</version>
    </dependency>
    <!-- 导入java ee jar 包 -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>8.0</version>
        <scope>provided</scope>
    </dependency>
    <!-- 导入Mysql数据库链接jar包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.30</version>
    </dependency>
    <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.2.2</version>
    </dependency>
    <!-- JSTL标签类 -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <!-- 日志文件管理包 -->
    <!-- log start -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>


    <!-- 格式化对象,方便输出日志 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.1.41</version>
    </dependency>


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <!-- log end -->
    <!-- 映入JSON -->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.7.4</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.7.4</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.7.4</version>
    </dependency>
    <!-- 上传组件包 -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.9</version>
    </dependency>
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.8.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
    </dependency>

    <!-- aop 反向代理 https://mvnrepository.com/artifact/com.sun.jersey/jersey-bundle -->
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-bundle</artifactId>
        <version>1.19.3</version>
    </dependency>
	 <!-- 封装了各种网络协议的客户端,支持FTP、NNTP、SMTP、POP3、Telnet等协议 -->
    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>3.3</version>
    </dependency>
2. 添加配置文件

​ 1)web.xml

<!‐‐ springmvc配置文件 DispatcherServlet 核心控制器 ‐‐>
    <servlet>
        <servlet‐name>springDispatcherServlet</servlet‐name>
        <servlet‐class>org.springframework.web.servlet.DispatcherServlet</servle t‐class>
        <!‐‐ 初始化加载参数 ‐‐>
            <init‐param>
                <!‐‐ 初始化加载springmvc配置文件 ‐‐>
                <param‐name>contextConfigLocation</param‐name>
                <!‐ classpath什么时候需要加  和spring框架有关系的配置文件 都添加classpath:   ‐‐>
                <param‐value>classpath:springmvc.xml</param‐value>
            </init‐param>
        <!‐‐ 项目启动的时候就加载该配置文件 ‐‐>
        <load‐on‐startup>1</load‐on‐startup>
    </servlet>
    <servlet‐mapping>
        <servlet‐name>springDispatcherServlet</servlet‐name>
        <!‐‐ springmvc会拦截所有以 .do结尾的请求 如果我们引入了静态文件,需要改为/ ‐‐> 
        <url‐pattern>*.do</url‐pattern>
    </servlet‐mapping>

​ 2) 配置添加 springmvc.xml

<!‐‐ 扫描当前包下的注解 ‐‐>
<context:component‐scan base‐package="com.by.controller"></context:component‐scan>
 <!‐‐ 注解驱动:自动加载最新版的处理器映射器和处理器适配器 ‐‐>
<mvc:annotation‐driven></mvc:annotation‐driven>     
3. Controller 层方法

​ 规范:包名:controller 类名:XxxController

@Controller
@RequestMapping("userController")
public class UserController {
         @ResponseBody
        @RequestMapping("test")
        public String test() {
            System.out.println("userController test方法被访问");
            return "success";
        }
    }
4.访问路径中传递参数

使用@PathVariable 注解获取路径中的参数,在test1方法的()将@PathVariable 添加在参数上,就会把路径中的参数赋值给()中的参数

@ResponseBody
@RequestMapping(value="testGet/{id}",method=RequestMethod.GET)
public String test1(@PathVariable("id")Integer id) {
    System.out.println("userController testGet方法被访问"+id);
    return "success";
}
5.如何跳转页面

​ 路径:

​ 相对路径 return “test.jsp”;

​ 绝对路径 return “/test.jsp”;

​ 页面存放的位置:

​ web项目的jsp文件存储:在web项目中WEB-INF下的目录是受保护的意思,它下边的jsp页面不能直接访问。

​ 自定义文件夹,存放jsp

​ 创建 /WEB‐INF/view/user 目录

​ 把user相关的jsp内容添加在该目录中

​ 案例:跳转到增加页面

@RequestMapping("toAddUserPage")
public String toAddUserPage() {
    return "/WEB‐INF/view/user/addUser.jsp";
}
6.当我们添加上视图解析器后可简化代码

视图解析器作用:自动给后面controller 的方法return的字符串加上前缀和后缀,变成一个可用的url地址

springmvc.xml新增配置:

 <!‐‐ 配置视图解析器 ‐‐>
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!‐‐ 前缀 ‐‐>
    <property name="prefix" value="/WEB‐INF/view/" />
    <!‐‐ 后缀 ‐‐>
    <property name="suffix" value=".jsp" />
</bean>

此时controller层增加方法跳转

@RequestMapping("toAddUserPage")
public String toAddUserPage() {
    return "user/addUser";
}
7.使用ModelAndView对象跳转页面

案例: 跳转到修改页面 使用ModelAndView对象来跳转jsp页面

@RequestMapping("toUpdateUserPage")
    public ModelAndView toUpdateUserPage() {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("user/updateUser");
        return mv;
    }
8. 获取jsp页面传递的参数
1)增加方法获取参数,在参数中可以直接获取到 HttpServletRequest  request

​ 使用request.getParameter()可以获取到参数

@ResponseBody
@RequestMapping(value="addUser",method=RequestMethod.POST)
    public void addUser(HttpServletRequest request) {
        String userId = request.getParameter("userId");
        String userName = request.getParameter("userName");
        System.out.println(userId + " ‐‐‐ "+ userName);
    }

​ 2) 直接获取参数:addUser(Integer userId,String userName)

@ResponseBody
@RequestMapping(value="addUser",method=RequestMethod.POST)
public void addUser(Integer userId,String userName) {
    System.out.println(userId + " ‐‐‐ "+ userName);
}

​ 3) 直接添加对象:addUser(User user)

​ 注意:from表单中的name值 必须要和实体类保持一致

@ResponseBody
@RequestMapping(value="addUser",method=RequestMethod.POST)
    public void addUser(User user) {
    System.out.println(user);
 }
常见问题:

​ 1)404: 路径有问题

​ 2)405:get、post 传递有错误

​ 3)400:时间格式异常

​ 4)500:参数传递问题

9:如何从controller层向jsp页面传递参数

​ 1)通过ModelMap 进行传递

案例:通过id查询数据-回显数据 将查询到的数据传递到update页面

@RequestMapping("selectUserById/{id}")
public String selectUserById(@PathVariable("id")Integer userId,ModelMap map) {
    //去后台查询数据
    //模拟数据
    User user =new User(userId,"ZS");
    //通过ModelMap将数据传递到前台页面
    map.put("user", user);
    return "user/updateUser";
 }

​ 2)通过Model 进行传递

@RequestMapping("selectUserById/{id}")
public String selectUserById(@PathVariable("id")Integer userId,Model model) {
    //去后台查询数据
    //模拟数据
    User user =new User(userId,"ZS");
    //通过ModelMap将数据传递到前台页面
    model.addAttribute("user", user);
    return "user/updateUser";
}

​ 3)通过ModelAndView进行传递

@RequestMapping("selectUserById/{id}")
public ModelAndView selectUserById(@PathVariable("id")Integer userId) {
    ModelAndView mv = new ModelAndView();
    //去后台查询数据
    //模拟数据
    User user =new User(userId,"ZS");
    //通过ModelMap将数据传递到前台页面
    mv.addObject("user", user);
    mv.setViewName("user/updateUser");
   return mv;
 }
10.日期类型

​ 出现 400:数据类型出现问题

​ 默认接受的是 yyyy/MM/dd

​ 如果传递 yyyy‐MM‐dd,出现400

解决方案: 如果要传递 yyyy‐MM‐dd的解决办法:在实体类中规定一下

   @DateTimeFormat(pattern="yyyy‐MM‐dd")
     private Date userBir;
11.单独跳转页面方法

方法一在controller:

@RequestMapping("list2")
public String toList(){
    return "meet2/list";
}

方法二 在springmvc配置文件添加配置

<mvc:view‐controller path="/list2" view‐name="meet2/list">
</mvc:view‐controller>
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值