当前位置: 首页 > news >正文

网站开发连接形式怎么做业务网站

网站开发连接形式,怎么做业务网站,怎么建商业网站,成都设计公司装修SpringMVC请求 RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 1. 作用在类上#xff1a;第一级的访问目录 2. 作用在方法上#xff1a;第二级的访问目录 3. 细节#xff1a;路径可以不编写…SpringMVC请求 RequestMapping注解 RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系 RequestMapping注解可以作用在方法和类上 1. 作用在类上第一级的访问目录 2. 作用在方法上第二级的访问目录 3. 细节路径可以不编写 / 表示应用的根目录开始(1).RequestMapping的属性 1. path 指定请求路径的url 2. value value属性和path属性是一样的 3. mthod 指定该方法的请求方式Controller RequestMapping(path /role) // 一级请求路径 public class RoleController {/*** /role/save* method当前方法允许请求方式能访问* params请求路径上传参数* return*/RequestMapping(path /save,method {RequestMethod.GET})public String save(){System.out.println(保存角色...);return suc;}RequestMapping(value /delete)public String delete(){System.out.println(删除角色...);return suc;} }(2).RequestMapping的请求参数绑定 1. 绑定机制 表单提交的数据都是kv格式的 usernamehahapassword123SpringMVC的参数绑定过程是把表单提交的请求参数作为控制器中方法的参数进行绑定的要求提交表单的name和参数的名称是相同的 2. 支持的数据类型 基本数据类型和字符串类型实体类型JavaBean集合数据类型List、map集合等 基本数据类型和字符串类型 提交表单的name和参数的名称是相同的区分大小写 实体类型JavaBean 提交表单的name和JavaBean中的属性名称需要一致如果一个JavaBean类中包含其他的引用类型那么表单的name属性需要编写成对象.属性 例如address.name 给集合属性数据封装 JSP页面编写方式list[0].属性 jsp代码 html headmeta charsetutf-8title入门程序/title /head body h3入门/h3a href/SpringMVC/hello 入门程序/ah1请求参数绑定入门程序/h1form action/SpringMVC/user/save methodgetinput typetext nameusername/br/input typetext nameage/br/input typesubmit//formh1请求参数绑定入门程序封装到实体类/h1form action/user/save1 methodpostinput typetext nameusername/br/input typetext nameage/br/input typesubmit//formh1请求参数绑定入门程序封装到实体类/h1form action/user/save2 methodpostinput typetext nameusername/br/input typetext nameage/br/input typetext nameaccount.money/br/input typesubmit//formh1请求参数绑定入门程序存在list集合/h1form action/user/save3 methodpostinput typetext nameusername/br/input typetext nameage/br/input typetext nameaccount.money/br/input typetext nameaccounts[0].money/br/input typetext nameaccounts[1].money/br/input typesubmit//form /body /htmlJavaBean代码 public class Account {private Double money;public Double getMoney() {return money;}public void setMoney(Double money) {this.money money;}Overridepublic String toString() {return Account{ money money };} }public class User {private String username;private Integer age;private Account account;private ListAccount accounts;public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public Account getAccount() {return account;}public void setAccount(Account account) {this.account account;}public ListAccount getAccounts() {return accounts;}public void setAccounts(ListAccount accounts) {this.accounts accounts;}Overridepublic String toString() {return User{ username username \ , age age , account account , accounts accounts };} } controller代码 Controller RequestMapping(/user) public class UserController {RequestMapping(/save)public String save(String username,Integer age){System.out.println(username);System.out.println(age);return suc;}RequestMapping(/save1)public String save1(User user){System.out.println(user.toString());return suc;}RequestMapping(/save2)public String save2(User user){System.out.println(user);return suc;}RequestMapping(/save3)public String save3(User user){System.out.println(user);return suc;}} 在控制器中使用原生的ServletAPI对象 只需要在控制器的方法参数定义HttpServletRequest和HttpServletResponse对象 RequestMapping(value /save6.do,method {RequestMethod.POST}) public String save6(HttpServletRequest request, HttpServletResponse response){// 获取到HttpSession对象System.out.println(request.getParameter(username));HttpSession session request.getSession();System.out.println(session);System.out.println(response);return suc; }SpringMVC响应 第一章数据处理及跳转 1. 结果跳转方式 ①.ModelAndView 设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 bean idtemplateResolver classorg.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolverproperty nameprefix value/html/ /property namesuffix value.html /property nametemplateMode valueHTML5/ /bean对应的controller类 /*** 返回ModelAndView对象的方式* return*/ RequestMapping(/save3) public ModelAndView save3(){System.out.println(执行了...);// 创建mv对象ModelAndView mv new ModelAndView();// 把一些数据存储到mv对象中mv.addObject(msg,用户名或者密码已经存在);// 设置逻辑视图的名称mv.setViewName(suc);return mv; }②.ServletAPI 通过设置ServletAPI , 不需要视图解析器 . 1、通过HttpServletResponse进行输出 2、通过HttpServletResponse实现重定向 3、通过HttpServletResponse实现转发 Controller RequestMapping(path /role) // 一级请求路径 public class RoleController {RequestMapping(/t1)public void test1(HttpServletRequest req, HttpServletResponse rsp) throws IOException {rsp.getWriter().println(Hello,Spring BY servlet API);}RequestMapping(/t2)public void test2(HttpServletRequest req, HttpServletResponse rsp) throws IOException {rsp.sendRedirect(/SpringMVCDemo/html/suc.html);}RequestMapping(/t3)public void test3(HttpServletRequest req, HttpServletResponse rsp) throws Exception {//转发req.setAttribute(msg,hello);req.getRequestDispatcher(/html/suc.html).forward(req,rsp);}}③.SpringMVC 通过SpringMVC来实现转发和重定向 - 无需视图解析器 测试前需要将视图解析器注释掉 Controller RequestMapping(path /role) // 一级请求路径 public class RoleController {RequestMapping(/t1)public String test1(){//转发return /html/suc.html;}RequestMapping(/t2)public String test2(){//转发二return forward:/html/suc.html;}RequestMapping(/t3)public String test3(){//重定向return redirect:/html/suc.html;}}2.ResponseBody响应json数据 json和JavaBean对象互相转换的过程中需要使用jackson的jar包 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.0/version /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.9.0/version /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-annotations/artifactIdversion2.9.0/version /dependencyDispatcherServlet会拦截到所有的资源导致一个问题就是静态资源img、css、js也会被拦截到从而不能被使用。解决问题就是需要配置静态资源不进行拦截在springmvc.xml配置文件添加如下配置 标签配置不过滤 location元素表示webapp目录下的包下的所有文件mapping元素表示以/static开头的所有请求路径如/static/a 或者/static/a/b !--设置静态资源不过滤-- mvc:resources mapping/css/** location/css// !--样式-- mvc:resources mapping/images/** location/images// !--图片-- mvc:resources mapping/js/** location/js// !--javascript--html代码 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/titlescript srchttps://cdn.staticfile.org/jquery/1.10.2/jquery.min.js/scriptscript// 页面加载$(function(){// 单击事件$(#btn).click(function(){// 发送ajax的请求$.ajax({type: post,url: /SpringMVCDemo/user/save6,data:{username:haha,age:20},success:function(d){// 编写很多代码alert(d.username ‐ d.age);}});});});/script /head body h3异步的数据交互/h3 input typebutton valueajax交互 idbtn /body /htmlcontroller /*** 异步的数据交互* 重定向* return*/ RequestMapping(/save6) public ResponseBody User save6(User user){System.out.println(user);// 模拟调用业务层代码user.setUsername(hello);user.setAge(100);// 把user对象转换成json字符串再响应。使用ResposeBody注解 response.getWriter().print()return user; } 在springMVC当中如果要实现页面跳转就不要使用ajax,如果要json数据的返回就用ajax 第二章SpringMVC实现文件上传 导入文件上传的jar包 dependencygroupIdcommons-fileupload/groupIdartifactIdcommons-fileupload/artifactIdversion1.3.1/version /dependency dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.4/version /dependency在Springmvc.xml配置文件上传解析器 !--配置文件上传的解析器组件。id的名称是固定不能乱写--bean idmultipartResolverclassorg.springframework.web.multipart.commons.CommonsMultipartResolver!--设置上传文件的总大小 8M 8 * 1024 * 1024 --property namemaxUploadSize value8388608 //bean编写文件上传的html页面 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body h3文件上传/h3form idaddForm action/SpringMvc/file/upload methodpost enctypemultipart/form-data选择文件:input typefile namefile width120pxinput typesubmit value上传 /formdiv idupMenu classwhite_contentform iddownForm lay-filterupdata action/SpringMvc/file/down methodgetinput typetext idfilename namefilenameinput typesubmit value下载/forminput typebutton value完成/ /div/body /htmlcontroller层 Controller RequestMapping(/file) public class FileController {/*** 文件上传功能* param file* return* throws IOException*/RequestMapping(value/upload,method RequestMethod.POST)ResponseBodypublic String upload(RequestParam(file) MultipartFile file, HttpServletRequest request) throws IOException {// uploads文件夹位置String rootPath request.getSession().getServletContext().getRealPath(WEB-INF/upload);// 原始名称String originalFileName file.getOriginalFilename();// 新文件File newFile new File(rootPath File.separator File.separator originalFileName);// 判断目标文件所在目录是否存在if( !newFile.getParentFile().exists()) {// 如果目标文件所在的目录不存在则创建父目录newFile.getParentFile().mkdirs();}System.out.println(newFile);// 将内存中的数据写入磁盘file.transferTo(newFile);return {\data\:\success\};}/*** 文件下载功能* param request* param response* throws Exception*/RequestMapping(/down)public void down(HttpServletRequest request, HttpServletResponse response) throws Exception{String filename request.getParameter(filename);System.out.println(filename);//模拟文件myfile.txt为需要下载的文件String fileName request.getSession().getServletContext().getRealPath(WEB-INF/upload)/filename;//获取输入流InputStream bis new BufferedInputStream(new FileInputStream(new File(fileName)));//假如以中文名下载的话// String filename 下载文件.txt;//转码免得文件名中文乱码filename URLEncoder.encode(filename,UTF-8);//设置文件下载头response.addHeader(Content-Disposition, attachment;filename filename);//1.设置文件ContentType类型这样设置会自动判断下载文件类型response.setContentType(multipart/form-data);BufferedOutputStream out new BufferedOutputStream(response.getOutputStream());int len 0;while((len bis.read()) ! -1){out.write(len);out.flush();}out.close();} } 第三章SpringMVC的异常处理 1. 异常处理思路 Controller调用serviceservice调用dao异常都是向上抛出的最终有DispatcherServlet找异常处理器进行异常的处理。 2. SpringMVC的异常处理 ①:使用自己处理异常 controller代码 /*** 自己处理异常* return*/ RequestMapping(/findAll) public String findAll(Model model){try {System.out.println(执行了...);// 模拟异常int a 10/0;}catch (Exception e){model.addAttribute(errorMsg,系统正在维护请联系管理员);return 404;}return suc; }404页面 !DOCTYPE html html langen headmeta charsetUTF-8title错误提示页面/title /head body h1404 b th:text${errorMsg}/b/h1 /body /html②:使用处理器处理异常 controller代码 /*** 使用异常处理器方式* return*/ RequestMapping(/findAll2) public String findAll2(){System.out.println(执行了...);//模拟异常int a 10 / 0;return suc; }自定义异常类 public class SysException extends Exception{// 提示消息private String message;public SysException(String message){this.message message;}Overridepublic String getMessage() {return message;}public void setMessage(String message) {this.message message;}Overridepublic String toString() {return SysException{ message message \ };} }配置异常处理器 !--配置异常处理器-- bean idsysExceptionResolver classcom.qcby.conf.SysExceptionResolver /SpringMVC拦截器 1.什么是拦截器 SpringMVC提供了Intercepter拦截器机制类似于Servlet当中的Filter过滤器用于拦截用户的请求并作出相应的处理比如通过拦截器来进行用户权限验证或者用来判断用户是否登录。 SpringMVC拦截器是可插拔式的设计需要某一功能拦截器就需要在配置文件中应用拦截器即可如果不需要这个功能拦截器只需要在配置文件中取消该拦截器即可。 2.拦截器和过滤器有哪些区别 1.过滤器依赖于servlet,而拦截器技术属于SpringMVC 2.过滤器可对所有请求起作用拦截器只对访问controller层的请求起作用。 3.过滤器会比拦截器先执行。拦截器(Interceptor)是在Servlet和Controller控制器之间执行而过滤器(Filter)是在请求进入Tomcat容器之后 但是在请求进入Servlet之前执行。 3.拦截器方法 想要自定义拦截器需要实现HandlerInterceptor接口。 我们可以看到 HandlerInterceptor接口有三个方法分别是preHandle、postHandle、afterCompletion,关于这三个方法 preHandle 方法 该方法在执行器方法之前执行。返回值为Boolean类型如果返回false,表示拦截不再向下执行如果返回true,表示放行程序向下执行(如果后边没有其他Interceptor,就会执行Controller方法)。所以此方法可对方法进行判断决定程序是否继续执行或者进行一些初始化操作及对请求进行预处理。postHandle方法 该方法在执行控制器方法调用之后且在返回ModelAndView之前执行。由于该方法会在DispatcherServlet进行返回视图渲染之前被调用所以此方法多被用于处理返回的视图 可通过此方法多被用于处理返回的视图可通过此方法对请求域中的模型和视图做进一步的修改。afterCompletion方法 该方法在执行完控制器之后执行。由于是在Controller方法执行完毕之后执行该方法所以该方法适合进行一些资源清理、记录日志信息等处理操作。 4.单个拦截器的执行流程 程序首先会执行拦截器类中的preHandle()方法如果该方法的返回值true,则程序继续向下执行处理器当中的方法否则不在向下执行业务处理器(即控制器Controller类)处理完请求后会执行postHandle()方法然后会通过DispatcherServlet向前端返回响应在DispatcherServlet处理完请求后才会执行afterCompletion()方法。 5.使用拦截器实现用户登录权限验证 Controller层的设计 Controller public class LoginController {/*** 跳转登录页* return*/RequestMapping(value /login,method RequestMethod.GET)public String loginPage(){System.out.println(跳转到login.html页面当中);return login;}/*** 用户登录成功到主页失败回到登录页* param user* param model* param session* return*/RequestMapping(value /login,method RequestMethod.POST)public String login(User user, Model model, HttpSession session){if(user.getUsername() !null user.getUsername().equals(admin) user.getPassword() !null user.getPassword().equals(123456)){System.out.println(用户登录功能实现);//将用户添加到session保存session.setAttribute(user,user);return /suc;}model.addAttribute(msg,账户或密码错误请重新登录);return login;}/*** 跳转到主页* return*/RequestMapping(/index)public String indexPage(){System.out.println(跳转到主页);return suc;}/*** 用户退出登录* param session* return*/RequestMapping(/logout)public String logout(HttpSession session){session.invalidate();//清除sessionSystem.out.println(用户退出登录);return login;}}登录页面 !DOCTYPE html html langen headmeta charsetUTF-8title登录页面/title /head body h1 font colorred b th:text${msg}/b/font/h1 form action/SSMDemo/login methodpost账户input typetext nameusername/密码input typepassword namepassword/input typesubmit value登录/ /form /body /html主页 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body h1Hello b th:text${msg}/b/h1 a href/SSMDemo/logout 入门程序/a /body /html拦截器配置 /*** 登录拦截器*/ public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//获取请求urlString url request.getRequestURI();//非登录请求进行拦截if (!url.contains(login)){//非登录请求获取sessionif(request.getSession().getAttribute(user) ! null){return true;//说明已经登录放行}else { //没有登录跳转到登录页面request.setAttribute(msg,您还没登录。请先登录。。。);request.getRequestDispatcher(/html/login.html).forward(request,response);}}else {return true; //登录请求放行}return true;}//省略了postHandle()和afterCompletion()方法 } 在springMV.xml文件当中配置拦截器 !--配置拦截器-- mvc:interceptorsmvc:interceptormvc:mapping path/**/ !--/**表示所有url--bean classcom.qcby.Interceptor.LoginInterceptor//mvc:interceptor /mvc:interceptors6.多个拦截器的执行流程 当多个拦截器同时工作时它们的preHandle()方法会按照配置文件中拦截器的配置顺序执行而它们的postHandle()方法和afterCompletion()方法则会按照配置顺序的反序执行。 假设有两个拦截器Interceptor1和interceptor2并且在配置文件中Interceptor1拦截器配置在前。
http://www.dnsts.com.cn/news/185494.html

