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

网站源码建站教程今日国内新闻大事件

网站源码建站教程,今日国内新闻大事件,京津新城建设管委会网站,wordpress 密码忘记目录 SpringMVC简介复习servletSpringMVC入门导包配置前端控制器编写处理器实现Contoller接口普通类加注解(常用) 路径问题获取参数的方式过滤器简介自定义过滤器配置框架提供的过滤器 springMVC向页面传值的三种方式视图解析器springMVC的转发和重定向 SpringMVC简介 1.Sprin…

目录

      • SpringMVC简介
      • 复习servlet
      • SpringMVC入门
        • 导包
        • 配置前端控制器
        • 编写处理器
          • 实现Contoller接口
          • 普通类加注解(常用)
        • 路径问题
        • 获取参数的方式
        • 过滤器简介
          • 自定义过滤器
          • 配置框架提供的过滤器
        • springMVC向页面传值的三种方式
        • 视图解析器
        • springMVC的转发和重定向

SpringMVC简介

1.SpringMVC是一个基于MVC模式的WEB/表现层框架,它解决WEB开发中常见的问题:参数接收、文件上传/下载、表单验证、国际化等等;
2.SpringMVC作为Spring框架一个非常重要的功能模块,可以与Spring无缝集成,提高开发效率;
3.Spring是一个轻量级的Java 开发框架,为了解决企业应用开发的复杂性而创建。SpringMVC以Spring框架为核心,为应用程序中的Web层(表现层)提出的一套优秀的解决方案;
4.目前很多公司都使用SpringMVC,90%的招聘单位要求熟悉使用SpringMVC;
注意:SpringMvc的功能就是之前Servlet的功能,可以理解为使用SpringMVC代替了Servlet;
在这里插入图片描述

复习servlet

见代码:
创建动态web工程 - HelloServlet - web.xml - Tomcat

HelloServlet

public class HelloServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {System.out.println("进来了");}
}

web.xml

  <servlet><servlet-name>helloServlet</servlet-name><servlet-class>cn.ming.controller.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>

部署到Tomcat,浏览器访问localhost/hello

tips:
1.Target runtime:选上tomcat后就自动导入了相关jar包,不用再去lib添加相关jar包
2.Dynamic web module version:选3.0以上版本,因为支持注解,如@webservlet
3.创建动态web工程后怎么修改classes路径?
项目右键 - build path - Configure Build Path - source - 放到WEB-INF下的classes
4.为什么部署到webapp而不是部署到项目根目录?
因为WEB-INF下有看不到的classes路径,外面的java代码已编译到里面

SpringMVC入门

导包

SpringMvc是Spring的一个模块,所以要用SpringMvc需要导入Spring的jar包
在这里插入图片描述
tips:动态web工程一般导完包后会自动编译,不用手动build path

配置前端控制器

以前servlet的方式
在这里插入图片描述
现在的方式
在这里插入图片描述
前端控制器就是springMVC提供的servlet,接收所有请求但不处理请求,发给处理器即一个个方法去处理,所以需要配置前端控制器

web.xml

  <servlet><servlet-name>dispatcherServlet</servlet-name><!-- 前端控制器 人家写好的servlet --><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 加载SpringMVC的核心配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springMVC.xml</param-value></init-param><!-- Tomcat启动就初始化servlet --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><!-- 请求路径 --><url-pattern>/hello</url-pattern></servlet-mapping>

springMVC.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
"></beans>
编写处理器

业务处理控制器的三种实现:
1.实现Contoller接口
2.实现HttpRequestHandler接口
3.普通类加注解(常用)

实现Contoller接口

HelloController

public class HelloController implements Controller{@Overridepublic ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {System.out.println("我是HelloController");return null;}}

springMVC.xml

<bean name="/hello.do" class="cn.ming.controller.HelloController"></bean>

web.xml

  <servlet-mapping><servlet-name>dispatcherServlet</servlet-name><!-- 请求路径 --><url-pattern>*.do</url-pattern></servlet-mapping>
普通类加注解(常用)

