Spring MVC 学习笔记
使用Servlet做控制器存在的问题:
同一个Servlet中处理多个请求比较麻烦 BankServelt?method=insert BankServelt?method=get
请求参数的获取和类型转换需要手工编码
响应jsp页面路径在Servlet中写死
一、概述
spring mvc是spring框架的一个模块,springmvc与spring无需通过中间整合层进行整合
spring mvc是一个基于MVC设计模式的框架
是目前最主流的MVC框架之一(struts2)
spring 3.0之后,全面的超越了struts2
二、使用
导入jar包
< dependency>
< groupId> org.springframework groupId>
< artifactId> spring-webmvc artifactId>
< version> 4.3.8.RELEASE version>
dependency>
< dependency>
< groupId> org.springframework groupId>
< artifactId> spring-context artifactId>
< version> 4.3.8.RELEASE version>
dependency>
SpringMVC提供了一个DispatcherServlet,把用户的请求转给SpringMVC进行处理
< servlet>
< servlet-name> DispatcherServlet servlet-name>
< servlet-class>
org.springframework.web.servlet.DispatcherServlet
servlet-class>
< init-param>
< param-name> contextConfigLocation param-name>
< param-value> classpath:springmvc.xml param-value>
init-param>
servlet>
< servlet-mapping>
< servlet-name> DispatcherServlet servlet-name>
< url-pattern> *.action url-pattern>
servlet-mapping>
springmvc.xml(三大件)
1)组件扫描
< context: component-scan base-package = " com.neu.controller" > context: component-scan>
2)启用springmvc注解
< mvc: annotation-driven> mvc: annotation-driven>
3)配置视图解析器
< bean class = " org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name = " prefix" value = " /WEB-INF/jsp/" > property>
< property name = " suffix" value = " .jsp" > property>
bean>
定义控制器 1)添加一个普通的java类,在其上添加@Controller注解,该注解实现了@Component注解的功能,并且可以在添加有@Controller注解的类中,搜索@RequestMapping注解的方法 2)在控制器类中添加处理请求的方法,并且在该方法上添加@RequestMapping注解,该注解负责把用户输入的url映射到当前方法上 3)@RequestMapper a)既可以添加到类上,也可以添加到方法上 b)添加到类定义处,提供初步的请求映射信息,路径相对于web应用程序根目录 c)添加到方法处,提供进一步的细分映射信息,相对于类定义处的url,若类定义处没有标注@RequesMapping,则路径url相对于web应用根目录 d)method:表示能处理的请求方法 @RequestMapping(value="/login",method= {RequestMethod.POST,RequestMethod.GET}) e)value:指定请求的url f)params:指定请求中必须包含某些请求参数或参数值 @RequestMapping(value="/login",method= {RequestMethod.POST,RequestMethod.GET},params= {“username=admin”,“password=123”}) 4)请求参数的绑定:把请求参数的key/value,绑定到控制器方法的形参上,默认情况下,要求请求参数名与形参名相同即可自动绑定 5)@RequestParam:映射请求参数 a)value:请求参数名 b)required:请求参数是否必须提供,默认值为true c)defaultValue:请求参数默认值,请求参数为空的时候,使用默认值 6)方法的返回值为字符串 a)返回逻辑视图名:需要配置视图解析器,添加前缀和后缀 实际视图名=前缀+逻辑视图名+后缀 b)重定向:redirect:url 重定向时候,视图解析器不起作用 c)请求转发:forward:url(请求转发到另一个处理器方法) 7)向响应结果添加数据:在形参中添加Model对象,添加到Model中的数据最终会被添加到request中model.addAttribute(“username”, username);
处理器方法形参 1)可以为pojo:只要请求参数的名与pojo的属性名相同就会自动绑定 2)复杂类型pojo:pojo中的某个属性为另一个实体 请求参数:?group.name=group1 3)数组(数组成员为基本数据类型、或包装类、字符串) 4)pojo的属性为集合:
请求参数:
?list[0].username=tom&list[0].password=123&list[1].username=marry&list[1].password=345
实体类:
class Group {
private List< User> list;
}
处理器方法:
String login ( Group group) {
}
5)HttpServletRequest 6)HttpSession 7)HttpServletResponse
处理器方法的返回值类型: 1)String 2)void 3)ModelAndView
添加spring的编码过滤器(处理post请求编码问题)
< filter>
< filter-name> CharacterEncodingFilter 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> CharacterEncodingFilter filter-name>
< url-pattern> /* url-pattern>
filter-mapping>
修改tomcat插件中uriEncoding属性(处理get请求编码问题)
< plugin>
< groupId> org.apache.tomcat.maven groupId>
< artifactId> tomcat7-maven-plugin artifactId>
< version> 2.2 version>
< configuration>
< path> / path>
< port> 8089 port>
< uriEncoding> utf-8 uriEncoding>
configuration>
plugin>
日期格式 1)默认:yyyy/MM/dd 2)修改默认日期格式:在实体类的日期属性上添加@DataTimeFormat(pattern=“yyyy-MM-dd”)
@DateTimeFormat ( pattern= "yyyy-MM-dd" )
private Date birthday;
3)常见错误:400:表示数据格式错误
三、文件上传
导入jar包
< dependency>
< groupId> commons-fileupload groupId>
< artifactId> commons-fileupload artifactId>
< version> 1.3.2 version>
dependency>
配置附件解析器
< bean id = " multipartResolver" class = " org.springframework.web.multipart.commons.CommonsMultipartResolver" >
< property name = " maxUploadSize" value = " 5242880" > property>
< property name = " defaultEncoding" value = " utf-8" > property>
bean>
编写控制器
@Controller
public class FileUploadController {
@RequestMapping ( "file" )
public void upload ( MultipartFile file, HttpServletRequest request) throws IllegalStateException, IOException {
String path = request. getServletContext ( ) . getRealPath ( "/upload" ) ;
if ( ! file. isEmpty ( ) ) {
File f = new File ( path, file. getOriginalFilename ( ) ) ;
file. transferTo ( f) ;
}
}
}
编写jsp
< form action = " ${ pageContext.request.contextPath }/file.action" method = " post" enctype = " multipart/form-data" >
文件:< input type = " file" name = " file" > < input type = " submit" value = " 提交" >
form>
多文件上传:
@Controller
public class FileUploadController {
@RequestMapping ( "file" )
public void upload ( @RequestParam ( "files" ) MultipartFile[ ] files, HttpServletRequest request) throws IllegalStateException, IOException {
String path = request. getServletContext ( ) . getRealPath ( "/upload" ) ;
for ( MultipartFile file : files) {
if ( ! file. isEmpty ( ) ) {
File f = new File ( path, file. getOriginalFilename ( ) ) ;
file. transferTo ( f) ;
}
}
}
}
多文件上传:jsp
< form action = " ${ pageContext.request.contextPath }/file.action" method = " post" enctype = " multipart/form-data" >
文件:< input type = " file" name = " files" > < br>
文件:< input type = " file" name = " files" > < br>
文件:< input type = " file" name = " files" > < br>
< input type = " submit" value = " 提交" >
form>
四、返回json对象
在处理器方法上添加@ResponseBody,该注解能够将处理器方法返回的对象经过适当的转换,把数据写入到Response对象的Body数据区
@RequestMapping ( "getByJob" )
@ResponseBody
public List< Emp> getByJob ( String job) {
List< Emp> list = empService. getByJob ( job) ;
return list;
}
导入jar包
< dependency>
< groupId> com.fasterxml.jackson.core groupId>
< artifactId> jackson-databind artifactId>
< version> 2.8.8.1 version>
dependency>
jsp
$ ( function ( ) {
$ ( ":button" ) . click ( function ( ) {
var url = "${ pageContext.request.contextPath }/emp/getByJob.action" ;
var data1 = $ ( "[name=job]" ) . serialize ( ) ;
$. post ( url, data1, function ( data) {
for ( i = 0 ; i < data. length; i++ ) {
var emp = data[ i] ;
var tr = $ ( "") . appendTo ( "table" ) ;
$ ( " ") . text ( emp. empno) . appendTo ( tr) ;
$ ( " ") . text ( emp. ename) . appendTo ( tr) ;
$ ( " ") . text ( emp. job) . appendTo ( tr) ;
$ ( " ") . text ( emp. hiredate) . appendTo ( tr) ;
$ ( " ") . text ( emp. mgr) . appendTo ( tr) ;
$ ( " ") . text ( emp. sal) . appendTo ( tr) ;
$ ( " ") . text ( emp. comm) . appendTo ( tr) ;
$ ( " ") . text ( emp. dept. dname) . appendTo ( tr) ;
}
} ) ;
} ) ;
} ) ;
< / script>
五、拦截器
拦截器类似于Serlet中的过滤器(Filter),用于对处理器进行预处理和后处理
创建拦截器 1)实现HandlerInterceptor接口
public class LoginCheckInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle ( HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request. getSession ( ) ;
Object username = session. getAttribute ( "username" ) ;
if ( username == null) {
request. getRequestDispatcher ( "/login.jsp" ) . forward ( request, response) ;
return false ;
}
return true ;
}
@Override
public void postHandle ( HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion ( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
}
配置拦截器
< mvc: interceptors>
< mvc: interceptor>
< mvc: mapping path = " /**" />
< mvc: exclude-mapping path = " /login.action" />
< bean class = " com.neu.controller.LoginCheckInterceptor" > bean>
mvc: interceptor>
mvc: interceptors>
你可能感兴趣的:(其他框架,SpringMVC从入门到精通)
SpringMVC执行流程(原理),通俗易懂
国服冰
SpringMVC spring mvc
SpringMVC执行流程(原理),通俗易懂一、图解SpringMVC流程二、进一步理解Springmvc的执行流程1、导入依赖2、建立展示的视图3、web.xml4、spring配置文件springmvc-servlet5、Controller6、tomcat配置7、访问的url8、视图页面一、图解SpringMVC流程图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提
Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程
倾听铃的声
后端 spring java mvc 开发语言 分布式
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第二篇:DispatcherServlet处理请求的过程的源码解析。@pdaiSpring进阶-SpringMVC实现原理之DispatcherServlet处理请求的
SpringMVC的执行流程
1、什么是MVCMVC是一种设计模式。MVC的原理图如下所示M-Model模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View视图(做界面的展示jsp,html……)C-Controller控制器(接收请求—>调用模型—>根据结果派发页面2、SpringMVC是什么SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,
机器学习必备数学与编程指南:从入门到精通
a小胡哦
机器学习基础 机器学习 人工智能
一、机器学习核心数学基础1.线性代数(神经网络的基础)必须掌握:矩阵运算(乘法、转置、逆)向量空间与线性变换特征值分解与奇异值分解(SVD)为什么重要:神经网络本质就是矩阵运算学习技巧:用NumPy实际操作矩阵运算2.概率与统计(模型评估的关键)核心概念:条件概率与贝叶斯定理概率分布(正态、泊松、伯努利)假设检验与p值应用场景:朴素贝叶斯、A/B测试3.微积分(优化算法的基础)重点掌握:导数与偏导
免费编程课程大汇总:从入门到精通的一站式资源
大力出奇迹985
人工智能 大数据
在数字化时代,编程已成为一项至关重要的技能,无论是为了职业发展还是个人兴趣,学习编程都极具价值。本文精心汇总了丰富的免费编程课程资源,涵盖从基础入门到精通的各个阶段。通过全面介绍如Coursera、edX等在线学习平台,Codecademy、freeCodeCamp等交互式学习网站,以及B站、网易云课堂等视频课程平台的免费课程,为编程学习者提供了一站式的资源指南,帮助读者轻松开启编程学习之旅,逐步
第二阶段-第二章—8天Python从入门到精通【itheima】-137节(Python操作MySQL的数据插入)
Patrick_kafka
mysql 数据库 sql python 数据分析 大数据 开发语言
目录137节——Python操作MySQL的数据插入1.学习目标2.commit提交3.commit手动确认的执行代码4.commit自动确认:添加在conn的类对象中一个参数autocommit=True5.小节总结6.为什么要用Python操作MySQL?一、从“手动记账”到“自动化账本”:理解技术演进的本质1.SQL的“强项”与“短板”2.Python的“赋能”作用二、Python+PyMy
Linux从入门到精通——基础篇
weixin_30390075
一.关于Linux的简介1.什么是Linux?Linux这个词指的是Linux内核,它是用来驱动电脑里的硬件的,而Linux操作系统指的是Linux内核和GUN组织(GUN的全称为GUNisnotUnix)所编写的软件,有了这个内核和相应的软件,由“死”的机械硬件组成的计算机才变成了“活”的,需要注意的是,单纯的软件并不能代表Linux系统。2.Linux的特点和优势1.模块化程度高Linux的内
linux shell从入门到精通(一)——为什么要学习Linux Shell
1.编译型语言和解释型语言 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一种是编译(compile),另一种是解释(interpret)。两种方式只是翻译的时间不同。编译型语言写在程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,例如:Windows系统中的EXE文件,编译好后运行
【技术精进】Java集合框架:从入门到精通的思考之路
果冻kk
java基础 Java集合 java python 开发语言
Java集合框架学习指南:一份完整的知识地图️前言JAVA集合,是每个Java开发者的必备武器。工作中的程序员都在使用它,因为它是数据处理中不可或缺的工具。说到如何优雅地使用、如何实现高性能、如何确保线程安全,相信大家都有自己的心得,毕竟实战中遇到的问题和解决方案都是最好的老师。但要说到底层实现原理、设计思想,可能就只有部分开发者有深入研究了。本文旨在帮助新手构建知识体系,也为老手提供系统复习的参
ADB 调试神器:从入门到精通的完整指南
AI移动开发前沿
AI移动端开发宝典 adb ai
ADB调试神器:从入门到精通的完整指南关键词:ADB调试、Android开发、设备通信、调试工具、安卓调试桥摘要:ADB(AndroidDebugBridge,安卓调试桥)是安卓开发者和极客玩家的“万能钥匙”——它能让电脑与安卓设备无缝对话,完成安装应用、抓取日志、模拟操作等上百种任务。本文将从“为什么需要ADB”讲起,用“快递系统”“翻译官”等生活化比喻拆解核心原理,配合超详细的操作步骤和实战案
JSP编程从入门到精通:现代Web开发与AI集成实战指南
AI编程员
001AI传统&编程语言 002AI编程工具汇总 003AI编程作品汇总 人工智能 AI编程 笔记 开发语言 深度学习
JSP编程从入门到精通:现代Web开发与AI集成实战指南一、JSP基础与环境搭建1.1JSP核心概念与工作原理JSP(JavaServerPages)是一种动态网页开发技术,通过在HTML中嵌入Java代码实现服务器端逻辑。其本质是Servlet的扩展,当客户端首次请求JSP页面时,服务器会将其编译为Servlet类(如index_jsp.java),再执行该类的_jspService()方法生成
Java Web开发核心技术解析与实践指南
2301_81709812
java 前端 开发语言
目录一、JavaWeb开发基础1.1核心概念解析1.2开发环境搭建二、Servlet与JSP核心技术2.1Servlet编程深度解析生命周期管理(关键代码示例):核心对象关系:2.2JSP进阶开发技巧动态页面模板示例:三、Spring框架整合开发3.1SpringMVC核心原理3.2现代开发方案对比四、项目实战:图书管理系统4.1系统架构设计4.2性能优化策略五、学习路线建议一、JavaWeb开发
SpringMVC
Jonariguez
Spring spring mvc
SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发。用于替代servlet(处理响应请求,获取表单参数,表单验证等)MVC设计模式MVC即Model-View-Controller,将应用按照Model(模型)、View(视图)、C
智能合约从入门到精通:Solidity语法之内存变量的布局和状态变量的存储模型...
Mathilda91
区块链
简介:在前面我们已经讲过Solidity语言的一些语法内容,在矩阵元JUICE开放平台的JIDE开发时,一定要注意LayoutinMemory和LayoutofStateVariablesinStorage,即内存变量的布局和状态变量的存储模型。内存变量的布局(LayoutinMemory)Solidity预留了3个32字节大小的槽位:0-64:哈希方法的暂存空间(scratchspace)64-
solidity从入门到精通 第四章:智能合约的生命周期
空中湖
Solidity从入门到精通 智能合约 区块链 solidity
第四章:智能合约的生命周期从娘胎到坟墓:合约的一生欢迎回来,区块链探险家!在前几章中,我们学习了Solidity的基础知识,包括变量、数据类型和函数。现在,是时候了解智能合约的"人生历程"了——从它诞生的那一刻起,到它在区块链上的日常生活,再到它最终的"退休"(或者更戏剧性地说,“死亡”)。就像我们人类有出生、生活和死亡的过程,智能合约也有自己的生命周期。让我们一起探索这个奇妙的旅程!合约的创建:
系统性的《Django & AI编程结合:从入门到精通》指南
AI编程员
001AI传统&编程语言 002AI编程工具汇总 003AI编程作品汇总 开发语言 深度学习 django AI编程 人工智能
以下是一篇系统性的《Django&AI编程结合:从入门到精通》指南,共分20大章节,超过2.5万字,涵盖基础开发、AI集成、经典案例和完整项目实战。第一章:Django基础与环境搭建1.1开发环境配置#创建虚拟环境python-mvenvmyenvsourcemyenv/bin/activate#安装Djangopipinstalldjango==4.2django-adminstartproje
Python YAML文件处理完全指南:从入门到精通
Yant224
python # 文件操作与异常处理 python YAML 配置文件处理 数据序列化 PyYAML ruamel.yaml
一、YAML基础与Python环境搭建1.YAML简介YAML(YAMLAin’tMarkupLanguage)是一种人类可读的数据序列化格式,特点:使用缩进表示层级关系支持复杂数据结构包含注释功能跨语言兼容2.核心特性对比特性YAMLJSONXML可读性★★★★★★★☆☆☆★★★☆☆注释支持✅❌✅数据类型丰富基本基本语法复杂度简单简单复杂3.安装PythonYAML库#安装PyYAML(基础库)
MySQL 监控与性能调优实战指南:从入门到精通
CarlowZJ
AI应用落地涉及的数据库 mysql 数据库 监控与性能调优实战指南 从入门到精通
目录一、MySQL监控的核心概念与体系架构(一)监控的重要性与目标(二)构建全面的监控指标体系(三)MySQL内置监控工具详解与实战(四)外部监控工具深度集成与应用二、性能调优策略:从基础到高级的全方位实战技术(一)配置参数优化:挖掘MySQL内置潜力(二)SQL优化:从源头解决性能瓶颈(三)架构调优:硬件资源的合理调配(四)自动化调优工具:迈向智能化运维三、实战案例:高并发电商秒杀场景下的监控与
SSM+Vue共享充电宝管理系统 充电宝投放管理系统 共享充电宝维护管理系统Java
计算机程序老哥
作者主页:计算机毕业设计老哥有问题可以主页问我一、开发介绍1.1开发环境开发语言:Java数据库:MySQL系统架构:B/S后端:SSM(Spring+SpringMVC+Mybatis)前端:Vue工具:IDEA或者Eclipse,JDK1.8,Maven二、系统介绍2.1图片展示注册登录页面:登陆前端页面功能:首页、合作商户、充电宝投放、公告栏、个人中心、后台管理首页.png充电宝投放.png
SpringMVC——请求参数与请求头
获取请求参数一、@RequestParam获取jsp实例testRequestParamprivatestaticfinalStringSUCCESS="success";@RequestMapping(value="/testRequestParam")publicStringtestRequestParam(@RequestParam(value="username")Stringuserna
简约时装网店网站开发#网页制作 #网页设计 #网站建设
黄菊华老师
网页模板 简约时装网店
博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注网站制作、小程序开发、软件开发和大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发文档、开题报告、任务书、PPT等,提供毕业设计论文辅导。项目都录了发布和功能操作演示视频
SpringMVC——请求参数乱码问题
李沐泽
SpringMVC java SpringMVC
请求参数中文乱码的解决在web.xml中配置Spring提供的过滤器类characterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8forceEncodingtruecharacterEncodingFilter/*上述代码中encoding用来设置编码格式,而forceEncod
SpringMVC——CharacterEncodingFilter处理获取请求参数的乱码
程序员阿皓
SpringMVC springmvc 请求乱码问题
在SpringMVC中,处理请求参数的乱码问题通常可以通过配置CharacterEncodingFilter来解决。乱码问题通常出现在GET请求的URL参数或POST请求的表单参数中,特别是涉及到非英文字符时。详细步骤如下:首先,在web.xml中配置CharacterEncodingFilter:encodingFilterorg.springframework.web.filter.Chara
跟老齐学python从入门到精通mobi_我爱电子书-《跟老齐学Python: 从入门到精通》| pdf + epub + mobi + awz3, 高清版, 带目录,Kindle版, 多看精排版下载...
第1季基础第0章预备20.1关于Python的故事20.1.1Python的昨天、今天和明天30.1.2Python的特点40.1.3Python哲学50.2从小工到专家50.2.1零基础60.2.2阅读代码60.2.3调试程序70.3安装Python70.3.1Ubuntu系统80.3.2Windows系统90.3.3MacOSX系统90.4集成开发环境(IDE)90.4.1值得纪念的时刻:He
ubuntu linux 从入门到精通.pdf,UBUNTU LINUX从入门到精通(附DVD)
鲨鱼飞不动了
ubuntu linux 从入门到精通.pdf
摘要:本书是为想系统学习Linux的初学者准备的,从系统,驱动,常用软件的安装开始讲起,让读者快速掌握Linux的基础知识,并轻松向网络管理,Shell,Vi/Vim,X-Window,进程管理进阶,然后深入到Apache,VSFTPD,Postfix,SAMBA,DNS等服务器的配置,全面掌握企业所需的Linux应用技能.传统的Linux图书主要以命令行的方式进行介绍,学习起来非常枯燥乏味,而且
Flask Tornado 简单对比
Tornado的使用和Flask相差不远,但是,对于Tornado的最大的特点——异步却是其他框架所不能及的,本文就以个人的见解出发,对比一下两款Python的流行框架:Flask和Tornado。对于一个Web框架来说,我觉得有几个方面是需要注意的,分别是:路由请求和响应方式session和cookie模板扩展性下面我就以这些方面为切入点对比一下这两款框架:Flask==0.11.1,Torna
Gorilla 在 Golang 中的实战应用:从入门到精通
Golang编程笔记
golang 开发语言 后端 ai
Gorilla在Golang中的实战应用:从入门到精通关键词:Gorilla,Golang,Web开发,路由,WebSocket,中间件,RESTfulAPI摘要:本文将深入探讨Gorilla工具包在GolangWeb开发中的实战应用。从基础概念到高级用法,我们将全面解析Gorilla的核心组件,包括mux路由、WebSocket、中间件等。通过详细的代码示例和实际项目案例,帮助开发者掌握Gori
CSS基础教程:从入门到精通
nihaonihhao2223
css 前端
CSS基础教程:从入门到精通在HTML诞生之初,样式以各种形式存在,不同的浏览器通过各自的样式语言来控制页面效果。最初的HTML包含很少的显示属性。随着HTML的发展,为了满足页面设计者的需求,增加了很多显示功能。然而,这些功能使得HTML变得杂乱,页面越来越臃肿。于是,CSS应运而生。那么如何实现结构和样式的完全分离呢?1.什么是CSSCSS,即层叠样式表(CascadingStyleSheet
CSS Modules 终极指南:从入门到精通的前端样式隔离方案
AI实战架构笔记
AI架构开发实战 前端 css ai
CSSModules终极指南:从入门到精通的前端样式隔离方案关键词:CSSModules、前端样式隔离、模块化开发、CSS作用域、前端工程化摘要:本文将带领大家全面了解CSSModules这一强大的前端样式隔离方案。从背景知识的介绍开始,逐步深入解释核心概念,详细阐述算法原理和具体操作步骤,通过项目实战展示其实际应用,探讨实际应用场景和未来发展趋势。旨在让读者从入门到精通CSSModules,掌握
CSS全面系统教程:从入门到精通网页样式设计
PythonicCC
css 前端
CSS(层叠样式表)是网页设计的核心技术之一,本教程将带你系统学习CSS的各个方面,从基础语法到高级布局技巧,助你掌握专业的网页样式设计能力。一、CSS基础概念1.1什么是CSS?CSS(CascadingStyleSheets)全称"层叠样式表",是一种样式表语言,用于描述HTML和XML文档的呈现。CSS的主要作用是将网页的内容(HTML)与表现(样式)分离,使网页结构更加清晰,维护更加方便。
怎么样才能成为专业的程序员?
cocos2d-x小菜
编程 PHP
如何要想成为一名专业的程序员?仅仅会写代码是不够的。从团队合作去解决问题到版本控制,你还得具备其他关键技能的工具包。当我们询问相关的专业开发人员,那些必备的关键技能都是什么的时候,下面是我们了解到的情况。
关于如何学习代码,各种声音很多,然后很多人就被误导为成为专业开发人员懂得一门编程语言就够了?!呵呵,就像其他工作一样,光会一个技能那是远远不够的。如果你想要成为
java web开发 高并发处理
BreakingBad
java Web 并发 开发 处理 高
java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(
mysql批量更新
ekian
mysql
mysql更新优化:
一版的更新的话都是采用update set的方式,但是如果需要批量更新的话,只能for循环的执行更新。或者采用executeBatch的方式,执行更新。无论哪种方式,性能都不见得多好。
三千多条的更新,需要3分多钟。
查询了批量更新的优化,有说replace into的方式,即:
replace into tableName(id,status) values
微软BI(3)
18289753290
微软BI SSIS
1)
Q:该列违反了完整性约束错误;已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能将值 NULL 插入列 'FZCHID',表 'JRB_EnterpriseCredit.dbo.QYFZCH';列不允许有 Null 值。INSERT 失败。”。
A:一般这类问题的存在是
Java中的List
g21121
java
List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,列表通常允许重复
读书笔记
永夜-极光
读书笔记
1. K是一家加工厂,需要采购原材料,有A,B,C,D 4家供应商,其中A给出的价格最低,性价比最高,那么假如你是这家企业的采购经理,你会如何决策?
传统决策: A:100%订单 B,C,D:0%
&nbs
centos 安装 Codeblocks
随便小屋
codeblocks
1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum install gcc-c++
2.安装gtk2-devel,因为默认已经安装了正式产品需要的支持库,但是没有安装开发所需要的文档.yum install gtk2*
3. 安装wxGTK
yum search w
23种设计模式的形象比喻
aijuans
设计模式
1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:
开发管理 CheckLists
aoyouzi
开发管理 CheckLists
开发管理 CheckLists(23) -使项目组度过完整的生命周期
开发管理 CheckLists(22) -组织项目资源
开发管理 CheckLists(21) -控制项目的范围开发管理 CheckLists(20) -项目利益相关者责任开发管理 CheckLists(19) -选择合适的团队成员开发管理 CheckLists(18) -敏捷开发 Scrum Master 工作开发管理 C
js实现切换
百合不是茶
JavaScript 栏目切换
js主要功能之一就是实现页面的特效,窗体的切换可以减少页面的大小,被门户网站大量应用思路:
1,先将要显示的设置为display:bisible 否则设为none
2,设置栏目的id ,js获取栏目的id,如果id为Null就设置为显示
3,判断js获取的id名字;再设置是否显示
代码实现:
html代码:
<di
周鸿祎在360新员工入职培训上的讲话
bijian1013
感悟 项目管理 人生 职场
这篇文章也是最近偶尔看到的,考虑到原博客发布者可能将其删除等原因,也更方便个人查找,特将原文拷贝再发布的。“学东西是为自己的,不要整天以混的姿态来跟公司博弈,就算是混,我觉得你要是能在混的时间里,收获一些别的有利于人生发展的东西,也是不错的,看你怎么把握了”,看了之后,对这句话记忆犹新。 &
前端Web开发的页面效果
Bill_chen
html Web Microsoft
1.IE6下png图片的透明显示:
<img src="图片地址" border="0" style="Filter.Alpha(Opacity)=数值(100),style=数值(3)"/>
或在<head></head>间加一段JS代码让透明png图片正常显示。
2.<li>标
【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)
bit1129
垃圾回收
CMS概述
并发标记清理垃圾回收(Concurrent Mark and Sweep GC)算法的主要目标是在GC过程中,减少暂停用户线程的次数以及在不得不暂停用户线程的请夸功能,尽可能短的暂停用户线程的时间。这对于交互式应用,比如web应用来说,是非常重要的。
CMS垃圾回收针对新生代和老年代采用不同的策略。相比同吞吐量垃圾回收,它要复杂的多。吞吐量垃圾回收在执
Struts2技术总结
白糖_
struts2
必备jar文件
早在struts2.0.*的时候,struts2的必备jar包需要如下几个:
commons-logging-*.jar Apache旗下commons项目的log日志包
freemarker-*.jar  
Jquery easyui layout应用注意事项
bozch
jquery 浏览器 easyui layout
在jquery easyui中提供了easyui-layout布局,他的布局比较局限,类似java中GUI的border布局。下面对其使用注意事项作简要介绍:
如果在现有的工程中前台界面均应用了jquery easyui,那么在布局的时候最好应用jquery eaysui的layout布局,否则在表单页面(编辑、查看、添加等等)在不同的浏览器会出
java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
bylijinnan
java
public class CopySpecialLinkedList {
/**
* 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。
假设原来链表为A1 -> A2 ->... -> An,新拷贝
color
Chen.H
JavaScript html css
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD>&nbs
[信息与战争]移动通讯与网络
comsci
网络
两个坚持:手机的电池必须可以取下来
光纤不能够入户,只能够到楼宇
建议大家找这本书看看:<&
oracle flashback query(闪回查询)
daizj
oracle flashback query flashback table
在Oracle 10g中,Flash back家族分为以下成员:
Flashback Database
Flashback Drop
Flashback Table
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query)
下面介绍一下Flashback Drop 和Flas
zeus持久层DAO单元测试
deng520159
单元测试
zeus代码测试正紧张进行中,但由于工作比较忙,但速度比较慢.现在已经完成读写分离单元测试了,现在把几种情况单元测试的例子发出来,希望有人能进出意见,让它走下去.
本文是zeus的dao单元测试:
1.单元测试直接上代码
package com.dengliang.zeus.webdemo.test;
import org.junit.Test;
import o
C语言学习三printf函数和scanf函数学习
dcj3sjt126com
c printf scanf language
printf函数
/*
2013年3月10日20:42:32
地点:北京潘家园
功能:
目的:
测试%x %X %#x %#X的用法
*/
# include <stdio.h>
int main(void)
{
printf("哈哈!\n"); // \n表示换行
int i = 10;
printf
那你为什么小时候不好好读书?
dcj3sjt126com
life
dady, 我今天捡到了十块钱, 不过我还给那个人了
good girl! 那个人有没有和你讲thank you啊
没有啦....他拉我的耳朵我才把钱还给他的, 他哪里会和我讲thank you
爸爸, 如果地上有一张5块一张10块你拿哪一张呢....
当然是拿十块的咯...
爸爸你很笨的, 你不会两张都拿
爸爸为什么上个月那个人来跟你讨钱, 你告诉他没
iptables开放端口
Fanyucai
linux iptables 端口
1,找到配置文件
vi /etc/sysconfig/iptables
2,添加端口开放,增加一行,开放18081端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 18081 -j ACCEPT
3,保存
ESC
:wq!
4,重启服务
service iptables
Ehcache(05)——缓存的查询
234390216
排序 ehcache 统计 query
缓存的查询
目录
1. 使Cache可查询
1.1 基于Xml配置
1.2 基于代码的配置
2 指定可搜索的属性
2.1 可查询属性类型
2.2 &
通过hashset找到数组中重复的元素
jackyrong
hashset
如何在hashset中快速找到重复的元素呢?方法很多,下面是其中一个办法:
int[] array = {1,1,2,3,4,5,6,7,8,8};
Set<Integer> set = new HashSet<Integer>();
for(int i = 0
使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
lanrikey
history
后退时关闭当前页面
<script type="text/javascript">
jQuery(document).ready(function ($) {
if (window.history && window.history.pushState) {
应用程序的通信成本
netkiller.github.com
虚拟机 应用服务器 陈景峰 netkiller neo
应用程序的通信成本
什么是通信
一个程序中两个以上功能相互传递信号或数据叫做通信。
什么是成本
这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。
都有哪些通信方式
全局变量
线程间通信
共享内存
共享文件
管道
Socket
硬件(串口,USB) 等等
全局变量
全局变量是成本最低通信方法,通过设置
一维数组与二维数组的声明与定义
恋洁e生
二维数组 一维数组 定义 声明 初始化
/** * */ package test20111005; /** * @author FlyingFire * @date:2011-11-18 上午04:33:36 * @author :代码整理 * @introduce :一维数组与二维数组的初始化 *summary: */ public c
Spring Mybatis独立事务配置
toknowme
mybatis
在项目中有很多地方会使用到独立事务,下面以获取主键为例
(1)修改配置文件spring-mybatis.xml <!-- 开启事务支持 --> <tx:annotation-driven transaction-manager="transactionManager" /> &n
更新Anadroid SDK Tooks之后,Eclipse提示No update were found
xp9802
eclipse
使用Android SDK Manager 更新了Anadroid SDK Tooks 之后,
打开eclipse提示 This Android SDK requires Android Developer Toolkit version 23.0.0 or above, 点击Check for Updates
检测一会后提示 No update were found