SpringMVC案例3----spring3.0项目拦截器、ajax、文件上传应用

简介:

依旧是项目结构图和所需jar包图:



显示配置文件hib-config.xml

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xsi:schemaLocation="  
  8. http://www.springframework.org/schema/beans   
  9. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  10. http://www.springframework.org/schema/tx  
  11. http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  12. http://www.springframework.org/schema/aop   
  13. http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
  14.   http://www.springframework.org/schema/context     
  15.    http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  16. ">  
  17. <context:component-scan base-package="com.sxt"></context:component-scan>  
  18. <!-- 支持aop注解 -->  
  19. <aop:aspectj-autoproxy></aop:aspectj-autoproxy>  
  20.   
  21. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  22.     <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
  23.     <property name="url" value="jdbc:mysql://localhost:3306/crud"></property>  
  24.     <property name="username" value="root"></property>  
  25.     <property name="password" value="root"></property>  
  26. </bean>  
  27.   
  28. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  29.     <property name="dataSource">  
  30.         <ref bean="dataSource"></ref>  
  31.     </property>  
  32.     <property name="hibernateProperties">  
  33.         <props>  
  34.             <prop key="hibernate.dialect">  
  35.                 org.hibernate.dialect.MySQLDialect  
  36.             </prop>  
  37.             <prop key="hibernate.show_sql">  
  38.                 true  
  39.             </prop>  
  40.             <prop key="hibernate.hbm2ddl.auto">update</prop>  
  41.         </props>  
  42.     </property>  
  43.     <property name="packagesToScan">  
  44.         <value>com.sxt.po</value>  
  45.     </property>  
  46. </bean>  
  47.   
  48. <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">  
  49.     <property name="sessionFactory" ref="sessionFactory"></property>  
  50. </bean>  
  51.   
  52. <!-- 配置一个JdbcTemplate实例 -->  
  53. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  54.     <property name="dataSource" ref="dataSource"></property>  
  55. </bean>  
  56.   
  57. <!-- 配置事务管理 -->  
  58. <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  59.     <property name="sessionFactory" ref="sessionFactory"></property>  
  60. </bean>  
  61.   
  62. <tx:annotation-driven transaction-manager="txManager"/>  
  63. <aop:config>  
  64.     <aop:pointcut expression="execution(public * com.sxt.service.impl.*.*(..))" id="businessService"/>  
  65.     <aop:advisor advice-ref="txAdvice" pointcut-ref="businessService"/>  
  66. </aop:config>  
  67. <tx:advice id="txAdvice" transaction-manager="txManager">  
  68.     <tx:attributes>  
  69.         <tx:method name="find*" read-only="true" propagation="NOT_SUPPORTED"/>  
  70.         <!-- get开头的方法不需要在事务中运行。有些情况是没有必要使用事务的。比如获取数据,开启事务本身对性能本身是有一定的影响的 -->  
  71.         <tx:method name="*"/>  
  72.     </tx:attributes>  
  73. </tx:advice>  
  74. </beans>  

