- 浏览: 328694 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
-
huangyunbin:
swc.advance(); 这个什么时候被调用是最核心的 ...
滑动窗口计数java实现 -
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB 从入门到精通专题教程 -
rryymmoK:
深入浅出MongoDB应用实战开发下载地址:http://pa ...
MongoDB 从入门到精通专题教程 -
u012352249:
怎么支持多个窗口啊?
滑动窗口计数java实现 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB 从入门到精通专题教程
servlet & struts 总复习
------------------------
1. Servlet 基础概念
HttpServlet extends Servlet
生命周期(init(), destroy(), service())
init(Config)->获得initParam
HttpServlet -> service()(获得当前提交的方式,分别调用doGet或者是doPost方法)
doGet/doPost(HttpServletRequest, HttpServletResponse)
1.1 现在没有其他的JSP内置对象
如何获得这些内置对象?
Session,Application,out->JspWriter
request.getSession()/request.getSession(boolean)
session.getServletContext()->application
response.getWriter()->PrintWriter
1.2 编码的问题
request的编码
如果没有在conf/server.xml做配置的话
在doGet,doPost方法中需要做不同的处理
否则, 直接在doPost做或者在filter里做
response 编码
response.setContentType("text/html; charset=GBK");
JS 的编码
out.println("<script>出错了("error");</script>");
---> 显示的都是乱码
解决方式一:中文部分特别做转码后再放进去
new String("出错了".getBytes("GBK"), "ISO8859-1");
解决方式二:
而是把信息放在request.setAttribute中
1.3 Servlet 做什么
出生的时候比JSP早, 古代的时候是拿Servlet来输出页面的
servlet 承担一个控制器的职责
纯JSP方式(不分层,所有代码都在页面上,包括业务逻辑, 包括访问数据库)类似ASP方式.
JSP + JavaBean 方式(JavaBean 可以是狭义上的, 属性和getter/setter方法
--> entity里的实体, 在广义上,一般的后台Java类)
<jsp:useBean> <jsp:getProperty> <jsp:setProperty>和后台的bean打交道.
这样的方式又叫model I
jsp+servlet+javabean -> model 2 -> MVC(Model-View-Controller)
DAO/Service -> 承担Model(访问数据库,执行业务逻辑)
entity -> 承担Model(把数据库的E-R变成OO)
Jsp -> 承担View职责, 只做把Controller转来的内容显示, 接收用户的输入,再提交.
配合上适当的标签, 就可以消灭小的脚本<% %>
Servlet -> 承担Controller职责,把页面的提交获取,调用M层的方法,最后把调用返回结果放在对应的页面内置对象中, 最后完成页面的转发或重定向.
具体来说, 一般一个Servlet中包括了如下步骤:
* 继承 HttpServlet
a, request.setCharEncoding("GBK");
b, 从request中获得提交内容: request.getParameter();->获得单个属性
request.getParameterValues();->获得数组
request.getParameterMap();->获得提交内容的Map封装,可以用BeanUtils.populate()填充.
在Servlet的提交里不会存在自定义对象, 集合对象(Struts才有的)
c, 对所有获得的这些内容要做转换和验证.
d, 根据需要封装entity中的实体对象
e, 实例化service的对象, 调用对应的业务方法
f, 返回结果放到request或者session或者是application上.
g, 根据不同的返回做不同的跳转或重定向.
request.getRequestDispatcher("xx.jsp").forward();
1.4 Servlet 如何配置
配置在web.xml中
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>xxx.xxx.xx.XXServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.htm</url-pattern>
/aa/*.do -> error
*abc.jsp -> error
/* -> Yes
*.do -> Yes
ACB - > Yes
</servlet-mapping>
多个servlet-mapping可以对应一个servlet配置段, 反之是不行的.
顺序无关
在<servlet>中可以配置一些其它的属性<init-param>
<param-name><param-value>, 在这里配置的属性将在init的时候被放在
config对象中, 我们可以通过getInitParameter()获得.
1.5 Servlet使用的注意事项
a, servlet是只被实例化一次的, 所以考虑到线程安全问题, 尽量在Servlet中写全局变量.
b, 所有的entity中的对象需要实现序列化接口.
c, 在servlet中, 如果说在response.sendRedirect()后还有代码,一定在sendRedirect后加一句return;
2. Filter
2.1 filter是实现Filter接口.
init(), destroy().
2.2 doFilter(request, response, chain)
2.3 是在过滤器chain上的, 顺序是由在web.xml里出现的顺序决定的.
2.4 request 的时候是写在前面的先被过滤到, response 是反过来接受到request时候的过滤.
chain.doFilter -> 向下一个过滤器提交
2.5 chain.doFilter(request, response), 如果写的url-pattern是*,Jsp也要经过Filter
2.6 如何配置,
<filter><filter-name><filter-class>
<filter-mapping><url-pattern>
* 有顺序要求, 先配先执行
2.7 如何写
2.7.1 转换成HttpServletRequest和HttpServletResponse
2.8 应用范围
转码, 验证, 权限, 防止盗链 -> 基本Filter可实现
替换, 压缩 -> HttpServletResponseWrapper: 装饰模式
* 首先在当前Filter中把原来的Response包装成自写的ResponseWrapper类
在doFilter()方法后
首先获得当前的包装对象, 对这个对象转成String,char[], byte[]
对转完的内容进行处理
处理完了以后,把处理结果通过真正的response给out出去.
在out.println()之前, 要修改真正的response对象的contentLength
3. Listener
3.1 和过滤器一样也是实现接口的.
3.2 request, Session, ServletContext
HttpSessionListener->监听创建和销毁的
HttpSessionAttributeListener -> 监听属性的增加删除和修改的
对于基本的监听器, 只需要在web.xml中配置一个<listener><listener-class>即可.
3.3 HttpSessionListener和HttpSessionBindingListener区别
HttpSessionListener: 整个应用就生成一个实例负责监听所有的session创建和销毁.
如果要做特别的处理就不好做了.
HttpSessionBindingListener:
valueBound()
valueUnBound()
可以每个不同的客户使用不同的监听器实例.
不需要在web.xml中配置.
session.setAttribute("aaaxx", new HttpSessionBindingListener())将触发valueBound方法
session.removeAttribute("aaaxx")或者session就销毁了那么就触发valueUnBound()方法.
为了标识不同的客户的不同监听器实例, 我们常常在自已写的BindingListener定义UserName, UserId
灵活但消耗资源.
3.4 所有的Listener所实现的方法里的参数都是event
在自已写Listeners的方法的时候,都要从event中来进一步获得内置对象
3.5 Listeners可以做什么?
初始化-> 把编码表的信息放在session里.
在application 上做一个监听器, 同时启动一个定时器, 这种应用是很常用的, 可以负责监控系统状态产生报警信息, 在线列表.
============================================================
------------------------------------------------------------
4. Struts整理流程
4.1 jsp -> ActionServlet -> RequsetProcessor(我们可以自己扩展的)
ActionServlet init()(读入配置文件的内容, 形成一个ModuleConfig, freeze())
doGet/doPost() -> process() -> requestProcessor.process()
4.2 RequestProcessor.process()方法
a, 获得ActionMapping
把页面上<form action="/x.do"> 和
struts-config.xml中的<action path="x" >对应.
b, 判断ActionMapping中的name, 有无对应的actionForm
c, 如果有name, 就进行填充
填充之前首先做二次接头,把<action name="abc">
和<form-bean name="abc">相对应.
如果对应上了,就根据<form-bean type="xx">
来实例化ActionForm对象,然后再填充,调用populate()方法填充的.
在填充之前, 如果有initial或者是reset方法,先做初始化.
d, ActionMapping中的validate是不是true, 如果是的话就验证(validate方法, 验证框架)
2.5 如果ActionErrors对象不为空(不是null, 而是里面有ActionError对象),返回到
input页面, 为空就继续
2.6 建立Action实例
2.7 调用Action有execute方法或者是根据parameter来决定调用分发Action中的具体方法
2.8 根据返回的ActionForward对象, 进行转发或者是重定向
ActionForward里有一个redirect属性决定是转发还是重定向
<forward name= path= redirect="true|false" >
3, Action 中
execute:
ActionMapping, ActionForm, HttpServletRequest, HttpSErvletResponse
返回的是个ActionForward
execute 中的执行流程
a, 避免直接在这个方法中写业务逻辑
把from强制转换成我们需要的类型.
b, 从ActionForm中取值
c, 验证(是验证业务逻辑)
d, 把值封装成VO对象
e, 调用对应的M层方法
f, 返回结果
导航文件:
1, 各个部分的元素是有顺序的.
2, data-sources
forbeans(当中有N个formbean)
nam 名字 type 所在类
globle-forward
name path 路径
action-mappings
<action name 对应form-bean 中的name
path 页面请求
attribute 对应范围的属性名
scope request或者session
type 对应的Action类的带包名的类名
parameter 丰富,主要用于分发,不同Action有不同的含义
input 错误跳转页面
validate true|false
roles 声明式定义权限"user, admin, sys"
forward(局部forward)
controller
processorClass 对应的扩展的RequestProcessor类
message-resources
对应的资源文件的名字, 刻不带后缀, 不带国家地区代码
Plug-in 放验证框架
web.xml
ActionServlet
导航文件所在的位置
Minit-param><param-name>config
这里的<param-value>可以写多个用逗号隔开的配置文件.
5. ActionForm
6. Action
ForwardAction
<path="/" forward="" /> = <jsp:forward>
includeAction = <jsp:include>
SwitchAction->模块转换
分发Action
共同点:
1, 不能写execute()方法
2, 这里面都有一系列方法,方法签名都和execute相同.
3, 所有的分发Action都要利用到parameter参数
DispatchAction
带参数或隐藏表单域
8 自定义验证器
随便写个类,里面的方法是以validateXX形式开头
对于DispatchAction来说, 要想使用验证规则, 就必须要扩展原有的FieldCheck类
在所有的验证规则前都首先判断是否属于当前要验证的方法.
9 Struts标签
html, bean, logic, nested, tiles
html: 生成表单元素的, 显示错误消息的.
<html:form action="/xx">
<html:select property="xx">
<html:options collection="xx"
property="xx"
labelProperty="xx" />
</html:select>
<html:errors><html:messages>
<form action="">
<html:text>
</form> --> 这样写要报错, 所以要使用HTML, 就要使用<html:form>
<html:submit>
bean -> 定义, 输出
<bean:write name="" property="" format="" > 可以是bean中的属性也可以是map中的key
里面不能有default
<bean:define id="" value="" />
<bean:define id="" name="" />
<bean:define id="" name="" property="" scope="" toScope="" />
<bean:message key="" bundle="" />
<bean:size id="" name="" />
logic -> 比较,判断, 迭代
<logic:equal>
<logic:empty> <logic:notEmpty>
<logic:present> <logic:notPresent> 是否存在
<logic:match location="start|end"> 字符串匹配
<logic:iterate name="" id="item" indexedId="index"(从1开始) offset="1" length="2">
<c:forEach items="${list}" var="item" varStatus="" begin="1" end="3">
<logic:iterate>可以遍历各类集合, 但是不能做空循环.
可以比较好的与Struts结合
<html:text property="num" indexed="true" />
nested -> 访问嵌套属性
tiles -> 做页面布局
Template Method
layout.jsp -> 模板页面
通过xml来决定以何种方式来填充模板来的不定的内容
要使用XML,就要把<tiles>框架通过<Plug-in>加入struts-config.xml文件.
------------------------
1. Servlet 基础概念
HttpServlet extends Servlet
生命周期(init(), destroy(), service())
init(Config)->获得initParam
HttpServlet -> service()(获得当前提交的方式,分别调用doGet或者是doPost方法)
doGet/doPost(HttpServletRequest, HttpServletResponse)
1.1 现在没有其他的JSP内置对象
如何获得这些内置对象?
Session,Application,out->JspWriter
request.getSession()/request.getSession(boolean)
session.getServletContext()->application
response.getWriter()->PrintWriter
1.2 编码的问题
request的编码
如果没有在conf/server.xml做配置的话
在doGet,doPost方法中需要做不同的处理
否则, 直接在doPost做或者在filter里做
response 编码
response.setContentType("text/html; charset=GBK");
JS 的编码
out.println("<script>出错了("error");</script>");
---> 显示的都是乱码
解决方式一:中文部分特别做转码后再放进去
new String("出错了".getBytes("GBK"), "ISO8859-1");
解决方式二:
而是把信息放在request.setAttribute中
1.3 Servlet 做什么
出生的时候比JSP早, 古代的时候是拿Servlet来输出页面的
servlet 承担一个控制器的职责
纯JSP方式(不分层,所有代码都在页面上,包括业务逻辑, 包括访问数据库)类似ASP方式.
JSP + JavaBean 方式(JavaBean 可以是狭义上的, 属性和getter/setter方法
--> entity里的实体, 在广义上,一般的后台Java类)
<jsp:useBean> <jsp:getProperty> <jsp:setProperty>和后台的bean打交道.
这样的方式又叫model I
jsp+servlet+javabean -> model 2 -> MVC(Model-View-Controller)
DAO/Service -> 承担Model(访问数据库,执行业务逻辑)
entity -> 承担Model(把数据库的E-R变成OO)
Jsp -> 承担View职责, 只做把Controller转来的内容显示, 接收用户的输入,再提交.
配合上适当的标签, 就可以消灭小的脚本<% %>
Servlet -> 承担Controller职责,把页面的提交获取,调用M层的方法,最后把调用返回结果放在对应的页面内置对象中, 最后完成页面的转发或重定向.
具体来说, 一般一个Servlet中包括了如下步骤:
* 继承 HttpServlet
a, request.setCharEncoding("GBK");
b, 从request中获得提交内容: request.getParameter();->获得单个属性
request.getParameterValues();->获得数组
request.getParameterMap();->获得提交内容的Map封装,可以用BeanUtils.populate()填充.
在Servlet的提交里不会存在自定义对象, 集合对象(Struts才有的)
c, 对所有获得的这些内容要做转换和验证.
d, 根据需要封装entity中的实体对象
e, 实例化service的对象, 调用对应的业务方法
f, 返回结果放到request或者session或者是application上.
g, 根据不同的返回做不同的跳转或重定向.
request.getRequestDispatcher("xx.jsp").forward();
1.4 Servlet 如何配置
配置在web.xml中
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>xxx.xxx.xx.XXServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.htm</url-pattern>
/aa/*.do -> error
*abc.jsp -> error
/* -> Yes
*.do -> Yes
ACB - > Yes
</servlet-mapping>
多个servlet-mapping可以对应一个servlet配置段, 反之是不行的.
顺序无关
在<servlet>中可以配置一些其它的属性<init-param>
<param-name><param-value>, 在这里配置的属性将在init的时候被放在
config对象中, 我们可以通过getInitParameter()获得.
1.5 Servlet使用的注意事项
a, servlet是只被实例化一次的, 所以考虑到线程安全问题, 尽量在Servlet中写全局变量.
b, 所有的entity中的对象需要实现序列化接口.
c, 在servlet中, 如果说在response.sendRedirect()后还有代码,一定在sendRedirect后加一句return;
2. Filter
2.1 filter是实现Filter接口.
init(), destroy().
2.2 doFilter(request, response, chain)
2.3 是在过滤器chain上的, 顺序是由在web.xml里出现的顺序决定的.
2.4 request 的时候是写在前面的先被过滤到, response 是反过来接受到request时候的过滤.
chain.doFilter -> 向下一个过滤器提交
2.5 chain.doFilter(request, response), 如果写的url-pattern是*,Jsp也要经过Filter
2.6 如何配置,
<filter><filter-name><filter-class>
<filter-mapping><url-pattern>
* 有顺序要求, 先配先执行
2.7 如何写
2.7.1 转换成HttpServletRequest和HttpServletResponse
2.8 应用范围
转码, 验证, 权限, 防止盗链 -> 基本Filter可实现
替换, 压缩 -> HttpServletResponseWrapper: 装饰模式
* 首先在当前Filter中把原来的Response包装成自写的ResponseWrapper类
在doFilter()方法后
首先获得当前的包装对象, 对这个对象转成String,char[], byte[]
对转完的内容进行处理
处理完了以后,把处理结果通过真正的response给out出去.
在out.println()之前, 要修改真正的response对象的contentLength
3. Listener
3.1 和过滤器一样也是实现接口的.
3.2 request, Session, ServletContext
HttpSessionListener->监听创建和销毁的
HttpSessionAttributeListener -> 监听属性的增加删除和修改的
对于基本的监听器, 只需要在web.xml中配置一个<listener><listener-class>即可.
3.3 HttpSessionListener和HttpSessionBindingListener区别
HttpSessionListener: 整个应用就生成一个实例负责监听所有的session创建和销毁.
如果要做特别的处理就不好做了.
HttpSessionBindingListener:
valueBound()
valueUnBound()
可以每个不同的客户使用不同的监听器实例.
不需要在web.xml中配置.
session.setAttribute("aaaxx", new HttpSessionBindingListener())将触发valueBound方法
session.removeAttribute("aaaxx")或者session就销毁了那么就触发valueUnBound()方法.
为了标识不同的客户的不同监听器实例, 我们常常在自已写的BindingListener定义UserName, UserId
灵活但消耗资源.
3.4 所有的Listener所实现的方法里的参数都是event
在自已写Listeners的方法的时候,都要从event中来进一步获得内置对象
3.5 Listeners可以做什么?
初始化-> 把编码表的信息放在session里.
在application 上做一个监听器, 同时启动一个定时器, 这种应用是很常用的, 可以负责监控系统状态产生报警信息, 在线列表.
============================================================
------------------------------------------------------------
4. Struts整理流程
4.1 jsp -> ActionServlet -> RequsetProcessor(我们可以自己扩展的)
ActionServlet init()(读入配置文件的内容, 形成一个ModuleConfig, freeze())
doGet/doPost() -> process() -> requestProcessor.process()
4.2 RequestProcessor.process()方法
a, 获得ActionMapping
把页面上<form action="/x.do"> 和
struts-config.xml中的<action path="x" >对应.
b, 判断ActionMapping中的name, 有无对应的actionForm
c, 如果有name, 就进行填充
填充之前首先做二次接头,把<action name="abc">
和<form-bean name="abc">相对应.
如果对应上了,就根据<form-bean type="xx">
来实例化ActionForm对象,然后再填充,调用populate()方法填充的.
在填充之前, 如果有initial或者是reset方法,先做初始化.
d, ActionMapping中的validate是不是true, 如果是的话就验证(validate方法, 验证框架)
2.5 如果ActionErrors对象不为空(不是null, 而是里面有ActionError对象),返回到
input页面, 为空就继续
2.6 建立Action实例
2.7 调用Action有execute方法或者是根据parameter来决定调用分发Action中的具体方法
2.8 根据返回的ActionForward对象, 进行转发或者是重定向
ActionForward里有一个redirect属性决定是转发还是重定向
<forward name= path= redirect="true|false" >
3, Action 中
execute:
ActionMapping, ActionForm, HttpServletRequest, HttpSErvletResponse
返回的是个ActionForward
execute 中的执行流程
a, 避免直接在这个方法中写业务逻辑
把from强制转换成我们需要的类型.
b, 从ActionForm中取值
c, 验证(是验证业务逻辑)
d, 把值封装成VO对象
e, 调用对应的M层方法
f, 返回结果
导航文件:
1, 各个部分的元素是有顺序的.
2, data-sources
forbeans(当中有N个formbean)
nam 名字 type 所在类
globle-forward
name path 路径
action-mappings
<action name 对应form-bean 中的name
path 页面请求
attribute 对应范围的属性名
scope request或者session
type 对应的Action类的带包名的类名
parameter 丰富,主要用于分发,不同Action有不同的含义
input 错误跳转页面
validate true|false
roles 声明式定义权限"user, admin, sys"
forward(局部forward)
controller
processorClass 对应的扩展的RequestProcessor类
message-resources
对应的资源文件的名字, 刻不带后缀, 不带国家地区代码
Plug-in 放验证框架
web.xml
ActionServlet
导航文件所在的位置
Minit-param><param-name>config
这里的<param-value>可以写多个用逗号隔开的配置文件.
5. ActionForm
6. Action
ForwardAction
<path="/" forward="" /> = <jsp:forward>
includeAction = <jsp:include>
SwitchAction->模块转换
分发Action
共同点:
1, 不能写execute()方法
2, 这里面都有一系列方法,方法签名都和execute相同.
3, 所有的分发Action都要利用到parameter参数
DispatchAction
带参数或隐藏表单域
8 自定义验证器
随便写个类,里面的方法是以validateXX形式开头
public static boolean validateXX( Object bean, Field field, ActionMessages messages, HttpServletRequest request, ValidatorAction va, Validator validator) { Field.getVarByValue("xx"); Field.getProperty(); -> str BeanUtils.getProperty(bean, str); if(messages == null) messages = new ActionMessages(); Resources.getActionMessage()->获得通过validation配置出来的错误消息. }修改validator-rules.xml在其中增加自已的验证类
对于DispatchAction来说, 要想使用验证规则, 就必须要扩展原有的FieldCheck类
在所有的验证规则前都首先判断是否属于当前要验证的方法.
9 Struts标签
html, bean, logic, nested, tiles
html: 生成表单元素的, 显示错误消息的.
<html:form action="/xx">
<html:select property="xx">
<html:options collection="xx"
property="xx"
labelProperty="xx" />
</html:select>
<html:errors><html:messages>
<form action="">
<html:text>
</form> --> 这样写要报错, 所以要使用HTML, 就要使用<html:form>
<html:submit>
bean -> 定义, 输出
<bean:write name="" property="" format="" > 可以是bean中的属性也可以是map中的key
里面不能有default
<bean:define id="" value="" />
<bean:define id="" name="" />
<bean:define id="" name="" property="" scope="" toScope="" />
<bean:message key="" bundle="" />
<bean:size id="" name="" />
logic -> 比较,判断, 迭代
<logic:equal>
<logic:empty> <logic:notEmpty>
<logic:present> <logic:notPresent> 是否存在
<logic:match location="start|end"> 字符串匹配
<logic:iterate name="" id="item" indexedId="index"(从1开始) offset="1" length="2">
<c:forEach items="${list}" var="item" varStatus="" begin="1" end="3">
<logic:iterate>可以遍历各类集合, 但是不能做空循环.
可以比较好的与Struts结合
<html:text property="num" indexed="true" />
nested -> 访问嵌套属性
tiles -> 做页面布局
Template Method
layout.jsp -> 模板页面
通过xml来决定以何种方式来填充模板来的不定的内容
要使用XML,就要把<tiles>框架通过<Plug-in>加入struts-config.xml文件.
发表评论
-
struts1.2验证框架续
2009-09-20 23:53 1075struts 验证 代码级验证:A ... -
struts1.2验证框架入门
2009-09-20 23:52 1324Struts 验证 在ActionForm里的validate ... -
struts1.2之Form续与标签入门
2009-09-20 23:49 1545ActionForm 需要Java类,各有不同的实现 支持的属 ... -
struts1.2各种form详解
2009-09-20 23:48 1882DynaActionForm 用配置代替Java类 <f ... -
struts1.2重点解析2
2009-09-20 23:46 1208struts 内容: ActionServlet, strut ... -
struts1.2重点解析1
2009-09-20 23:45 1108struts基本配置,在web.xml中 <servle ... -
SERVLET重要知识点
2009-09-20 23:41 1085Servlet 基础 所有的servlet都是从HttpSer ... -
JSTL简单总结
2009-09-20 23:39 1095JSTL --> JSP标准标签库 基本语言的内容:赋 ... -
JDBC与JSP简单总结
2009-09-20 23:38 1324动态脚本语言,运行在web ... -
JSP基础(续)
2009-09-20 23:36 918隐式对象(内置变量)输 ... -
JSP基础知识
2009-09-20 23:36 990配置虚拟目录方式二:在server.xml中的Context标 ... -
SqlServer基础
2009-09-20 23:34 964--------- SQL ----------T-SQL是S ... -
JavaScript高级知识
2009-09-20 23:33 1085====== JavaScript提高 =======* 掌握 ... -
JavaScript基础入门
2009-09-20 23:32 1073====== JavaScript 基础 ======== ... -
EL表达式与自定义标签
2009-09-20 23:29 1611${sessionScope.user.sex}${sessi ... -
css基础
2009-09-20 23:25 986========= CSS 基础 ======== css ... -
JSP总结
2009-05-17 19:42 1141访问JSP的过程:如果第一次访问.jsp文件,被服务器翻译成一 ... -
JavaScript总结
2009-05-17 19:19 1124在Html中使用<script>嵌入脚本代 ...
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip