博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMVC用法 以及一个简单的基于springMVC hibernate spring的配置
阅读量:4649 次
发布时间:2019-06-09

本文共 11863 字,大约阅读时间需要 39 分钟。

替代struts

1  web.xml中配置springmvc中央控制器

 

springmvc
mvc
org.springframework.web.servlet.DispatcherServlet
1
mvc
/
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext*.xml

 

2

web.xml 中定义了一个名为 mvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在

WEB-INF/mvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。mvc-servlet.xml
的配置内容如下所示:
在WEB-INF建立xxx-servlet.xml 其中xxx代表 web.xml中的<servlet-name>mvc</servlet-name>
名字一致,所以我们在这里建立mvc-servlet.xml

xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

 

3 写controller组件

 

import java.io.File;import java.io.IOException;import java.io.InputStream;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.commons.io.FileUtils;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.support.RedirectAttributes;import com.kaishengit.entity.User;/*我们可以看出 HelloController 和一般的类并没有区别,它没有实现任何特殊的接口,因而是一个地道的 POJO。让这个 POJO特殊就是 Spring MVC 的注解!*//*@Controller、@Service 以及 @Repository 和 @Component 注解的作用是等价的: * 将一个类成为 Spring 容器的 Bean。由于 Spring MVC 的 Controller 必须事先是一个 Bean, * 所以 @Controller 注解是不可缺少的。 */@Controller/* 类似与namespace */@RequestMapping("/book")public class HelloController {/* 与struts不一样的是返回值可以有也可以没有void    struts请求方式是加@action注解,springmvc是加@RequestMapping(value="/upload",method=RequestMethod.POST)    当只写@RequestMapping(method=RequestMethod.POST)的时候默认请求/book(也就是namespace)路径    代表请求的路径是/book/upload,以post的方法提交        return "hello";跟前面配置的视图解析器拼凑成一个路径:就代表前往WEB-INF/views/hello.jsp页面        return "book/hello"跟前面配置的视图解析器拼凑成一个路径:就代表前往WEB-INF/views/book/hello.jsp页面*/            ---------------------------------------------------            // 两个相同的请求路径/book/add 但是请求方式不一样,这个get在这里代表我要去添加页     @RequestMapping(value="/add",method=RequestMethod.GET)    // 想使用的东西都可以从参数中传进来     public ModelAndView add(HttpSession session,HttpServletRequest request,HttpServletResponse response) {        // 页面传参方式1(使用的是request)    返回值是ModelAndView            ModelAndView mav = new ModelAndView();        mav.addObject("name", "Rose");        // 去哪里         mav.setViewName("book/add");        // 放进session中         session.setAttribute("name", "sessionName");        // 放入application中,先用session获取application        ServletContext application = session.getServletContext();        application.setAttribute("name", "appName");                System.out.println("add");        return mav;    }            /* 两个相同的请求路径/book/add 但是请求方式不一样,这个get在这里代表我要去添加页     @RequestMapping(value="/add",method=RequestMethod.GET)    public String add(Model model) {        //页面传参方式2(使用的是request),返回值是String        model.addAttribute("name","jeck");                return "/book/add";    }*/            // 接受表单的值只需要传入表单的name属性值,username要与表单中要传进来的name属性值一致     @RequestMapping(value="/add",method=RequestMethod.POST)    public String save(String username) {        System.out.println(username);        return "redirect:/book/add";    }        // 或者当表单非常多的时候,用对象的形式                    // 两个相同的请求路径/book/add 但是请求方式不一样,这个post在这里代表我要去提交表单    @RequestMapping(value="/add",method=RequestMethod.POST)    /* 表单形式不用变,不用写成name="user.username"仍然用原来的name="username"        springmvc会自动尝试能不能加入到user对象中,不能加进去的仍然是原来的方式接受比如String email        RedirectAttributes指操作成功后给一个提示,然后刷新后提示消失*/            public String save(User user,String zip,RedirectAttributes redirectAttributes) {        System.out.println("Hello,"+user.getUsername() + " : " + user.getPassword() + " : " + zip);                redirectAttributes.addFlashAttribute("message", "保存成功");        // 表示重定向到/book/add 重定向是get请求        return "redirect:/book/add";    }                    --------------------------------------------------------------------                    /* 比如ajax返回一个字符串,直接return "xxx"         但是返回值是String的时候,springmvc会认为返回的是路径的名字--        所以加@ResponseBody表示这是一个相应的内容*/    @RequestMapping("/message")    public @ResponseBody String showMessage() {        return "I love you";    }    // 如果返回的是user(实体类),会自动转换成json 需要导入jackson-all-1.8.10.jar    @RequestMapping(value="/user",method=RequestMethod.GET,produces={"application/json;charset=UTF-8"})    // 也可以加在方法之上     @ResponseBody    public User showUser() {        User user = new User();        user.setUsername("张三丰");        user.setPassword("123123");        return user;    }            -------------------------------------------------------                        /* url传参 */    @RequestMapping("/show/{id1}")    /* 传三个参数,以逗号隔开在url中就是用逗号分隔,用斜杠隔开,在url中就是用斜杠分隔    @RequestMapping("/show/{id1},{id2},{id3}") */    /* 加正则表达式    @RequestMapping("/show/{id1:\\d+},{id2:\\d+},{id3:\\d+}") */    /* 接受url中传来的参数,但是我们不知道这个传来的参数是从url中获得的,还是从表单中获得的,        所以加@PathVariable,代表是从url中获取 参数中的id分别对应上面传来的id,名字要一致*/    public String show(@PathVariable int id1,@PathVariable int id2,@PathVariable int id3) {        System.out.println("ID:" + id1);        System.out.println("ID:" + id2);        System.out.println("ID:" + id3);        return "book/add";    }    /* 如果还想用原始的?xx=xx传参看下面,有的时候还真需要原始的?传参 */----------------------------------------------------------------        @RequestMapping("/page")    public String page(int p) {        System.out.println("pageNo:" + p);        return "book/add";    }            @RequestMapping("/page")    /* 如果参数可有可无@RequestParam,默认是1 */    public String page(@RequestParam(value="p",required=false,defaultValue="1")int p) {        System.out.println("pageNo:" + p);        return "book/add";    }    -------------------------------------------------------------        /* 文件上传 commons-fileupload-1.2.2.jar commons-io-2.4.jar        需要在xxx-servlet.xml配置文件上传解析器*/        
@RequestMapping(value="/upload",method=RequestMethod.POST) /* MultipartFile接受文件对象 */ public String upload(String username,MultipartFile pic) { if(!pic.isEmpty()) { /*
*/ System.out.println("fileName:" + pic.getOriginalFilename()); System.out.println("fileSize:" + FileUtils.byteCountToDisplaySize(pic.getSize())); System.out.println("Content-type:" + pic.getContentType()); System.out.println("username:" + username); /* 方法1: 获得输入流了,接下来你懂的 InputStream inputStream = pic.getInputStream(); */ try { /* 方法2: */ pic.transferTo(new File("C:/kaola.jpg")); } catch (Exception e) { e.printStackTrace(); } } else { System.out.println("file is empty"); } return "redirect:/book/add"; } }

 

 

 

