第456 章

Posted 钟钟终

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第456 章相关的知识,希望对你有一定的参考价值。

第4章 数据库编程

用如下拼接sql的方式检验用户名和密码:
select * from user where userid='aa' and userpwd='a' or '1'='1'
where条件为真。所以是不安全的。
避免方式:在sql中使用"?"进行预编译


第5章 JavaBean简介

JavaBeanJava Web程序的重要组件,它是一些封装了数据和操作的功能类,供JSP或Servlet调用,完成数据封装和处理等功能。

定义:
(1)JavaBean是一个公共类。
(2)JavaBean类具有一个公共的无参的构造方法。
(3)JavaBean所有的属性定义为私有的。
(4)在JavaBean中,需要对每个属性提供两个公共方法。假设属性名字是xxx,要提供的两个方法:
setXxx():用来设置属性xxx的值。
getXxx():用来获取属性xxx的值
(若属性类型是boolean,则方法名为isXxx())。
(5)定义JavaBean时,通常放在一个命名的包下。

(1)<jsp:useBean id="对象名" class= "类名" scope= "有效范围"/>
id属性:指定所要创建的对象名称及存到指定范围的属性名称。
class属性:用来指定JavaBean的类名,注意,必须使用完全限定类名。
scope属性:指定所创建对象的作用范围,其取值有四个:page、request、session、application,默认值是page。

(2)<jsp:getProperty name="beanname" property="propertyname"/>
功能:根据name获取JavaBean对象指定属性的值,并显示在页面上。
说明:jsp:getProperty动作标签是通过JavaBean中的get方法获取对应属性的值。

(3)设置JavaBean对象指定属性值,有四种子形式。
<jsp:setProperty name="beanname" property="propertyname" value="beanvalue"/> :
为beanname对象的指定属性propertyname设置指定值beanvalue。

JavaBean的常用类型

(1)实体类(entity.):封装实体数据,通常只有属性及对应的get/set方法。
(2)工具类(util.
):封装工具方法,方法通常为静态的,通过类名直接调用。如:数据加密/解密、获取数据库连接、数据类型转换等。
(3)数据库操作类(dao.):封装基本的数据库操作(增删改查等),通常先设计接口。
(4)业务逻辑类(service.
):封装业务逻辑操作,通常先设计接口。
(5)控制器类(controller.*):同页面打交道,接收用户请求,是连接页面和业务逻辑的桥梁,如下一章的servlet类。


第6章 Servlet/Filter/Listener

注解 Annotation

注解(Annotation)是自Jdk1.5开始引入的特性
简介
注解提供了在源码(而非在xml配置文件中)中直接对类、成员或方法做配置和说明的机制,它不同于注释,是源码的组成部分

系统Annotation
@Override :表示当前的方法定义将覆盖超类中的方法。如果你不小心拼写错误,或者方法签名对不上被覆盖的方法,编译器就会发出错误提示
@Deprecated :表示的是一个类或方法已经不再建议继续使用了,标记为已过时
@SuppressWarnings : 表示关闭不当的编译器警告信息

定义变量,可设默认值

public @interface MyAnnotation   
       public String name() default "XB";  
       public String info() default "WSDR";  

定义变量数组,接受一组参数

public @interface MyAnnotation 
   public String[] name();  

public static final RetentionPolicy SOURCE:在java源程序中存在
public static final RetentionPolicy CLASS:在java生成的class中存在(默认值)
public static final RetentionPolicy RUNTIME:在java运行的时候存在

@Documented注解:定义注解时,加上该元注解,则注解信息会出现在javadoc文档中。

@Target注解:表示的是一个Annotation的使用范围

Servlet

Servlet是用Java语言编写的服务器端程序,是由服务器端调用和执行的、按照Servlet自身规范编写的Java类。
Servlet可以处理客户端传来的HTTP请求,并返回一个响应。
2.
Servlet得的父类HttpServlet包含了几个重要的方法:
init():初始化方法,Servlet对象创建后,接着执行该方法。
doGet():当请求的类型是“get”时,调用该方法。
doPost():当请求的类型是“post”时,调用该方法。
service():Servlet处理请求时自动执行service()方法,该方法根据请求的类型(get或post),调用doGet()或doPost()方法。
因此,在建立Servlet时,一般只需要重写doGet()和doPost()方法。
destroy():Servlet对象注销时自动执行。
3.
Servlet编写好后,需要进行配置才能起作用,配置方法有xml(在web.xml中配置)和注解两种。
Servlet访问地址(URL Mappings),例如设置为Servlet1(注意起始的**“/”**一定不能去掉)