相关文章:

  • 北京pk10盘制作网站建设邢台学校网站建设
  • 凡科可以做返利网站吗如何建一个购物网站
  • 网站建设的业务流程图做直播的网站
  • 免费网站在哪里申请表界面十分好看的网站
  • 做韩国网站有哪些做网站需要实名认证吗
  • 网站建设标语网站优化公司开始上班了
  • 唐河永琚建筑公司网站网络推广的目的有哪些
  • 通用网址通用网站查询网站网页优化技巧
  • 自助建网站的平台 数据库西安模板网站服务商
  • 购物网站开发 项目描述杭州企业营销网站建设公司
  • 现在企业做网站用什么软件深圳如何建立公司自己网站
  • flash网站规划百度网页版官网
  • 互联网 网站建设价格东莞企石做网站
  • 网站建设三网合一指的是什么意思上海公司排名大全
  • 国外网站赚钱正规的网站制作服务电话
  • 百丽鞋业网站建设网站建设公司龙头
  • 儿童网站源码安徽省建设厅焊工证查询网站
  • 厦门网站建设首选厦门一联网络网站静态和动态
  • 鄂尔多斯做网站的公司微信分享的h5网站开发
  • 外贸俄罗斯俄语网站制作深圳网站建设 设计卓越
  • 高密住房和城乡建设局网站固定ip如何做网站服务器
  • 福州网站的优化网站注册费
  • h5 和手机网站wordpress修改后台管理地址=
  • 百度快照抓取的是网站哪里的内容WordPress做app下载
  • 乐清高端网站建设网站首页布局设计教程
  • 可信网站认证收费自己做影视类网站
  • 做店招的网站2016建设银行辽宁招聘网站
  • 专业的网站公司到哪里找wordpress能制作视频网站吗
  • 云南省城市建设培训中心网站英文外贸网站模板
  • 小男生和大人做的网站装修公司加盟免费