存档

文章标签 ‘Java’

JavaBean语法(上)

2008年3月1日

什么是JavaBean?JavaBean就是一个Java类,即意味着JAVA的一切特性都可以使用,此JavaBean没有图形显示代码,只是完成基本的业务逻辑。

  • JavaBean可以使用Java的封装、继承、多态
  • 使用JavaBean封许多可重复调用的代码–>JavaBean的开发过程是通过项目的不断积累经验的。
  • 使用JavaBean可以达到显示与业务的分离:显示用JSP,业务用JavaBean
    • JAVA开发人员专注于具体业务的开发,而JSP开发人员专注于效果的开发

将JavaBean编译好的*.class文件拷贝到WEB-INF/classes文件夹下,若无此文件夹可以自行建立

编写JavaBean必须需要满足的几点要求:

    1. 所有的JavaBean必须放在同一个包中
    2. JavaBean必须声明成public class类型 –>  文件名称与类名一致
    3. 所有属性必须封装
    4. 设置和取得属性可以通过setter、getter
    5. 使用JSP标签去调用JavaBean必须有一个无参构造方法

JAVA命名规范

  1. 包命名:全部字母小写
  2. 类命名:单词的首字母大写,eg.SimpleBean
  3. 属性名称:第一个单词的首字母小写,之后每单词的首字母大写,eg.studentName
  4. 方法命名:与属性命名相同,eg.public class sayHello(){}
  5. 常量命名:全部单词大写,eg.final String DBDRIVER = "XXXX";

对JAVA程序进行打包编译:javac -d . 文件名

JavaBean开发完成之后在JSP中调用过程:

  1. 使用<%@page import=""%> 使用导入指令
    • 实际上WEB-INF/classes是一个classpath路径,所有的class文件,只要放在此目录下,都可以被访问到
  2. 使用JSP的标签指令调用
    • <jsp:useBean
         id = "sb"                                                               //表示实例化对象的名称
         scope="page"                                                     //表示使用范围
         class="net.hialex.bean.SimpleBean"/>       //对象所属包.类名称路径
    • Tomcat服务器在默认情况下是不能读取修改后的JavaBean如果要读取有以下两种方式:
      1. 重新启动服务器
      2. 配置%TOMCAT_HOME%/conf/web.xml参数reloadable="true"
        • 使用reloadable参数的时机选择:
          • 如果使用这个参数,则表示服务器要始终监视着是否类有改动–这样做影响服务器的性能
          • 在运行时,这个参数必须去掉
          • 在开发时,为了开发方便,可加入此参数

使用JavaBean的好处:

  • 必须结合用户参数提交才能够发现使用JavaBean的好处
  • 使用以下的代码可以替代一切的setter方法调用
    • <jsp:setProperty name = "sb" property="*"/>
      • name:已经声明过的JavaBean对象的id
      • property:表示要设置的属性,如果为"*"则表示自动匹配

alex Java , , , , , ,

(八)JSP基本语法G–其他对象

2008年2月13日

过年期间对自己要求有点放松了,好几天没看视频了,今天开始照常!

Application对象:属于javax.servlet.ServletContext,其作用是保存公共信息

  • 属性操作的三个方法:setAttribute(),getAttribute(),removeAttribute()
  • 得到工作目录的真实路径的方法:Public String getRealPath(String path)此方法需要一个参数“/”
  • Application是整个服务器中保持的只有一个实例的对象
  • 在实际开发中经常使用getServletContext()去代替Application

out对象:

  • out对象主要用于动态的向客户端输出数据
  • 在JSP开发中要尽量少使用此对象
  • 开发中的原则:
    • HTML代码与JAVA代码分离,如果要输出,尽量使用表达式输出(<%=%>),要用(<%=%>)完全代替(<%Out.print();%>)

JSP安全性及Config对象的应用

  • JSP安全性
    • 在J2EE中安全性的体现:工作目录的WEB-INF文件夹
      • 将页面放置到WEB-INF文件夹中下则页面无法被发现,提高了安全性,欲访问WEB-INF文件夹下的文件可以通过修改WEB.XML文件
      • web.xml文件:属于整个WEB站点的配置文件
      • 在web.xml文件中添加下列代码:
                <servlet>
                //在web.xml文件内部起作用与servlet-mapping关联
                <servlet-name>test</servlet-name>
                //找到jsp文件的路径,此路径一般保存在WEB-INF之中
                <jsp-file>/WEB-INF/demo.jsp</jsp-file>
        </servlet>
        <servlet-mapping>
                //在web.xml文件内部起作用与servlet-name完全一致
                <servlet-name>test</servlet-name>
                //网页上输入的实际路径地址
                <url-pattern>/demo</url-pattern>
        </servlet-mapping>
      • 当此文件被修改之后必须重新启动服务器–因为服务器在启动时会读取此文件
  • Config对象:属于javax.servlet.ServletConfig
    • 要使用config对象的前提:JSP页面必须在web.xml中进行配置
    • 在<servlet>与</servlet>中添加下列代码:<init-param>
      <param-name>参数名</param-name>
      <param-value>参数值</param-value>
      </init-param>
    • <init-param></init-param> 可添加多个
    • 如果要取得这些初始化参数,必须通过映射名称进行访问jsp页面,才可以取得初始化参数,通过config对象来取得
      • 取得初始化参数的方法:public String getInitParameter(String name),通过这中功能可以将数据库连接的一些信息写在配置文件之中
      • 常用的方法还有:public Enumeration getInitParameterNames()取得全部配置参数

alex Java , , , , ,

(七)JSP基本语法–session对象

2008年2月2日