4.Servlet、JavaBean、Jsp的关系
(1)Jsp是页面,Servlet和Javabean是类,Jsp在执行时会先翻译成Servlet;
(2)JavaBean供JSP或Servlet调用,不能独立运行。
(3)从功能上说,Servlet和Jsp是等价的,都可以用来执行代码处理客户端的请求,事实上Servlet出现早于Jsp,Servlet在输出页面内容时非常繁琐(用一系列的out.write()语句),为了克服这个缺点诞生了Jsp技术;
但Servlet并没有因此退出历史舞台,Servlet侧重于代码设计,Jsp侧重于界面设计,两者各有所长,在一些开发模式中,如MVC模式(后面章节详细介绍),就充分利用两者的特点,让它们在开发中担任不同的角色。

5.Servlet和Jsp的等价性
(1).访问方法
jsp:http://localhost:8080/服务目录/*.jsp
servlet:需要先设置servlet的访问地址()

(2)内部对象
jsp:out,request,response,session,application等内部对象可以直接使用。
servlet:
request、response作为方法参数可直接使用。
out: PrintWriter out=response.getWriter();
session:HttpSession session=request.getSession();
application:ServletContext application= this.getServletContext();

(3)内容类型及编码
Jsp:<%@ page contentType="text/html;charset=utf-8" %>
Servlet:response.setContentType("text/html;charset=utf-8");

(4)导入包
Jsp:<%@ page import=“java.sql.,java.net.” %>
Servlet:import语句;

(5)转发
Jsp:<jsp:forward page=“文件的名字” />
Servlet:request.getRequestDispatcher(“”).forward(request,response)

(6)包含
Jsp:<jsp:include page=“文件的名字” />
Servlet:request.getRequestDispatcher(“”).include(request,response)

(7)页面或servlet关联的几种方式:
链接、表单提交、重定向、转发、包含。

地址关联时,建议地址以“/”开始,不同情况下/含义不同:
链接,表单提交、重定向时,/表示http://localhost:8080,因此/后要加上web目录,更好的写法是$pageContext.request.contextPath
转发、包含以及servlet映射地址: "/"表示http://localhost:8080/web目录,因此"/"后就不用加web目录了。

过滤器(Filter)和监听器(Listener)

过滤器:可以对用户的请求信息和响应信息进行过滤,常被用于权限检查和参数编码统一设置等。
监听器:可以用来对Web应用进行监听和控制的,增强Web应用的事件处理能力。

过滤器:过滤器是在服务器上运行的,且位于请求与响应中间的起过滤功能的程序
过滤器可以改变请求、响应信息,正常到达目标或重定向到其它地址等。

init()方法:public void init(FilterConfig filterConfig) throws ServletException
该方法用于初始化过滤器,默认情况下,服务器启动时就会加载过滤器,init方法就会执行。
该方法有一个FilterConfig类型的参数,利用它可以获取过滤器的初始化参数值(可通过xml或注解设置)
方法为:public String getInitParameter(String paraName)

doFilter()方法:public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,ServletException
该方法是过滤器核心方法,用于执行过滤操作,当请求地址和过滤器配置的过滤地址匹配时被执行。
第一个参数为ServletRequest对象,此对象给过滤器提供了对请求信息(包括表单数据、Cookie和HTTP请求头)的完全访问。

第二个参数为ServletResponse,用于响应请求。

最后一个参数为FilterChain对象,使用该参数对象调用Servlet、JSP页面或者过滤器链中的下一个过滤器。

调用方法为:public void doFilter(ServletRequest request,ServletResponse response)

**监听器:**监听器是Web应
用开发的一个重要组成部分。通过它可以监听Web应用的上下文信息、Servlet请求信息、Servlet会话信息,包括对象创建和销毁、属性数据变化等。
服务器启动时,监听器自动加载,特定事件发生时,容器自动调用相应监听器中对应的事件处理方法。

以上是关于第456 章的主要内容,如果未能解决你的问题,请参考以下文章

第12章 异常

第3章 处理异常

《Effective Java》第3章 对于所有对象都通用的方法

第6章 初始化和清除

软件开发工具(第14章:常用建模工具)

ivew Table 固定列设置后,底部拖拽的横轴被覆盖拉不动