java:Springmvc框架2(Ajax,Interceptor,)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java:Springmvc框架2(Ajax,Interceptor,),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含19119字,纯文字阅读大概需要28分钟。
内容图文
1.springmvcAjax:
springmvc.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: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-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" > <!-- 注解扫描!!! --> < context:component-scan base-package ="cn.zzsxt" ></ context:component-scan > <!-- 配置视图解析器 --> <!-- InternalResourceViewResolver:支持JSP视图解析 --> <!-- viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar包; --> <!-- prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为: --> <!-- 前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello, --> <!-- 则最终返回的jsp视图地址 "WEB-INF/view/hello.jsp" --> < bean class ="org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name ="viewClass" value ="org.springframework.web.servlet.view.JstlView" ></ property > < property name ="prefix" value ="/WEB-INF/jsp/" ></ property > < property name ="suffix" value =".jsp" ></ property > </ bean > <!-- 注解映射器 说明 :对类中标记@ResquestMapping的方法进行映射,根据ResquestMapping定义的url匹配 ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装url对应的方法Method --> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> --> <!-- 注解适配器 说明:注解式处理器适配器,对标记@ResquestMapping的方法进行适配。 --> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> --> <!-- springmvc使用<mvc:annotation-driven> --> <!-- 自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter, --> <!-- 可用在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。 --> < mvc:annotation-driven conversion-service ="conversionService" ></ mvc:annotation-driven > <!-- 自定义类型转换器 --> < bean id ="conversionService" class ="org.springframework.format.support.FormattingConversionServiceFactoryBean" > < property name ="converters" > < list > < bean class ="cn.zzsxt.converter.CustomDateConverter" ></ bean > </ list > </ property > </ bean > <!-- 处理静态资源 让静态资源可以直接访问 --> <!-- <mvc:resources mapping="/js/**" location="/js/"/> --> <!-- 当在web.xml 中 DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时,能映射静态资源 --> < mvc:default-servlet-handler /> </ beans >
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" 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 >springmvc01</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!-- 解决post提交乱码问题 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- spring mvc的前端控制器,类似struts2的核心过滤器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 通过contextConfigLocation参数指定配置文件的位置,默认在WEB-INF/查找名称为 [servlet-name]-servlet.xml --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!-- servlet随web容器而启动 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
UserController.java:
package cn.zzsxt.controller; import java.util.HashMap; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import cn.zzsxt.model.Userinfo; import cn.zzsxt.service.UserService; import cn.zzsxt.service.impl.UserServiceImpl; import cn.zzsxt.vo.ResultMessage; @Controller @RequestMapping("/user") publicclass UserController { private UserService userService = new UserServiceImpl(); @RequestMapping(value="login",method=RequestMethod.GET) public String login(){ return "login"; } @RequestMapping(value="register",method=RequestMethod.GET) public String register(){ return "register"; } /** * @ResponseBody:将java对象转换为json对象 * @RequestBody:将json对象转换为java对象 * @param userName * @return*/ @RequestMapping(value="check",method=RequestMethod.GET) @ResponseBody public Map<String,Object> check(@RequestBody String userName){ boolean isExist = userService.checkUserName(userName); Map<String,Object> map = new HashMap<String,Object>(); map.put("isExist", isExist); return map; } @RequestMapping(value="register",method=RequestMethod.POST) @ResponseBody public ResultMessage register(@RequestBody Userinfo user){ //此处@RequestBody出错的话不加? boolean success = userService.add(user); String message=success?"添加成功!":"添加失败!"; ResultMessage rm = new ResultMessage(); rm.setSuccess(success); rm.setMessage(message); return rm; } }
CustomDateConverter.java:
package cn.zzsxt.converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.core.convert.converter.Converter; /** * 自定义类型转换器 * @author Think * */ public class CustomDateConverter implements Converter<String, Date> { @Override public Date convert(String source) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = sdf.parse(source); return date; } catch (ParseException e) { e.printStackTrace(); } returnnull; } }
ResultMessage.java:
package cn.zzsxt.vo; public class ResultMessage { private boolean success;//是否新增成功private String message;//操作完成后的提升消息publicboolean isSuccess() { return success; } publicvoid setSuccess(boolean success) { this.success = success; } public String getMessage() { return message; } publicvoid setMessage(String message) { this.message = message; } }
login.jsp:
<% @ page language = " java " import = " java.util.* " pageEncoding = " UTF-8 " %> <% String path = request.getContextPath(); String basePath = request.getScheme() + " :// " + request.getServerName() + " : " + request.getServerPort() + path + " / " ; %> <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > < html > < head > < base href ="<%=basePath%>" > < title >My JSP ‘login.jsp‘ starting page</title><script type="text/javascript" src="js/jquery-3.2.1.min.js"></script><script type="text/javascript"> $(function(){ $("#userName").blur(function(){ var userName = $("#userName").val(); $.get("user/check?userName="+userName,function(data){ if(data.isExist==true){ $("#msg").html("<font color=red>用户名已存在!</font>"); $("#submitBtn").attr("disabled",true); }else{ $("#msg").html("<font color=green>用户名可用!</font>"); $("#submitBtn").attr("disabled",false); } }); }); }) </script></head><body><form action="" method="post"> 用户名:<input type="text" name="userName" id="userName"/><span id="msg"></span><br> 密码:<input type="text" name="userPass"/><br><input type="submit" value="登录" id="submitBtn"></form></body></html>
register.jsp:
<% @ page language = " java " import = " java.util.* " pageEncoding = " UTF-8 " %> <% String path = request.getContextPath(); String basePath = request.getScheme() + " :// " + request.getServerName() + " : " + request.getServerPort() + path + " / " ; %> <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > < html > < head > < base href ="<%=basePath%>" > < title >My JSP ‘login.jsp‘ starting page</title><script type="text/javascript" src="js/jquery-3.2.1.min.js"></script><script type="text/javascript"> $(function(){ //单机注册按钮 $("#submitBtn").click(function(){ //获取表单元素的值var userName = $("#userName").val(); var userPass = $("#userPass").val(); var address = $("#address").val(); var birthday = $("#birthday").val(); var jsonData =‘{"userName":"‘+userName+‘","userPass":"‘+userPass+‘","address":"‘+address+‘","birthday":"‘+birthday+‘"}‘; // alert(jsonData); $.ajax({ type:"POST", url:"user/register", contentType:"application/json", data:jsonData, success: function(msg){ // alert( "Data Saved: " + msg ); alert(msg.message); } }); }); }) </script></head><body><form action="" method="post"> 用户名:<input type="text" name="userName" id="userName"/><span id="msg"></span><br> 密码:<input type="text" name="userPass" id="userPass"/><br> 地址:<input type="text" name="address" id="address"><br> 生日:<input type="text" name="birthday" id="birthday"><br><input type="button" value="注册" id="submitBtn"></form></body></html>
2.springmvcInterceptor:
springmvc.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: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-4.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" > <!-- 注解扫描!!! --> < context:component-scan base-package ="cn.zzsxt.controller" ></ context:component-scan > <!-- 配置视图解析器 --> <!-- InternalResourceViewResolver:支持JSP视图解析 --> <!-- viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar包; --> <!-- prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为: --> <!-- 前缀+逻辑视图名+后缀,逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为hello, --> <!-- 则最终返回的jsp视图地址 "WEB-INF/view/hello.jsp" --> < bean class ="org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name ="viewClass" value ="org.springframework.web.servlet.view.JstlView" ></ property > < property name ="prefix" value ="/WEB-INF/jsp/" ></ property > < property name ="suffix" value =".jsp" ></ property > </ bean > <!-- 注解映射器 说明 :对类中标记@ResquestMapping的方法进行映射,根据ResquestMapping定义的url匹配 ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装url对应的方法Method --> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> --> <!-- 注解适配器 说明:注解式处理器适配器,对标记@ResquestMapping的方法进行适配。 --> <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> --> <!-- springmvc使用<mvc:annotation-driven> --> <!-- 自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter, --> <!-- 可用在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置。 --> < mvc:annotation-driven ></ mvc:annotation-driven > <!-- 处理静态资源 让静态资源可以直接访问 --> <!-- <mvc:resources mapping="/jquery-ui-1.12.1.custom/**" location="/jquery-ui-1.12.1.custom/"/> --> <!-- 当在web.xml 中 DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时,能映射静态资源 --> < mvc:default-servlet-handler /> <!-- 配置拦截器, 多个拦截器,顺序执行 --> < mvc:interceptors > < mvc:interceptor > <!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller --> < mvc:mapping path ="/**" /> < bean class ="cn.zzsxt.interceptor.MyCustomInterceptor" ></ bean > </ mvc:interceptor > <!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 --> < mvc:interceptor > <!-- 配置拦截的匹配路径 --> < mvc:mapping path ="/**" /> <!-- 配置放行的匹配路径 --> < mvc:exclude-mapping path ="/user/login" /> < bean class ="cn.zzsxt.interceptor.LoginInterceptor" ></ bean > </ mvc:interceptor > </ mvc:interceptors > </ beans >
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" 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 >springmvc01</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!-- 解决post提交乱码问题 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- spring mvc的前端控制器,类似struts2的核心过滤器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 通过contextConfigLocation参数指定配置文件的位置,默认在WEB-INF/查找名称为 [servlet-name]-servlet.xml --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!-- servlet随web容器而启动 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
TestController.java:
package cn.zzsxt.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/t") publicclass TestController { @RequestMapping("/hello") public String hello(){ System.out.println("TestController中hello()方法被执行了...."); return "success"; } }
UserController.java:
package cn.zzsxt.controller; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import cn.zzsxt.model.Userinfo; @Controller @RequestMapping("/user") publicclass UserController { @RequestMapping(value="/login",method=RequestMethod.GET) public String login(){ return "login"; } @RequestMapping(value="/login",method=RequestMethod.POST) public String login(Userinfo user,HttpSession session){ if("admin".equals(user.getUserName())&&"admin".equals(user.getUserPass())){ //将用户信息保持到sesssion中 session.setAttribute("loginUser", user); return "redirect:/user/list"; } return "login"; } @RequestMapping(value="/list") public String list(Model model){ //从数据库中查询用户信息 List<Userinfo> list = new ArrayList<Userinfo>(); for (int i = 1; i <=5; i++) { Userinfo user = new Userinfo(i,"zhang"+i,"zhang"+i); list.add(user); } model.addAttribute("list", list); return "list"; } }
LoginInterceptor.java:
package cn.zzsxt.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import cn.zzsxt.model.Userinfo; public class LoginInterceptor implements HandlerInterceptor { @Override publicboolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { HttpSession session = request.getSession();//获取session //从session中获取用户信息 Userinfo user=(Userinfo)session.getAttribute("loginUser"); if(user!=null){ returntrue; }else{ response.sendRedirect("login"); returnfalse; } } @Override publicvoid afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub } @Override publicvoid postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub } }
MyCustomInterceptor.java:
package cn.zzsxt.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyCustomInterceptor implements HandlerInterceptor { /** * 在控制器方法调用前执行 * 返回值为是否中断 * true,表示继续执行(下一个拦截器或处理器) * false则会中断后续的所有操作,所以我们需要使用response来继续响应后续请求 */ @Override publicboolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { System.out.println("preHandle()方法被执行了......."); returntrue; } /** * 在控制器方法调用后,解析视图前调用,我们可以对视图和模型做进一步渲染或修改 * 可在modelAndView中加入数据,比如当前时间 */ @Override publicvoid postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView modelAndView) throws Exception { System.out.println("postHandle()方法被执行了....."); } /** * 整个请求完成,即视图渲染结束后调用,这个时候可以做些资源清理工作,或日志记录 */ @Override publicvoid afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) throws Exception { System.out.println("afterCompletion方法被执行了...."); } }
原文:http://www.cnblogs.com/kuangzhisen/p/7450600.html
内容总结
以上是互联网集市为您收集整理的java:Springmvc框架2(Ajax,Interceptor,)全部内容,希望文章能够帮你解决java:Springmvc框架2(Ajax,Interceptor,)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。