上面这两种太局限:方法名固定了,参数固定,返回值固定,还要实现一个接口。所以后面都用第三种

HiController

@Controller	  // 代表当前这个类就是controller 交给spring管理  不用再配置bean
//@RequestMapping("/hi")
public class HiController {@RequestMapping("/hello.do")public void handler1() {System.out.println("我回来了");}public void handler2() {}public void handler3() {}
}

springMVC.xml

	<!-- 开启扫描包路径 --><context:component-scan base-package="cn.ming.controller" />
路径问题

后缀匹配:匹配的范围太小
/*:匹配所有请求,会将css,html,jsp都匹配上,一般用在过滤器,对于restful不友好
/:匹配所有请求,最常用,不会拦截.jsp,但是会拦截静态资源(css,html,images)(/替代了tomcat中默认处理静态资源的Servlet),所以需要配置静态资源放行,但是这又会导致@RequestMapping等注解失效,所以还要加上使spring注解生效的配置

代码:
web.xml

  <servlet-mapping><servlet-name>dispatcherServlet</servlet-name><!-- 请求路径 --><url-pattern>/</url-pattern></servlet-mapping>

springMVC.xml

	<!-- 放行静态资源 --><mvc:default-servlet-handler/><!-- 使spring注解生效 @RequestMapping--><mvc:annotation-driven />

webapp下新建index.html

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><h1>hello world</h1>
</body>
</html>

HiController

@Controller	  // 代表当前这个类就是controller 交给spring管理  不用再配置bean
//@RequestMapping("/hi")
public class HiController {@RequestMapping("/hello.do")public void handler1() {System.out.println("我回来了");}@RequestMapping("/hi.do")public void handler2() {System.out.println("hi.do。。");}@RequestMapping("/hei")public void handler3() {System.out.println("hei.....");}
}

启动tomcat分别测试访问页面和controller

获取参数的方式

tips:浏览器访问默认发get请求,表单可以自己选发get或post

ParamController

/*** springMVC接收参数的四种方式*/
@Controller
public class ParamController {/*** 一般不用  以前的方式* http://localhost/handler1?name=zs*/@RequestMapping("/handler1") // 请求的路径public void handler1(HttpServletRequest request){String name = request.getParameter("name");System.out.println(name);}/*** 常用   重点   类型要符合,名称要相同* http://localhost/handler2?name=ls&age=18*/@RequestMapping("/handler2") // 请求的路径public void handler2(String name,Integer age){System.out.println(name);System.out.println(age);}/*** 常用  重点   对象接收参数    * http://localhost/handler3?name=ls&age=18*/@RequestMapping("/handler3") // 请求的路径public void handler3(User user){System.out.println(user);}/*** 暂时不用   restful风格方式   * localhost:80/handler4/zs/30*/@RequestMapping("/handler4/{name}/{age}") // 请求的路径public void handler4(@PathVariable("name")String name, @PathVariable("age")Integer age){System.out.println(name);System.out.println(age);}
}

启动tomcat,浏览器访问

过滤器简介

tips:浏览器地址栏默认都是get,发post请求可以用表单指定,get请求在tomcat里自己解决了中文乱码,而post需要自己解决中文乱码
代码里每个处理器都设置字符集太麻烦,所以现在用filter过滤器

filter:过滤器
作用:乱码问题,过滤非法字符
执行时机:请求到达前端控制器之前
在这里插入图片描述
在这里插入图片描述

自定义过滤器

form.html

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><form action="/handler3" method="post">name: <input type="text" name="name"><br/>age: <input type="text" name="age"><br/><input type="submit" value="提交"></form>
</body>
</html>

MyFilter

public class MyFilter implements Filter{//初始化方法@Overridepublic void init(FilterConfig arg0) throws ServletException {}//处理具体的内容@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)throws IOException, ServletException {System.out.println("filter。。。。。。");// 处理乱码问题req.setCharacterEncoding("utf-8");// 放行chain.doFilter(req, resp);}//销毁方法@Overridepublic void destroy() {}}

web.xml

