横向网站,个人网站seo,跨境电商网站开发,腾讯企业邮箱注册入口官网第一章#xff1a;三层架构和MVC
三层架构#xff1a; 开发服务器端#xff0c;一般基于两种形式#xff0c;一种 C/S 架构程序#xff0c;一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序#xff0c;B/S 架构又分成了三层架构三层架构#xff1a; 表现…第一章三层架构和MVC
三层架构 开发服务器端一般基于两种形式一种 C/S 架构程序一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序B/S 架构又分成了三层架构三层架构 表现层WEB 层用来和客户端进行数据交互的。表现层一般会采用 MVC的设计模型业务层处理公司具体的业务逻辑持久层用来操作数据库MVC 模型 MVC 全名是 Model View Controller 模型事务控制器每个部分各司其职Model数据模型JavaBean 的类用来进行数据封装View指 JSP、HTML 用来展示数据给用户Controller用来接收用户的请求整个流程的控制器。用来进行数据校验等
第二章SpringMVC 的入门案例 SpringMVC 的概述 SpringMVC 是一种基于 Java 实现的 MVC 设计模型的请求驱动类型的轻量级 WEB 框架SpringMVC 属于 SpringFrameWork 的后续产品已经融合在 Spring Web Flow 里面。Spring 框架提供了构建 WEB 应用程序的全功能 MVC 模块使用 Spring 可插入的 MVC 框架从而在使用 Spring 进行 WEB 开发时可以选择使用 Spring 的 SpringMVC 框架或集成其它 MVC 开发框架如 Struts1(现在一般不用)Struts2 等。 SpringMVC 的入门程序 创建 WEB 工程引入 maven 依赖 !-- 版本锁定 --propertiesspring.version5.0.2.RELEASE/spring.version/propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion${spring.version}/version/dependency
dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version/dependency
dependencygroupIdjavax.servlet/groupIdartifactIdservlet-api/artifactIdversion2.5/versionscopeprovided/scope/dependency
dependencygroupIdjavax.servlet.jsp/groupIdartifactIdjsp-api/artifactIdversion2.0/versionscopeprovided/scope/dependency/dependencies 编写 index.jsp 页面 % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle入门程序/title
/head
body%-- 超链接 --%h3入门案例/h3a hrefhello入门程序/a
/body
/html 编写 suc.jsp 页面路径为/WEB-INF/pages/suc.jsp % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle成功/title/head
bodyh3成功跳转/h3/body
/html 编写 Controller 类和方法 Controller
public class HelloController {RequestMapping(/hello)public String sayHello(){System.out.println(入门方法已执行);return suc;}} 在 web.xml 配置文件中核心控制器(DisPatcherServlet) !DOCTYPE web-app PUBLIC-//Sun Microsystems, Inc.//DTD Web Application 2.3//ENhttp://java.sun.com/dtd/web-app_2_3.dtd web-app!--配置解决中文乱码问题的过滤器--!-- 过滤器的位置应放在最前面 --filterfilter-namecharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class!--指定使用编码集--init-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-param/filterfilter-mappingfilter-namecharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern!--该位置和 dispatcherServlet 的配置有区别,这里多加了一个 * --/filter-mapping!--配置前端控制器--servletservlet-namedispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class!--加载springmvc.xml配置文件配置的是Spring配置--init-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springmvc.xml/param-value/init-param!--配置启动加载--load-on-startup1/load-on-startup/servletservlet-mappingservlet-namedispatcherServlet/servlet-nameurl-pattern//url-pattern/servlet-mapping/web-app 编写 Springmvc.xml 的配置文件 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:mvchttp://www.springframework.org/schema/mvcxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd!-- 配置spring 创建容器时要扫描的包 --context:component-scan base-packagecom.qcby.mybatis/context:component-scan!-- 配置视图解析器 --bean idviewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/pages//property namesuffix value.jsp//bean!-- 配置 Spring 开启注解 mvc 的支持 --mvc:annotation-driven/mvc:annotation-driven/beans 启动服务进行测试 入门案例的执行过程分析 当启动 Tomcat 服务器的时候因为配置了 load-on-startup 标签所以会创建 DispatcherServlet 对象就会加载 springmvc.xml 配置文件开启了注解扫描那么 HelloController 对象就会被创建从 index.jsp 发送请求请求会先达到 DispatcherServlet 核心控制器根据配置 RequestMapping 注解找到的具体方法根据执行的方法的返回值再根据配置的解析器去指定的目录下查找指定名称的 JSP 文件Tomcat 服务器渲染页面做出响应 组件分析 前端控制器DispatcherServlet处理器映射器HandlerMapping处理器Handler处理器适配器HandlerAdapter视图解析器View Resolver视图View RequestMapping 注解 作用 是建立请求 URL 和处理方法之间的对应关系该注解可以作用在方法和类上属性值 path指定请求路径的 urlvaluevalue 属性和 path 属性是一样的method指定该方法的请求方式params指定限制请求参数的条件 Controller
public class HelloController {RequestMapping(/hello)public String sayHello(){System.out.println(入门方法已执行);return suc;}RequestMapping(path /save,method {RequestMethod.GET},params username)public String save(){System.out.println(保存角色);return suc;}}
第三章请求参数的绑定 绑定机制 表单提交的数据都是 K-V 格式的 usernamehahapassword123SpringMVC 的参数绑定过程是把表单提交的请求参数作为控制器中方法的参数进行绑定的要求提交表单的 name 和参数的名称是相同的 支持的数据类型 基本数据类型和字符串类型实体类型(JavaBean)集合数据类型(List、map集合等)基本数据类型和字符串类型 提交表单的 name 和参数的名称是相同的区分大小实体类型(JavaBean) 提交表单的 name 和 JavaBean 中的属性名称需要一致如果一个 JavaBean 类中包含其它的引用类型那么表单的 name 属性需要编写成对象.属性 例如address.name给集合属性数据封装 JSP 页面编写方式list[0].属性值 案例 JSP 代码 % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle请求参数绑定/title
/head
bodyh3请求参数绑定入门/h3form action/user/save1 methodpost名称:input typetext nameusername/br/年龄:input typetext nameage/br/input typesubmit value提交//formh3请求参数绑定-实体类/h3form action/user/save2 methodpost姓名:input typetext nameusername/br/年龄:input typetext nameage/br/金额:input typetext nameaddress.money/br/input typesubmit value提交/formh3请求参数绑定-集合/h3form action/user/save3 methodpost姓名:input typetext nameusername/br/年龄:input typetext nameage/br/金额:input typetext nameaddress.money/br/集合:input typetext namelist[0].money/br/集合:input typetext namelist[1].money/br/input typesubmit value提交/form
/body
/html JavaBean代码 package com.qcby.mybatis.pojo;import java.io.Serializable;
import java.util.List;public class User implements Serializable {private String username;private Integer age;//引用对象private Address address;//list 集合private ListAddress list;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 Address getAddress() {return address;}public void setAddress(Address address) {this.address address;}public ListAddress getList() {return list;}public void setList(ListAddress list) {this.list list;}Overridepublic String toString() {return User{ username username \ , age age , address address , list list };}
}//Address 实体类
import java.io.Serializable;public class Address implements Serializable {private Double money;public Double getMoney() {return money;}public void setMoney(Double money) {this.money money;}Overridepublic String toString() {return Address{ money money };}
} controller代码 Controller
RequestMapping((/user))
public class UserController {RequestMapping(value /save1)public String save1(String username,Integer age){System.out.println(姓名: username);System.out.println(年龄: age);return suc;}RequestMapping(/save2)public String save2(User user){System.out.println(user对象: user);return suc;}RequestMapping(/save3)public String save3(User user){System.out.println(user对象: user);return suc;}
} 在请求参数中文乱码的解决 !-- 配置过滤器解决中文乱码的问题 --filterfilter-namecharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class!-- 指定字符集 --init-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-param/filterfilter-mappingfilter-namecharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping 自定义类型转换器 第一种方式使用 DataTimeFormat 注解的方式 import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable;
import java.util.Date;
import java.util.List;public class User implements Serializable {private String username;private Integer age;//生日//2000-11-11 格式的日期不能进行转化了开发时使用是比较多且比较简单DateTimeFormat(pattern yyyy-MM-dd)private Date birthday;//引用对象private Address address;//list 集合private ListAddress list;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 Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday birthday;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address address;}public ListAddress getList() {return list;}public void setList(ListAddress list) {this.list list;}Overridepublic String toString() {return User{ username username \ , age age , birthday birthday , address address , list list };}
} 第二种方式自定义类型转换器。如果想自定义数据类型转换可以实现 Converter 的接口 自定义类型转换器 import org.springframework.core.convert.converter.Converter;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SimpleTimeZone;public class StringToDate implements ConverterString, Date {Overridepublic Date convert(String s) {if(s null){throw new RuntimeException(请输入内容);}//将数据进行转换SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);try{return sdf.parse(s);}catch (ParseException e){throw new RuntimeException(e);}}
} 注册自定义类型转换器在 spirngmvc.xml 配置文件中编写配置 ?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:mvchttp://www.springframework.org/schema/mvcxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd!-- 配置spring 创建容器时要扫描的包 --context:component-scan base-packagecom.qcby.mybatis/context:component-scan!-- 配置视图解析器 --bean idviewResolver classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/pages//property namesuffix value.jsp//bean!-- 配置日期类型转换器,类型转换器的组件,把日期类型转换注入到组件对象中 --bean idconversionService classorg.springframework.context.support.ConversionServiceFactoryBeanproperty nameconverterssetbean classcom.qcby.mybatis.pojo.StringToDate//set/property/bean!--让映射器、适配器和处理器生效(默认不配置也是可以的)--mvc:annotation-driven conversion-serviceconversionService/
/beans 在控制器中使用原生的 ServletAPI 对象 只需要在控制器的方法参数定义 HttpServletRequest 和 HttpServletResponse 对象 RequestMapping(/save4)
public String save4(HttpServletRequest request, HttpServletResponse response){System.out.println(request);//获取到 HttpSession 对象HttpSession session request.getSession();System.out.println(session);System.out.println(response);return suc;
} 文章转载自: http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.lywpd.cn.gov.cn.lywpd.cn http://www.morning.roymf.cn.gov.cn.roymf.cn http://www.morning.tngdn.cn.gov.cn.tngdn.cn http://www.morning.tbnpn.cn.gov.cn.tbnpn.cn http://www.morning.w58hje.cn.gov.cn.w58hje.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.hmxrs.cn.gov.cn.hmxrs.cn http://www.morning.grxyx.cn.gov.cn.grxyx.cn http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn http://www.morning.tdxlj.cn.gov.cn.tdxlj.cn http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.fcwb.cn.gov.cn.fcwb.cn http://www.morning.trffl.cn.gov.cn.trffl.cn http://www.morning.gqjzp.cn.gov.cn.gqjzp.cn http://www.morning.kwjyt.cn.gov.cn.kwjyt.cn http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn http://www.morning.cwcdr.cn.gov.cn.cwcdr.cn http://www.morning.qznkn.cn.gov.cn.qznkn.cn http://www.morning.jppdk.cn.gov.cn.jppdk.cn http://www.morning.qlhkx.cn.gov.cn.qlhkx.cn http://www.morning.yfmxn.cn.gov.cn.yfmxn.cn http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn http://www.morning.rcttz.cn.gov.cn.rcttz.cn http://www.morning.tlnbg.cn.gov.cn.tlnbg.cn http://www.morning.grxbw.cn.gov.cn.grxbw.cn http://www.morning.drkk.cn.gov.cn.drkk.cn http://www.morning.mkfr.cn.gov.cn.mkfr.cn http://www.morning.nccyc.cn.gov.cn.nccyc.cn http://www.morning.qngcq.cn.gov.cn.qngcq.cn http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn http://www.morning.jgykx.cn.gov.cn.jgykx.cn http://www.morning.tjkth.cn.gov.cn.tjkth.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.rywr.cn.gov.cn.rywr.cn http://www.morning.yhpl.cn.gov.cn.yhpl.cn http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn http://www.morning.yjxfj.cn.gov.cn.yjxfj.cn http://www.morning.xuejitest.com.gov.cn.xuejitest.com http://www.morning.jokesm.com.gov.cn.jokesm.com http://www.morning.bgzgq.cn.gov.cn.bgzgq.cn http://www.morning.zczkm.cn.gov.cn.zczkm.cn http://www.morning.yqgbw.cn.gov.cn.yqgbw.cn http://www.morning.guofenmai.cn.gov.cn.guofenmai.cn http://www.morning.mcjxq.cn.gov.cn.mcjxq.cn http://www.morning.xprq.cn.gov.cn.xprq.cn http://www.morning.nlnmy.cn.gov.cn.nlnmy.cn http://www.morning.cwpny.cn.gov.cn.cwpny.cn http://www.morning.nmtyx.cn.gov.cn.nmtyx.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.yqsr.cn.gov.cn.yqsr.cn http://www.morning.xzlp.cn.gov.cn.xzlp.cn http://www.morning.brwnd.cn.gov.cn.brwnd.cn http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn http://www.morning.wspyb.cn.gov.cn.wspyb.cn http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn http://www.morning.bmrqz.cn.gov.cn.bmrqz.cn http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn http://www.morning.yrpd.cn.gov.cn.yrpd.cn http://www.morning.shawls.com.cn.gov.cn.shawls.com.cn http://www.morning.jkwwm.cn.gov.cn.jkwwm.cn http://www.morning.sqmbb.cn.gov.cn.sqmbb.cn http://www.morning.nj-ruike.cn.gov.cn.nj-ruike.cn http://www.morning.ryjqh.cn.gov.cn.ryjqh.cn http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn http://www.morning.spxk.cn.gov.cn.spxk.cn http://www.morning.kcyxs.cn.gov.cn.kcyxs.cn http://www.morning.khpx.cn.gov.cn.khpx.cn http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn http://www.morning.xbtlt.cn.gov.cn.xbtlt.cn http://www.morning.qsy36.cn.gov.cn.qsy36.cn http://www.morning.thbnt.cn.gov.cn.thbnt.cn http://www.morning.beijingzy.com.cn.gov.cn.beijingzy.com.cn http://www.morning.dpnhs.cn.gov.cn.dpnhs.cn http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn http://www.morning.mgmyt.cn.gov.cn.mgmyt.cn http://www.morning.nwczt.cn.gov.cn.nwczt.cn