再是springmvc-servlet.xml

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"      
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      
  4.     xmlns:p="http://www.springframework.org/schema/p"      
  5.     xmlns:mvc="http://www.springframework.org/schema/mvc"      
  6.     xmlns:context="http://www.springframework.org/schema/context"      
  7.     xmlns:util="http://www.springframework.org/schema/util"      
  8.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd      
  9.             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd      
  10.             http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd      
  11.             http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">  
  12.     <!-- 対web包中的所有的类进行扫描,以完成bean的创建和自动依赖输入功能 -->  
  13.     <context:component-scan base-package="com.sxt"></context:component-scan>  
  14.     <!-- 启动springmvc的注解功能,完成请求和注解POJO的映射 -->  
  15.     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
  16.         <property name="cacheSeconds" value="0"></property>  
  17.         <property name="messageConverters">  
  18.             <list>  
  19.                 <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
  20.                 </bean>  
  21.             </list>  
  22.         </property>  
  23.     </bean>  
  24.     <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->  
  25.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >  
  26.         <property name="suffix" value=".jsp"></property>  
  27.         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />  
  28.     </bean>  
  29.     <!-- 处理文件上传 -->  
  30.     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  31.         <!-- 默认编码 -->  
  32.         <property name="defaultEncoding" value="utf-8"></property>  
  33.         <property name="maxInMemorySize" value="10240"/><!-- 最大内存大小 -->  
  34.         <!-- 上传后的目录名 -->  
  35.         <property name="uploadTempDir" value="/upload/"></property>  
  36.         <!-- 最大文件大小,-1为无限制 -->  
  37.         <property name="maxUploadSize" value="-1"></property>  
  38.           
  39.     </bean>  
  40.     <mvc:interceptors>  
  41.         <!-- 拦截所有springmvc的url -->  
  42.         <bean class="com.sxt.interceptor.MyInterceptor"></bean>  
  43.         <mvc:interceptor>  
  44.             <mvc:mapping path="/user.do"/>  
  45.             <bean class="com.sxt.interceptor.MyInterceptor2"></bean>  
  46.         </mvc:interceptor>  
  47.     </mvc:interceptors>  
  48. </beans>  