  <filter><filter-name>myFilter</filter-name><filter-class>cn.ming.filter.MyFilter</filter-class></filter><filter-mapping><filter-name>myFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

浏览器访问

配置框架提供的过滤器

web.xml

  <!-- 我们用框架提供的支持UTF-8编码的过滤器 --><filter><filter-name>characterEncoding</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><!--强制指定字符编码,即使request或response设置了字符编码,也会强制使用当前设置的,任何情况下强制使用此编码--><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>
springMVC向页面传值的三种方式

方式一:
DataController

@Controller
@RequestMapping("/data")
public class DataController {/*** 向页面传值方式一:  不常用。。。*/@RequestMapping("/handler1")public ModelAndView handler1(){		ModelAndView mv = new ModelAndView();// 向request域存值mv.addObject("name","tom");mv.addObject("age",30);		// 跳转到页面mv.setViewName("/WEB-INF/views/data.jsp");return mv;}/*** 向页面传值方式二: 常用*/@RequestMapping("/handler2")public String handler2(Model model){// 向request域存值model.addAttribute("name", "王天霸");model.addAttribute("age", "40");return "/WEB-INF/views/data.jsp";}/*** 向页面传值方式三 : 常用*/@RequestMapping("/handler3")public String handler3(Map<String,Object> map){// 向request域存值map.put("name", "力很弱");map.put("age", 60);return "/WEB-INF/views/data.jsp";   //返回页面}
}

data.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>Insert title here</title>
</head>
<body>${name}<br/>${age}
</body>
</html>
视图解析器

视图解析器:把页面的前后缀配置起来,后面就都只需要简写

springMVC.xml

 	<!-- 视图解析器  prefix+return+suffix = /WEB-INF/views/data.jsp --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"></property><property name="suffix" value=".jsp"></property>	</bean>

DataController

	/*** 向页面传值方式三 : 常用*/@RequestMapping("/handler3")public String handler3(Map<String,Object> map){// 向request域存值map.put("name", "力很弱");map.put("age", 60);return "data";   //返回页面}
springMVC的转发和重定向

DataController

	/*** 转发和重定向* 使用forward(转发)和redirect(重定向)都不会走视图解析器,但它们之间的区别还是存在*/@RequestMapping("/handler4")public String handler4(){// 默认是转发   走视图解析器// return "data";// 不走视图解析器   forward:转发// return "forward:/index.html";// 不走视图解析器   redirect:重定向return "redirect:/index.html";}

在这里插入图片描述


文章转载自:
http://bulgar.rmyn.cn
http://hypoalimentation.rmyn.cn
http://abrasion.rmyn.cn
http://bellywhop.rmyn.cn
http://fleece.rmyn.cn
http://ribosomal.rmyn.cn
http://allusive.rmyn.cn
http://angry.rmyn.cn
http://lamish.rmyn.cn
http://delos.rmyn.cn
http://backdrop.rmyn.cn
http://discourteously.rmyn.cn
http://scleroprotein.rmyn.cn
http://bobwhite.rmyn.cn
http://headdress.rmyn.cn
http://unuttered.rmyn.cn
http://immoderately.rmyn.cn
http://cossette.rmyn.cn
http://admeasure.rmyn.cn
http://amylene.rmyn.cn
http://bureau.rmyn.cn
http://commuterland.rmyn.cn
http://protection.rmyn.cn
http://farina.rmyn.cn
http://rimu.rmyn.cn
http://sisterless.rmyn.cn
http://rehospitalization.rmyn.cn
http://robbia.rmyn.cn
http://ocotillo.rmyn.cn
http://peerage.rmyn.cn
http://hydrologist.rmyn.cn
http://sleave.rmyn.cn
http://hamamatsu.rmyn.cn
http://bladesmith.rmyn.cn
http://lyingly.rmyn.cn
http://tetramethyldiarsine.rmyn.cn
http://nemoricolous.rmyn.cn
http://antiphonic.rmyn.cn
http://oxazepam.rmyn.cn
http://safecracker.rmyn.cn
http://nzbc.rmyn.cn
http://marbly.rmyn.cn
http://aqaba.rmyn.cn
http://artisanship.rmyn.cn
http://counseling.rmyn.cn
http://groomsman.rmyn.cn
http://indemnify.rmyn.cn
http://nonprotein.rmyn.cn
http://kinema.rmyn.cn
http://plenty.rmyn.cn
http://indefinite.rmyn.cn
http://shaanxi.rmyn.cn
http://consanguineous.rmyn.cn
http://firmly.rmyn.cn
http://haematological.rmyn.cn
http://plastometer.rmyn.cn
http://conium.rmyn.cn
http://irreversibility.rmyn.cn
http://dobber.rmyn.cn
http://hydraemic.rmyn.cn
http://towery.rmyn.cn
http://tangram.rmyn.cn
http://photoplate.rmyn.cn
http://vermicidal.rmyn.cn
http://nonconformism.rmyn.cn
http://enarthroses.rmyn.cn
http://letch.rmyn.cn
http://seric.rmyn.cn
http://whippet.rmyn.cn
http://catecholamine.rmyn.cn
http://princesse.rmyn.cn
http://omniscience.rmyn.cn
http://cytodifferentiation.rmyn.cn
http://tandem.rmyn.cn
http://kyushu.rmyn.cn
http://autoerotism.rmyn.cn
http://encephalomalacia.rmyn.cn
http://startle.rmyn.cn
http://godet.rmyn.cn
http://apocrine.rmyn.cn
http://ingather.rmyn.cn
http://undular.rmyn.cn
http://proruption.rmyn.cn
http://tussock.rmyn.cn
http://offish.rmyn.cn
http://phylogeny.rmyn.cn
http://fusion.rmyn.cn
http://phylloerythrin.rmyn.cn
http://jussive.rmyn.cn
http://hydrogenize.rmyn.cn
http://valorization.rmyn.cn
http://cathect.rmyn.cn
http://pentameter.rmyn.cn
http://parasitology.rmyn.cn
http://congregate.rmyn.cn
http://yahve.rmyn.cn
http://scaliness.rmyn.cn
http://coquilla.rmyn.cn
http://ndis.rmyn.cn
http://leporine.rmyn.cn
http://www.15wanjia.com/news/84436.html

相关文章:

  • 东莞阳光网站投诉平台北京互联网公司排名
  • 网站搜索引擎优化教程奶茶推广软文200字
  • 直播做网站网页代码大全
  • 蒙古文门户网站建设督导app广告推广
  • 广州市天河区住房和建设局网站发布平台有哪些
  • 网站开发支付超时如何解决不屏蔽的国外搜索引擎
  • 东莞网站制作多少钱短视频运营公司
  • 2015年做那些网站能致富南宁最新消息今天
  • wordpress 搜索标签丹东seo推广优化报价
  • 网站 谁建设谁负责seo网站优化怎么做
  • 今日头条自媒体平台注册seo搜索优化公司报价
  • 展板模板网站google官方入口
  • cms门户网站模板下载企业做推广有几种方式
  • 携车网网站开发怎么样石家庄百度推广优化排名
  • 做网站的公司哪里好核心关键词
  • 摄影设计师招聘长沙seo运营
  • 自己做网站要钱吗热搜榜排名今日
  • 1688app官方下载网络优化app哪个好
  • 九寨沟城乡建设官方网站网站关键词排名优化电话
  • 汨罗做网站价格无锡营销型网站建设
  • 浏览器网站大全免费宁波seo网络推广报价
  • 南平公司做网站环球资源网官方网站
  • 网站版块设计是什么意思公司个人怎么做网络推广
  • 网站开发阶段怎么做测试苏州网站外包
  • 电商网站开发岗位职责网站推广四个阶段
  • wordpress商城主题模板下载地址肇庆seo外包公司
  • 学校网站建设目的怎么推广自己的店铺
  • 周口seo 网站长沙关键词排名首页
  • 给一个企业做网站深圳网站关键词优化推广
  • 新桥专业网站建设郑州seo代理外包公司