近期工作总结(jsp;css;依赖注入)

JSP页面开发总结:
1、用户输入信息校验javascript代码
<script language="javascript">
function check(form){
if(form.unit_ID.value=="")
{
alert("请输入账号");
form.unit_ID.focus();  //光标输入焦点返回输入框
return false;
}
return false; //防止默认事件继续执行
}
</script>
2、用户是否登录
<% 
String getLoginmessage=(String)session.getAttribute("loginSign");  //还需要考虑是否要判断非空,取决于前面的页面是否一定会session.setAttribute("",""); //如果必须是某一用户(如admin)才可以访问该页面,则该处传入的应该是用户名,判断用户名是否正确。
String unit_ID=(String)session.getAttribute("unitID");//用于查询
if(getLoginmessage!="OK")
{
response.sendRedirect("index.jsp");
}
%>
3、<jsp:useBean id="s_showinfo" scope="page" class="***" /> 简单地说,就是先写一个Bean(也就是特殊一点的java类)并编译。而后在某个jsp页面中需要用到这个类时,就用<jsp:useBean>...</jsp:useBean>这个动作来使用之前写好的Bean。所以这个Bean也可以称为java里的组件。

  <jsp:usebean id="mary" scope="session" class="Person" />
  这一句里,class属性表示要使用哪个类(即Bean),这里是Person,而id属性表示所生成的实例名称,这里是mary,scope属性表示 该实例的生存期,这里是session,即在同一个会话期中有效。
  使用javaBean一定程度上可以将java处理代码从jsp页面中分离。
  <jsp:usebean>用于定位或示例一个javabeans组件。<jsp:usebean>首先会试图定位一个 bean实例,如果这个bean不存在,那么<jsp:usebean>就会从一个class或模版中进行示例。
4、doGet()和doPost()方法区别:
doGet()只能提交256个字符,而且提交的表单会在url后面显示提交的内容,相对不安全。
doGet()处理中文问题,需要些过滤器。
doPost()则是将数据封装,适合于发送大量的数据,提交的数据不会再浏览器的地址栏中显示。(通常采用dopost())
5、loginout.jsp需要清理session,注意顺序,先清理变量,然后将session全部失效
# // 可以单独清除session对应登录数据 
#   // 请注意,此操作不能在 invalidate之后运行,否则出现 
#   // Session already invalidated 的异常信息 
#   session.removeAttribute("LOGIN_SIGN"); 
#   session.removeAttribute("LOGIN_USERNAME"); 
#  
#   // 也可以简单的将session全部失效 
#   // 从安全考虑,推荐这个做法 
#   session.invalidate(); 


CSS:
5、id 选择器 : id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
   id 选择器以 "#" 来定义。
exp: #red {color:red;}
#green {color:green;}
id 属性为 red 的 p 元素显示为红色,而 id 属性为 green 的 p 元素显示为绿色。
<p id="red">这个段落是红色。</p>
<p id="green">这个段落是绿色。</p>
注:每个html文档中id属性只能唯一。
6、id 选择器和派生选择器
在现代布局中,id 选择器常常用于建立派生选择器。
exp:
#sidebar p {
font-style: italic;
text-align: right;
margin-top: 0.5em;
}上面的样式只会应用于出现在 id 是 sidebar 的元素内的段落。
7、单独的选择器
id 选择器即使不被用来创建派生选择器,它也可以独立发挥作用:
exp:
#sidebar {
border: 1px dotted #000;
padding: 10px;
}
根据这条规则,id 为 sidebar 的元素将拥有一个像素宽的黑色点状边框,同时其周围会有 10 个像素宽的内边距(padding,内部空白)。
8、在 CSS 中,类选择器以一个点号显示:
.center {text-align: center}
在上面的例子中,所有拥有 center 类的 HTML 元素均为居中。
使用时 class=“center”
exp:
和 id 一样,class 也可被用作派生选择器:
.fancy td {
color: #f60;
background: #666;
}
元素也可以基于它们的类而被选择:
td.fancy {
color: #f60;
background: #666;
}
你可以将类 fancy 分配给任何一个表格元素任意多的次数。那些以 fancy 标注的单元格都会是带有灰色背景的橙色。那些没有被分配名为 fancy 的类的单元格不会受这条规则的影响。
9、引用方式:
外部样式表 <link rel="stylesheet" type="text/css" href="mystyle.css" />

内部样式表
当单个文档需要特殊的样式时,就应该使用内部样式表。你可以使用 <style> 标签在头部分定义内部样式表,就像这样:
exp: <head>
<style type="text/css">
hr {color: sienna}
p {margin-left: 20px}
body {background-image: url("images/back40.gif")}
</style>
</head>
内联样式
当样式仅需要在一个元素上应用一次时。
要使用内联样式,你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。
exp: <p style="color: sienna; margin-left: 20px">
This is a paragraph
  </p>


依赖注入:
一般来说,当一个方法里面出现冗长的if…else或switch…case结构,且每个分支代码业务相似时,往往预示这里应该引入多态性来解决问题。(声明接口,指向子类对象)而这里,如果把不同武器攻击看成一个策略,那么引入策略模式(Strategy Pattern)是明智的选择。
Tip:OCP原则,即开放关闭原则,指设计应该对扩展开放,对修改关闭
Tip:策略模式,英文名Strategy Pattern,指定义算法族,分别封装起来,让他们之间可以相互替换,此模式使得算法的变化独立于客户。

利用多态性,隔离变化

依赖注入产生的背景:

随着面向对象分析与设计的发展,一个良好的设计,核心原则之一就是将变化隔离,使得变化部分发生变化时,不变部分不受影响(这也是OCP的目的)。为了做到这一点,要利用面向对象中的多态性,使用多态性后,客户类不再直接依赖服务类,而是依赖于一个抽象的接口,这样,客户类就不能在内部直接实例化具体的服务类。但是,客户类在运作中又客观需要具体的服务类提供服务,因为接口是不能实例化去提供服务的。就产生了“客户类不准实例化具体服务类”和“客户类需要具体服务类”这样一对矛盾。为了解决这个矛盾,开发人员提出了一种模式:客户类(如上例中的Role)定义一个注入点(Public成员Weapon),用于服务类(实现IAttackStrategy的具体类,如WoodSword、IronSword和MagicSword,也包括以后加进来的所有实现IAttackStrategy的新类)的注入,而客户类的客户类(Program,即测试代码)负责根据情况,实例化服务类,注入到客户类中,从而解决了这个矛盾。

依赖注入的正式定义:

依赖注入(Dependency Injection),是这样一个过程:由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。










你可能感兴趣的:(工作,jsp,应用服务器,bean,css)