web.xml
[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.     <servlet>  
  8.         <servlet-name>springmvc</servlet-name>  
  9.         <servlet-class>  
  10.             org.springframework.web.servlet.DispatcherServlet  
  11.         </servlet-class>  
  12.         <init-param>  
  13.             <param-name>contextConfigLocation</param-name>  
  14.             <param-value>  
  15.                 /WEB-INF/hib-config.xml,/WEB-INF/springmvc-servlet.xml  
  16.             </param-value>  
  17.         </init-param>  
  18.         <load-on-startup>1</load-on-startup>  
  19.     </servlet>  
  20.     <servlet-mapping>  
  21.         <servlet-name>springmvc</servlet-name>  
  22.         <url-pattern>*.do</url-pattern>  
  23.     </servlet-mapping>  
  24. </web-app>  
dao层的userDao

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.dao;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.beans.factory.annotation.Qualifier;  
  7. import org.springframework.orm.hibernate3.HibernateTemplate;  
  8. import org.springframework.stereotype.Component;  
  9. import org.springframework.stereotype.Repository;  
  10.   
  11. import com.sxt.po.User;  
  12. @Repository("userDao")  
  13. public class UserDao {  
  14.     @Autowired  
  15.     private HibernateTemplate hibernateTemplate ;  
  16.       
  17.     public void add(User u){  
  18.         System.out.println("userDao.add()");  
  19.         hibernateTemplate.save(u) ;  
  20.     }  
  21.       
  22. }  

模型层的user类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.po;  
  2.   
  3. import javax.persistence.Entity;  
  4. import javax.persistence.GeneratedValue;  
  5. import javax.persistence.GenerationType;  
  6. import javax.persistence.Id;  
  7.   
  8. @Entity  
  9. public class User {  
  10.     private int id ;  
  11.     private String name ;  
  12.     private String pwd ;  
  13.     public User(){}  
  14.     public User(String name,String pwd){  
  15.         this.name = name ;  
  16.         this.pwd = pwd ;  
  17.     }  
  18.     @Id  
  19.     @GeneratedValue(strategy=GenerationType.AUTO)  
  20.     public int getId() {  
  21.         return id;  
  22.     }  
  23.     public void setId(int id) {  
  24.         this.id = id;  
  25.     }  
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.     public void setName(String name) {  
  30.         this.name = name;  
  31.     }  
  32.     public String getPwd() {  
  33.         return pwd;  
  34.     }  
  35.     public void setPwd(String pwd) {  
  36.         this.pwd = pwd;  
  37.     }  
  38.       
  39.       
  40. }  

service层的userService类
[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.service;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.stereotype.Service;  
  7.   
  8. import com.sxt.dao.UserDao;  
  9. import com.sxt.po.User;  
  10. @Service("userService")  
  11. public class UserService {  
  12.     @Autowired  
  13.     private UserDao userDao ;  
  14.     public void add(String name){  
  15.         System.out.println("UserService.add()");  
  16.         User u = new User() ;  
  17.         u.setName(name) ;  
  18.         userDao.add(u) ;  
  19.     }  
  20.       
  21. }  
controller层的userController类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.action;  
  2.   
  3. import javax.annotation.Resource;  
  4. import javax.servlet.http.HttpServletRequest;  
  5.   
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7. import org.springframework.ui.ModelMap;  
  8. import org.springframework.web.bind.annotation.RequestMapping;  
  9. import org.springframework.web.bind.annotation.RequestParam;  
  10. import org.springframework.web.bind.annotation.SessionAttributes;  
  11.   
  12. import com.sxt.service.UserService;  
  13. @org.springframework.stereotype.Controller("userController")  
  14. @RequestMapping("/user.do")  
  15. @SessionAttributes({"uname"})  
  16. public class UserController{  
  17.     @Autowired  
  18.     private UserService userService ;  
  19.     @RequestMapping(params="method=reg")  
  20.     public String reg(String uname){  
  21.         System.out.println("UserController.reg()");  
  22.         userService.add(uname) ;  
  23.         return "index" ;  
  24.     }  
  25.     @RequestMapping(params="method=reg2")  
  26.     public String reg2(@RequestParam("uname")String name,ModelMap map){  
  27.         System.out.println("UserController.reg2()");  
  28.         userService.add(name) ;  
  29.         map.put("b", "bbb") ;  
  30.         return "index" ;  
  31.     }  
  32.     @RequestMapping(params="method=reg3")  
  33.     public String reg3(String uname,ModelMap map){  
  34.         System.out.println("UserController.reg3()");  
  35.         userService.add(uname) ;  
  36.         System.out.println(uname);  
  37.         map.put("uname", uname) ;  
  38.         return "index" ;  
  39.     }  
  40.     @RequestMapping(params="method=reg4")  
  41.     public String reg4(String uname,ModelMap map){  
  42.         System.out.println("UserController.reg4()");  
  43. //      return "forward:user.do?method=reg3" ;    //转发,不写默认就是转发  
  44.         return "redirect:http://www.baidu.com" ;//重定向  
  45.     }  
  46.     @RequestMapping(params="method=reg5")  
  47.     public String reg5(String uname){  
  48.         System.out.println("UserController.reg4()");  
  49.         return "redirect:http://www.baidu.com" ;//重定向  
  50.     }  
  51.       
  52. }  

MyAjaxController类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.action;  
  2.   
  3. import java.io.UnsupportedEncodingException;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import org.springframework.stereotype.Controller;  
  8. import org.springframework.web.bind.annotation.RequestMapping;  
  9. import org.springframework.web.bind.annotation.RequestMethod;  
  10. import org.springframework.web.bind.annotation.ResponseBody;  
  11.   
  12. import com.sxt.po.User;  
  13. @Controller  
  14. @RequestMapping("myajax.do")  
  15. public class MyAjaxController {  
  16.     @RequestMapping(params="method=test2",method=RequestMethod.GET)  
  17.     public @ResponseBody List<User> test1(String uname) throws Exception{  
  18.         String uname2 = new String(uname.getBytes("iso8859-1"),"utf-8") ;  
  19.         System.out.println(uname2);  
  20.         System.out.println("MyAjaxController.test1()");  
  21.         List<User> list = new ArrayList<User>() ;  
  22.         list.add(new User("吴海旭","123")) ;  
  23.         list.add(new User("韩敬琼","456")) ;  
  24.         System.out.println(list.size());  
  25.         return list ;  
  26.     }  
  27. }  

FileUoLoadController类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.action;  
  2.   
  3. import java.io.File;  
  4. import java.util.Date;  
  5.   
  6. import javax.servlet.ServletContext;  
  7.   
  8. import org.apache.log4j.chainsaw.Main;  
  9. import org.springframework.stereotype.Controller;  
  10. import org.springframework.web.bind.annotation.RequestMapping;  
  11. import org.springframework.web.bind.annotation.RequestMethod;  
  12. import org.springframework.web.bind.annotation.RequestParam;  
  13. import org.springframework.web.context.ServletContextAware;  
  14. import org.springframework.web.multipart.commons.CommonsMultipartFile;  
  15. @Controller("fileUpLoadController")  
  16. public class FileUpLoadController implements ServletContextAware{  
  17.     private ServletContext servletContext ;  
  18.     @Override  
  19.     public void setServletContext(ServletContext servletContext) {  
  20.         // TODO Auto-generated method stub  
  21.         this.servletContext = servletContext ;  
  22.     }  
  23.     @RequestMapping(value="/upload.do",method=RequestMethod.POST)  
  24.     public String handleUploadData(String name,@RequestParam("file")CommonsMultipartFile file){  
  25.         if(!file.isEmpty()){  
  26.             //获取本地存储路径,必须在项目下建立一个这样的路径  
  27.             String path = this.servletContext.getRealPath("/upload/") ;  
  28.             System.out.println(path);  
  29.             //获取文件名称  
  30.             String fileName = file.getOriginalFilename() ;  
  31.             //获取文件后缀名  
  32.             String fileType = fileName.substring(fileName.lastIndexOf(".")) ;  
  33.             System.out.println(fileType);  
  34.             File file2 = new File(path,new Date().getTime()+fileType) ;  
  35.             try {  
  36.                 file.getFileItem().write(file2) ;  
  37.             } catch (Exception e) {  
  38.                 // TODO Auto-generated catch block  
  39.                 e.printStackTrace();  
  40.             }  
  41.             return "redirect:upload_ok.jsp" ;  
  42.         }else{  
  43.             return "redirect:upload_error.jsp" ;  
  44.         }  
  45.     }  
  46. }  

拦截器层的MyInterceptor类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.interceptor;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import org.springframework.web.servlet.HandlerInterceptor;  
  7. import org.springframework.web.servlet.ModelAndView;  
  8.   
  9. public class MyInterceptor implements HandlerInterceptor{  
  10.   
  11.     @Override  
  12.     public void afterCompletion(HttpServletRequest arg0,  
  13.             HttpServletResponse arg1, Object arg2, Exception arg3)  
  14.             throws Exception {  
  15.         // TODO Auto-generated method stub  
  16.         System.out.println("最后执行,一般用于释放资源!!!");  
  17.     }  
  18.   
  19.     @Override  
  20.     public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,  
  21.             Object arg2, ModelAndView arg3) throws Exception {  
  22.         // TODO Auto-generated method stub  
  23.         System.out.println("action执行之后,生成视图之前!!");  
  24.     }  
  25.   
  26.     @Override  
  27.     public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,  
  28.             Object arg2) throws Exception {  
  29.         // TODO Auto-generated method stub  
  30.         System.out.println("action之前执行");  
  31.         return true;  
  32.     }  
  33.   
  34. }  