session对象

  • session对象主要用于保存用户的各种信息,知道它的生命周期(一般是900S)超时或者被人为释放为止
  • 可以通过session对象来判断此用户是否是合法用户
  • 在服务器上通过session来区分每一个上网用户
  • session对象属于javax.servlet.http.HttpSession接口的实例化对象
    • session属于HTTP协议范畴之内的对象,所以只有唯一的一个http包下有此接口,没有任何继承关系
    • 用户只要一连接服务器则立刻分配一个session给用户

session的主要方法

  1. 服务器上通过session来分别不同的用户–>sessionID:任何连接到服务器上的用户,服务器都会为之分配唯一一个不会重复的sessionID
    • sessionID是由服务器同意管理的,人为不能控制
    • 方法:session.getId()
    • sessionID的长度为32位
  2. 判断是不是新的session
    • Public boolean isNew(),判断当前的session是否是新建立的session
  3. session的属性设置
    • 设置属性setAttribute()
    • 取得属性getAttribute()
    • 删除属性removeAttribute()
    • 通过session能够对用户是否登陆做出验证
  4. 用户注销:让用户的session失效
    • 若用户的session失效,则在session所保留的全部操作也会消失
    • 方法:Public Void invalidate()使session失效(需手工操作)
    • 若session长时间不被使用,也会自动失效
  5. 得到session的创建时间
    • 方法:Public long getCreationTime(),此方法返回一个long类型,通过Date类可以取得一个完整的时间
  6. 取得用户最后一次操作的时间
    • 方法:Public long getLastAccessedTime()
    • 用户在线时间=session最后一次操作时间-session创建时间

session与Cookie区别:

  • session将信息保存在服务器上而Cookie保存在客户端上
  • session比Cookie更安全,session比Cookie更占资源
  • 开发原则:
    • sessiom要尽量少使用–尽量少向session中保存信息
    • session使用Cookie机制,若Cookie被禁用,则session也无法使用

alex Java , , ,

(六)JSP基本语法E–response对象

2008年1月31日

response对象:服务器端回应客户端的请求

  • 所属接口:javax.servlet.http.HttpServletResponse,其父接口是ServletResponse,而且ServletResponse也现在只有唯一一个HttpServletResponse子接口,主要原因是,现在的J2EE的WEB程序主要以HTTP协议为主要通讯协议。

response对象的功能:

  1. 设置头信息:response.setHeader("头信息内容","头信息参数");
    • 常用的刷新refresh,例如:response.setHeader("refresh","1");
      • 几秒后跳转:response.setHeader("refresh","2:URL=XXX");
  2. 重定向–response跳转response.sendRedirect("跳转地址");
    • 此语句执行后,页面地址也变为跳转后的地址
    • 面试中常见问题:两种跳转的区别:
      • <jsp:forward page="xxx" />:
        1. 地址栏不改变–属于服务器端跳转
        2. 执行到跳转语句后无条件立刻跳转–之后的代码将不再执行
          • 注意:若使用forward跳转则一定要在跳转前释放掉全部资源;
          • 使用forward时,request设置的属性(setAttribute)依然能保留到下一个页面
        3. 通过<jsp:Param name="" value="" />传递参数
      • response.sendRedirect("跳转地址"):
        1. 地址栏改变–属于客户端跳转
        2. 页面的所有代码执行完毕之后再跳转
          • 不能保存request属性,地址栏改变了,客户端跳转
        3. 通过对URL地址的重写传递参数
  3. 设置Cookie
    • Cookie是服务器端保存在客户端的一组资源
    • 通过Cookie实现保存密码或者多长时间无需再输入密码等功能
    • 设置Cookie的方法:Public Void addCookie(Cookie cookie)
    • Cookie是通过服务器端设置到客户端上去的–response
      • 如果要在服务器端取得Cookie–request
      • 在request对象中有Public Cookie[] getCookies()方法
      • 在使用request对象取得全部Cookie时会出现JSESSIONID,表示唯一的客户端在服务器上的编号,这个值在客户端第一次访问服务器端之后设置
    • 默认情况下Cookie只针对当前浏览器有效,如果需要长留在计算机上,可以设置Cookie的保存时间,通过设置Cookie最大保留时间方法:setMaxAge()

alex Java , , , ,

JSP基本语法D–request对象

2008年1月24日

request对象其实是服务器端接受客户端请求的信息的,在接受信息之后做进一步处理

常用方法:getParameter(),getParameterValues(),getParameterNames()

在接受参数之后若页面中包含中文则会出现乱码,之所以会出现这样根本原因就是此文字不在正常的编码范围之中,解决方法有:

  1. 对所有的数据进行在编码:ISO8859-1编码
    • String类中的getBytes("ISO8859-1");
    • getBytes()方法的定义:Public byte[] getBytes("encoding")再将byte数组重新变为字符串。e.g.String name=new String(request.getParameter("uname").getBytes("ISO8859-1"));
  2. 设置同意的字符编码
    • Public void setCharacterEncoding(String env)

在J2EE中,最大的问题是乱码问题–要做到国际通用

若传递的内容是数组(复选框的情况下、多个下拉列表项)使用request的一下方法取得数据:

  • Public String[] getParameterValues(String name)

隐藏域是开发中较为常用的表单控件,其作用是将内容隐藏起来,使用户不能修改,之后随表单一起提交到服务器上显示。

地址重写

  • 通过地址重写,可以将内容传递到服务器端–服务器端只认HTTP协议而不管接受的内容是以何种形式传递过来的,若有多个参数用&连接

★getParameterNames主要用来接受参数名称

  • Public Enumeration getParameterNames()

取得客户端IP地址的方法:Public String getRemoteAddr()

★★总结:

  • 只要是客户端的信息,在服务器端都可以通过request对象取得
  • 只需要注意中文乱码问题即可
  • 必须掌握的方法getParameter(),getParameterValues(),setCharacterEncoding()

alex Java , , ,