SpringMVC框架搭建

来源:互联网 发布:人工智能人才培养 编辑:程序博客网 时间:2024/06/05 02:11

最近学习了SpringMVC框架的基本搭建,查阅了不少资料最终可以使用了。这里总结一下,给大家一个参考。Demo里面包含了基本的表单提交、页面重定向、获取JSON以及多文件上传功能。

1.项目结构图



2.jar包截图(可能多了)


jar包分享地址

3.Web.xml配置

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>SpringMVC</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><!-- 自定义servlet配置的位置,默认是在WEB-INF下面,且名称必须为springMVC-servlet.xml --><param-value>classpath:/springMVC-servlet.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- 过滤*.do的请求,这样可以直接访问静态资源 --><url-pattern>*.do</url-pattern></servlet-mapping></web-app>


4.SpringMVC-servlet.xml配置
<?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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="      http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd      http://www.springframework.org/schema/context      http://www.springframework.org/schema/context/spring-context-3.0.xsd      http://www.springframework.org/schema/mvc      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd      "><!-- 默认扫描的包路径 --><context:component-scan base-package="com.cp.demo.controller" /><!-- 添加注解驱动 --><mvc:annotation-driven /><!-- 定义跳转的文件的前后缀 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/jsp/" /><property name="suffix" value=".jsp" /></bean><!-- 文件上传 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 默认编码 --><property name="defaultEncoding" value="UTF-8"></property><!-- 文件大小 --><property name="maxUploadSize" value="10485760000"></property><!-- 缓存大小 --><property name="maxInMemorySize" value="40960"></property></bean></beans>

5.控制器代码
package com.cp.demo.controller;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.multipart.commons.CommonsMultipartResolver;import org.springframework.web.servlet.ModelAndView;import com.cp.demo.bean.User;@Controller@RequestMapping("/user")public class DemoController {// 通过request,获取需要的字段。然后经过业务逻辑处理,跳转到需要跳转的界面// 返回“loginResult”,最后会翻译成 /jsp/loginResult.jsp这个路径@RequestMapping("/doLogin.do")public String login1(HttpServletRequest request,HttpServletResponse response) {String userName = request.getParameter("userName");String passWord = request.getParameter("passWord");System.out.println(userName + "," + passWord);request.setAttribute("loginResult",userName.equals(passWord) ? "login1:登录成功" : "login1:登录失败");return "loginResult";}// 直接返回一个User实体,这个需要各个字段名称一致// @RequestMapping("/doLogin.do")public String login2(User user, HttpServletRequest request) {String userName = user.getUserName();String passWord = user.getPassWord();request.setAttribute("loginResult",userName.equals(passWord) ? "login2:登录成功" : "login2:登录失败");return "loginResult";}// 通过返回一个ModelAndView来跳转,每次要new一下,觉得有点麻烦// @RequestMapping("/doLogin.do")public ModelAndView login3(User user) {ModelAndView mav = new ModelAndView("loginResult");String userName = user.getUserName();String passWord = user.getPassWord();mav.addObject("loginResult", userName.equals(passWord) ? "login3:登录成功": "login3:登录失败");return mav;}// ---------------------------------------------------------------------------------------------------------// 查看url可知,这个和上面几个不同,地址变成XXX.jsp了@RequestMapping("/doRedirect.do")public String doRedirect() {return "redirect:/jsp/redirectPage.jsp";}// --------------------------------------------------------------------------@RequestMapping("/doGetJSON1")@ResponseBodypublic User doGetJSON1(User user) {return user;}// 可以将这个map写在baseController里面,这样就不需要每次都new一个了@RequestMapping("/doGetJSON2")@ResponseBodypublic Object doGetJSON2(User user) {Map<String, Object> map = new HashMap<String, Object>();map.put("success", true);map.put("user", user);return map;}// ------------------------------------------------------------------------------//上传文件,支持多文件上传@RequestMapping("/doUpload.do")public String upload(HttpServletRequest request) throws IllegalStateException {CommonsMultipartResolver resolver = new CommonsMultipartResolver( request.getSession().getServletContext());if (resolver.isMultipart(request)) {MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;Iterator<String> iter = multiRequest.getFileNames();StringBuffer sb = new StringBuffer();while (iter.hasNext()) {MultipartFile file = multiRequest.getFile(iter.next());if (file != null && file.getOriginalFilename() != "") {String fileName = file.getOriginalFilename();String path = "F:/" + fileName;sb.append(path + "<br/>");File localFile = new File(path);try {file.transferTo(localFile);} catch (IOException e) {e.printStackTrace();}}}request.setAttribute("path", sb.toString());}return "uploadResult";}}

核心代码已在上方展示了,下面的则是一些jsp的代码

6.index.jsp(demo入口)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>SpringMVC演示</title><script type="text/javascript"></script></head><body><h1>简单表单提交</h1><form action="user/doLogin.do" method="post">用户名:<input name="userName" value="admin"><br /> 密码:<input name="passWord" value="admin"><br /> <input type="submit" value="登录"></form><hr><h1>页面重定向</h1><form action="user/doRedirect.do" method="post">用户名:<input name="userName" value="admin"><br /> 密码:<inputname="passWord" value="admin"><br /> <input type="submit"value="重定向"></form><hr><h1>获取JSON,直接把bean转换成json</h1><form action="user/doGetJSON1.do" method="post">用户名:<input name="userName" value="admin"><br /> 密码:<inputname="passWord" value="admin"><br /> <input type="submit"value="获取JSON-类型1"></form><h1>获取JSON,自定义返回数据</h1><form action="user/doGetJSON2.do" method="post">用户名:<input name="userName" value="admin"><br /> 密码:<inputname="passWord" value="admin"><br /> <input type="submit"value="获取JSON-类型2"></form><h1>文件上传(name不能为空)</h1><form action="user/doUpload.do" enctype="multipart/form-data" method="post">文件1:<input type="file" name="file1"><br/>文件2:<input type="file" name ="file2"><br/><input type="submit" value="上传"></form></body></html>



7.loginResult.jsp(登录结果显示界面)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>LoginResult.jsp</title><script type="text/javascript"></script></head><body>${loginResult }</body></html>


8.redirectPage.jsp(页面重定向测试页面)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>No Name</title><script type="text/javascript"></script></head><body>重定向界面</body></html>

9.uploadResult.jsp(文件上传结果页面)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>UploadResult.jsp</title><script type="text/javascript"></script></head><body>上传文件路径:<br/>${path }</body></html>

10.User.java(bean)
package com.cp.demo.bean;public class User {private String userName;private String passWord;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}}


0 0
原创粉丝点击