MyInterceptor2类

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.sxt.interceptor;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4. import javax.servlet.http.HttpServletResponse;  
  5.   
  6. import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;  
  7.   
  8. public class MyInterceptor2 extends HandlerInterceptorAdapter{  
  9.     @Override  
  10.     public boolean preHandle(HttpServletRequest request,  
  11.             HttpServletResponse response, Object handler) throws Exception {  
  12.         // TODO Auto-generated method stub  
  13.         System.out.println("MyInterceptor2.preHandle()");  
  14.         return true;  
  15.     }  
  16. }  

用于测试ajax的a.jsp文件

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'a.jsp' starting page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.     <script>  
  23.         function createAjaxObj(){  
  24.             var req ;  
  25.             if(window.XMLHttpRequest){  
  26.                 req = new XMLHttpRequest() ;  
  27.             }else{  
  28.                 req = new ActiveXObject("Msxml2.XMLHTTP") ;  
  29.             }  
  30.             return req ;  
  31.         }  
  32.         function sendAjaxReq(){  
  33.             var req = createAjaxObj() ;  
  34.             req.open("get","myajax.do?method=test2&uname=张三") ;  
  35.             req.setRequestHeader("accept","application/json") ;  
  36.             req.onreadystatechange = function(){  
  37.                 var msg = req.responseText ;  
  38.                 eval("var result=" + msg) ;  
  39.                 document.getElementById("div1").innerHTML = result[0].name ;  
  40.             }  
  41.             req.send(null) ;  
  42.         }  
  43.     </script>  
  44.   </head>  
  45.     
  46.   <body>  
  47.     <a href="javascript:void(0);" onclick="sendAjaxReq();">测试</a>  
  48.     <div id="div1"></div>  
  49.   </body>  
  50. </html>  