好了,下面介绍一个spring  springMVC hibernate的 框架搭建

--------------------------------------------------------------------

--------------------------------------------------------------------
--------------------------基于springMVC,hibernate,spring------------
--------------------------------------------------------------------
--------------------------------------------------------------------

首先是web.xml

springmvc
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
characterEncodingFilter
/*
openSessionInView
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
openSessionInView
/*
mvc
org.springframework.web.servlet.DispatcherServlet
1
mvc
/
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext*.xml

 

web.xml 中定义了一个名为 annomvc 的 Spring MVC 模块,按照 Spring MVC 的契约,需要在

WEB-INF/annomvc-servlet.xml 配置文件中定义 Spring MVC 模块的具体配置。mvc-servlet.xml
的配置内容如下所示:
在WEB-INF建立xxx-servlet.xml 其中xxx代表 web.xml中的<servlet-name>mvc</servlet-name>
名字一致,所以我们在这里建立mvc-servlet.xml

 

xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

 

spring

 根目录配置applicationContext.xml 

 

org.hibernate.dialect.MySQLDialect
true
true
org.hibernate.cache.ehcache.EhCacheRegionFactory

ehcache.xml 

 

jdbc.properties

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///book?useUnicode=yes&characterEncoding=UTF-8jdbc.name=rootjdbc.password=root

 

转载于:https://www.cnblogs.com/itliucheng/p/4432585.html

你可能感兴趣的文章
Java Security(JCE基本概念)
查看>>
Linux Supervisor的安装与使用入门
查看>>
创建 PSO
查看>>
JasperReport报表设计4
查看>>
项目活动定义 概述
查看>>
团队冲刺04
查看>>
我的Python分析成长之路8
查看>>
泛型在三层中的应用
查看>>
SharePoint2010 -- 管理配置文件同步
查看>>
.Net MVC3中取得当前区域的名字(Area name)
查看>>
获得屏幕像素以及像素密度
查看>>
int与string转换
查看>>
adb命令 判断锁屏
查看>>
推荐一个MacOS苹果电脑系统解压缩软件
查看>>
1035等差数列末项计算
查看>>
CDMA鉴权
查看>>
ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
查看>>
过滤器与拦截器区别
查看>>
USACO 1.5.4 Checker Challenge
查看>>
第二阶段站立会议7
查看>>