index.jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'index.jsp' starting page</title>  
  13.     <meta http-equiv="pragma" content="no-cache">  
  14.     <meta http-equiv="cache-control" content="no-cache">  
  15.     <meta http-equiv="expires" content="0">      
  16.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  17.     <meta http-equiv="description" content="This is my page">  
  18.     <!-- 
  19.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  20.     -->  
  21.   </head>  
  22.     
  23.   <body>  
  24.     ${requestScope.uname} <br />  
  25.     ${sessionScope.uname} <br />  
  26.   </body>  
  27. </html>  

index2.jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'index2.jsp' starting page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.   
  23.   </head>  
  24.     
  25.   <body>  
  26.     <form action="user.do">  
  27.         姓名:<input type="text" name="uname"/><br />  
  28.         <input type="hidden" name="method" value="reg3">  
  29.         <input type="submit" value="注册 " />  
  30.     </form>  
  31.   </body>  
  32. </html>  

upload_error.jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'upload_error.jsp' starting page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.   
  23.   </head>  
  24.     
  25.   <body>  
  26.         <h1>上传失败!</h1>  
  27.   </body>  
  28. </html>  

upload_ok.jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'upload_ok.jsp' starting page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.   
  23.   </head>  
  24.     
  25.   <body>  
  26.         <h1>上传成功!</h1>  
  27.   </body>  
  28. </html>  

upload.jsp

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>测试springmvc中的上传的实现</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.   
  23.   </head>  
  24.     
  25.   <body>  
  26.     <form action="upload.do" method="post" enctype="multipart/form-data">  
  27.         <input type="text" name="name" />  
  28.         <input type="file" name="file" />  
  29.         <input type="submit" />  
  30.     </form>  
  31.   </body>  
  32. </html>  

至此整个springmvc重要的东西测试完毕!
目录
相关文章
|
9天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
86 62
|
6天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
22天前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
30 1
Spring MVC——项目创建和建立请求连接
|
22天前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
99 1
Maven——创建 Spring Boot项目
|
7天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
20 2
|
20天前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
22天前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
14天前
|
存储 Java 数据管理
强大!用 @Audited 注解增强 Spring Boot 应用,打造健壮的数据审计功能
本文深入介绍了如何在Spring Boot应用中使用`@Audited`注解和`spring-data-envers`实现数据审计功能,涵盖从添加依赖、配置实体类到查询审计数据的具体步骤,助力开发人员构建更加透明、合规的应用系统。
|
21天前
|
JSON JavaScript 前端开发
《进阶篇第7章》学习vue中的ajax之后,练习vue案例-github用户搜索案例
《进阶篇第7章》学习vue中的ajax之后,练习vue案例-github用户搜索案例
13 0
|
21天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
49 0