JavaEE基础实用教程复习

合集下载

JavaEE复习知识点及答案

JavaEE复习知识点及答案

Java EE主要知识点--- 配合教材《Java EE实用教程- 基于WebLogic和Eclipse(第二版)》及SSH入门第一部分基础服务1.Java EE 6的架构图、Java EE的组件类型将应用分成四层,分别为客户端层、Web层、EJB 层(业务逻辑层)和数据库层;组件:组件可以定义为一种自治的、提供外部公共接口的、动态可用的业务处理过程,组件可以用来构建其它组件或者应用程序。

可分为:客户端组件:应用程序客户端组件(application clients)、Applet组件Web组件:JSP、Servlet组件业务逻辑组件:EJB组件2.JNDI命名服务与目录服务的区别及应用实例命名服务:将名字和对象关联,根据名字访问对象目录服务:把名字与对象关联的同时,也把对象与属性关联起来,不仅可以根据名字访问对象,而且可以根据属性查找对象目录服务= 命名服务+ 包含属性的对象应用实例:P153.JDBC的工作原理JDBC是Java应用程序连接各种不同数据库的标准API,开发人员可以通过该API连接到各种类型的数据库管理系统,并对数据库中的数据进行操作。

用户只需编写不同的SQL 语句,而不必关心数据库的实现以及不同数据库之间的差异。

通过JDBC 访问数据库需要有相应数据库的JDBC驱动程序,程序员根据JDBC提供的标准接口书写SQL语句,JDBC驱动程序负责将其转化为特定的数据库操作。

JDBC提供两组接口,一组接口面向Java应用开发人员,另一组面向驱动程序编写人员。

通过JDBC API 可以完成:建立与数据库管理系统的连接;想服务器提交执行的SQL语句;处理返回的结果集。

附:JSP访问数据库的步骤以Mysql为例1 注册驱动Class.forName("com.mysql.jdbc.Driver");2 连接数据库Connectioncon=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123456");3 创建一个状态对象Statement stmt=con.createStatement();4 通过状态对象执行SQL查询并获得一个数据集对象。

JavaEE复习

JavaEE复习

Java EE复习一、填空题:(一)第一章概述1.大多数应用,从PC机上的简单报表程序到大型机上的复杂计算,都由三部分组成:表示层、业务逻辑层、数据访问层。

2.Java EE为满足开发多层体系结构的企业级应用的需求,提出“组件-容器”的编程思想。

Java EE应用的基本软件单元是JavaEE组件。

基本软件单元的运行环境被称为容器.3.两层体系结构应用程序分为客户层和服务器层.4.所谓的企业级应用程序,并不是特指为企业开发的应用软件,而是泛指那些为大型组织部门创建的应用程序。

5.在三层分布式企业应用程序中,包括客户层、应用服务器层、数据服务器层三层。

6.Java EE客户端组件既可以是一个Web浏览器、一个Applet,也可以是一个应用程序。

7.Java EE web组件包括servlet和JSP。

8.Java EE有两种类型的EJB组件:会话Bean和消息驱动Bean。

9.Java EE 6提供的组件主要包括三类:客户端组件、Web组件、业务组件。

(二)第三章servlet10.Servlet组件在进行重定向时,需要使用ServletResponse接口的方法是sendRedirect()。

11.httpServletRequest提供了两个方法用于从请求中解析出上传的文件:Part getPart(String name)和Collection<part> getParts()。

12.一个Servlet的配置参数保存在ServletConfig_对象中,这个配置对象(能/不能)不能被其他Servlet访问。

13.Servlet支持两种格式的输入/输出流:字符输入输出流和字节输入输出流。

14.MIME的全称是多媒体Internet邮件扩展(Multimedia Internet Mail Extension),ServletResponse中响应正文的默认MIME类型为text/plain,而HttpServetResponse中的响应正文的默认MIME类型为text/html。

JavaEE基础知识_2

JavaEE基础知识_2
接口在开发当中的应用
注意:接口在开发中的作用,类似于多态在开发中的作用。
多态:面向抽象编程,不要面向具体编程。降低程序的耦合度。提高程序的扩展力。
/* public class Master{
public void feed(Dog d){} //假设又要养其它的宠物,那么这个时候需要再加1个方法。(需要修改代码了) //这样扩展力太差了,违背了OCP原则(对扩展开放,对修改关闭。) } */
有了接口就有了可插拔。可插拔表示扩展力很强。不是焊接死的。
总结一句话:三个字“解耦合” 面向接口编程,可以降低程序的耦合度,提高程序的扩展力。符合OCP开发原则。 接口的使用离不开多态机制。(接口+多态才可以达到降低耦合度。)
接口可以解耦合,解开的是谁和谁的耦合!!! 任何一个接口都有调用者和实现者。 接口可以将调用者和实现者解耦合。 调用者面向接口调用。 实现者面向接口编写实现。
第七:抽象方法怎么定义? public abstract void doSome();
第八(*****五颗星):一个非抽象的类,继承抽象类,必须将抽象类中的抽象方法进行覆盖/重写/实现。 面试题(判断题):
java语言中凡是没有方法体的方法都是抽象方法。 不对,错误的。 Object类中就有很多方法都没有方法体,都是以“;”结尾的,但他们都不是抽象方法,例如: public native int hashCode(); 这个方法底层调用了C++写的动态链接库程序。 前面修饰符列表中没有:abstract。有一个native。表示调用JVM本地程序。
public protect
默认 private
本类 ⭕ ⭕ ⭕ ⭕
同包 ⭕ ⭕ ⭕ ❌
子类 ⭕ ⭕ ❌ ❌

javaEE复习资料

javaEE复习资料

简述JSF的事件模型并举例说明功能:JSF事件模型由3个部分组成:1.事件源:JSF页面上所有UI组件都可以作为事件源。

2.事件对象:当用户对UI组件执行动作时,JSF会为之创建对应的事件对象。

3.事件监听器:JSF的事件监听器比较灵活,既可直接使用受管Bean 的某个方法来处理用户事件,也可以使用专门的事件监听器对象。

Public class EventQs{ Array private Frame f = new Frame(“测试事件”);private Button ok = new Button(“确定”);private TextField tf =new TextField(30);public void init(){Ok.addActionListener(new OkListener());f.add(tf);f.add(ok,BorderLayour.SOUTH);f.pack();f.setVisible(true);}class OkListener implements ActionListener{Public void actionPerformed(ActionEvent e) {System.out.println(“用户单击了OK按钮”)tf.setText(“Hello World”);}}pubblic static void main(String [] args){new EventQs.init();}}JPA的常用的三个组件的简介:1.实体。

实体其实就是一个普通的POJO,只是为它增加了orm.xml映射文件和Annotation,通过使用这种orm.xml映射文件或Annotation即可建立实体和数据表之间的对应关系。

2.EntityManager。

使用EntityManager来对实体进行操作时,JPA规范可将这种操作转换为对底层数据库的操作。

javaee基础教程习题答案

javaee基础教程习题答案

JAVAEE基础教程课后部分编程题答案2-14 public class aa {public static void main(String[] args) {// TODO Auto-generated method stubdouble x=34.5;double y=68.4;double z=x+y;System.out.println("x+y="+x+"+"+y+"="+z);}}3-19(一)从大到小插入排序法public class Sort {public static void main(String[] args) {int[] A={30,1,-9,70,25};for(int i=1;i<A.length-1;i++){for(int j=i;j>0;j--){if(A[j]>A[j-1]){int temp;temp=A[j-1];A[j-1]=A[j];A[j]=temp;}}}System.out.println("利用插入排序方法的结果是:");for(int i=0;i<A.length ;i++){System.out.print(A[i]+",");}}}选择排序法public class S_sort {public static void main(String[] args) {int[] A={30,1,-9,70,25};int max,temp;for(int i=A.length-1;i>0;i--){max=0;for(int j=1;j<=i;j++){if(A[max]>A[j])max=j;}temp=A[max];A[max]=A[i];A[i]=temp;}System.out.println("利用选择排序方法的结果是:");for(int i=0;i<A.length ;i++){System.out.print(A[i]+",");}}}(二)从小到大import java.util.*;public class rr {public static void main(String[] args){int A[]={30,1,-9,70,25};Arrays.sort(A);for(int i=0;i<5;i++){System.out.print(A[i]+",");}}}3-11 public class pp {public static void main(String[] args) {int i,j,count=0;for(j=2;j<=1000;j++){for(i=2;i<=j/2;i++){if(j%i==0)break;}if(i>j/2){count++;System.out.print(j+"\t");if(count%5==0)System.out.println(""); }}}}3-12 import java.util.Random;public class rr {public static void main(String[] args){int count1=0,count2=0,count3=0,count4=0,count5=0,count6=0;int temp;Random r =new Random();for(int i=1;i<=100;i++){temp=r.nextInt()%6+1;switch(temp){case 1:count1++;break;case 2:count2++;break;case 3:count3++;break;case 4:count4++;break;case 5:count5++;break;case 6:count6++;break;}}System.out.println("count1="+count1);System.out.println("count2="+count2);System.out.println("count3="+count3);System.out.println("count4="+count4);System.out.println("count5="+count5);System.out.println("count6="+count6);}}3-13 public class rr {public static void main(String[] args){int sum=0,a=1;for(int i=1;i<16;i++){a=a*i;sum+=a;}System.out.println("1!+2!+3!+...+15!="+sum);}}3-16 public class r {public static void main(String[] args) {int[] prime=new int[30];int i,j,m=0,count=0;for(j=2;count<30;j++){for(i=2;i<=j/2;i++){if(j%i==0)break;}if(i>j/2){count++;prime[m]=j;System.out.print(prime[m]+",");}}}}3-18 import java.util.Scanner;import java.util.*;public class yy {/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stubint[] d=new int[100];int i=-1;do{System.out.println("输入整数(-2结束):");Scanner input=new Scanner(System.in);i++;d[i]=input.nextInt();}while(d[i]!=-2);int[] dd=new int[i];for(int j=0;j<i;j++){dd[j]=d[j];}Arrays.sort(dd);System.out.print("输入值按从小到大的顺序排序是 ");for(int a:dd)System.out.print(a+" ");}}6-12 import java.util.Calendar;public class CalendarExample {public static void main(String[] args) {Calendar cal = Calendar.getInstance();cal.add(Calendar.DATE, 10);System.out.println("十天后的日期和时间:");System.out.println(cal.get(Calendar.YEAR) + "年"+ (cal.get(Calendar.MONTH)+1) + "月"+ cal.get(Calendar.DATE) + "日"+ cal.get(Calendar.HOUR) + ":"+ cal.get(Calendar.MINUTE) + ":"+ cal.get(Calendar.SECOND));}}6-15 import java.util.HashMap;import java.util.Map;public class pp{public static void main(String args[]){Map<String,String> map=new HashMap<String,String>();map.put("张三","90分");map.put("李四", "83分");System.out.println("所查的学生有:"+map.keySet());System.out.println("张三的成绩为:"+map.get("张三"));System.out.println("李四的成绩为:"+map.get("李四"));System.out.println();map.put("李四","100分");System.out.println("修改后李四的成绩为:"+map.get("李四")); System.out.println();System.out.println("两人最终成绩为:");System.out.println("张三:"+map.get("张三"));System.out.println("李四:"+map.get("李四"));}}6-17public class e {public static void main(String[] args) {long x=987654;String str1=String.valueOf(x);//使用String类的valueOf()方法实现数值到字符串的转换int y=365;String str2=Integer.toString(y,16);//转换为十六进制System.out.println("987654转换成字符串为:"+str1+"\n");System.out.println("十进制365转换为十六进制为:"+str2);}}6-21 import java.io.IOException;import java.util.Scanner;import java.util.List;import java.util.ArrayList;import java.util.InputMismatchException;class Person{private String name;private int phone;public String getName(){return name;}public int getPhone(){return phone;}public Person(String name,int phone){=name;this.phone=phone;}public String toString(){return name+"的电话号码为:"+phone;}}public class pp {public static void main(String args[])throws IOException{ char m;do{List<Person> list=new ArrayList<Person>();Scanner input=new Scanner(System.in);System.out.println("请输入同学的姓名和联系方式:");try { String Pname=input.next();int Phone=input.nextInt();Person LX=new Person(Pname,Phone);list.add(LX);for(Person p:list){System.out.println(p); }}catch (InputMismatchException e1){System.out.println("警告:您输入的值不合理!");}catch (Exception e2){System.out.println("警告:其它异常!");}System.out.println("是否继续输入? Y/N");m = (char) System.in.read();} while (m == 'y' || m == 'Y');}}6-22 import java.util.HashMap;import java.util.Map;import java.util.Scanner;public class pp {public static void main(String[] args) {Map<String,String>map=new HashMap<String,String>();map.put("ample","足够的、宽敞的");map.put("brisk", "轻快的、兴隆的");map.put("deem","认为、视为");map.put("doom","注定、劫数");map.put("gossip","流言飞语");map.put("lame","蹩脚的");map.put("oath","誓言");map.put("reap","收割、收获");map.put("shabby","破旧的、不公正的");map.put("ecology","生态、生态学");while (true) {Scanner sc = new Scanner(System.in);System.out.println("请输入单词");String str = sc.next();System.out.println("你输入的单词的中文含义是:"+"\t"+map.get(str));}}}8-10 import java.io.BufferedReader;import java.io.IOException;import java.io.FileReader;import java.io.FileNotFoundException;public class rr {public String readfile() {String str1 = "";BufferedReader fr;try {fr = new BufferedReader(new FileReader("java.txt"));String m = fr.readLine();while (m != null) {str1 += m + "\n";m = fr.readLine();StringBuffer s1=new StringBuffer(str1);System.out.println(s1);}fr.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return str1;}public static void main(String[] args) {rr r= new rr();String str1 = r.readfile();StringBuffer str2=new StringBuffer(str1);str2.reverse();System.out.println(str2);}}8-14 import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Arrays;import java.util.Scanner;class s {public static void main(String[] args) {try {File f1=new File("file1.txt");File f2=new File("file2.txt");FileReader fr1=new FileReader(f1);FileReader fr2=new FileReader(f2);BufferedReader br1=new BufferedReader(fr1) ;BufferedReader br2=new BufferedReader(fr2) ;String len1=br1.readLine();String len2=br2.readLine();Scanner scan1=new Scanner(len1);Scanner scan2=new Scanner(len2);eDelimiter(",");eDelimiter(",");int[] I=new int[9];for (int j=0; j <=4; j++) {I[j] =scan1.nextInt();}for (int j=0; j <=3; j++) {I[j+5] = scan2.nextInt();}Arrays.sort(I);System.out.print(Arrays.toString(I));fr1.close();fr2.close();File f3=new File("file3.text");FileWriter fw=new FileWriter(f3);for (int a : I){fw.write(a+",");}fw.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}9-6法一 class tt{public static synchronized void ttt() {int i=10;while(true){System.out.print(i++);try{Thread.sleep(500);}catch (InterruptedException e) {e.printStackTrace();}if (i==16){System.out.println();break;}System.out.print(",");}}}public class t implements Runnable {public void run() {tt.ttt();}public static void main(String[] args) {Thread t1=new Thread(new t(),"xiancheng1"); Thread t2=new Thread(new t(),"xiancheng2"); t1.start();t2.start();}}法二 class Printnum {public void shownum() {int i = 10;while (true) {try {System.out.print(i);if (i == 15) {System.out.println();break;}System.out.print(",");Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}i++;}}}public class Test9_6 implements Runnable {private static Printnum myprint = new Printnum();public void run() {synchronized (myprint) {myprint.shownum();}}public static void main(String[] args) {Thread t1 = new Thread(new Test9_6(), "线程1");t1.start();Thread t2 = new Thread(new Test9_6(), "线程2");t2.start();}}法三 class Print{public static synchronized void print() {for(int i=10;i<16;i++){System.out.print(i+",");try {Thread.sleep(500);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public class t implements Runnable{public static void main(String[] args) {// TODO Auto-generated method stubThread t1=new Thread(new t());Thread t2=new Thread(new t());t1.start();t2.start();}public void run() {// TODO Auto-generated method stubPrint.print();System.out.println("\n");}}9-8(1)public class MyThread extends Thread{public static void main(String[] args) {Thread t1 = new Thread();Thread t2 = new MyThread();Thread t3 = new MyThread();t1.start();t2.start();t3.start();}public void run(){for(char i=97;i<123;i++){System.out.println(this.getName()+":"+i);}}}(2) //继承Thread类class myshow extends Thread {void show() {for (char i = 97; i < 123; i++) {System.out.print(this.getName() + ":" + i+"\t");//System.out.print(Thread.currentThread().getName()+ ":" + c+"\t");}}public void run() {show();}}public class myThread {public static void main(String[] args) {Thread t1 = new myshow();Thread t2 = new myshow();Thread t3 = new myshow();t1.setName("线程1");t2.setName("线程2");t3.setName("线程3");t1.start();t2.start();t3.start();}}(3) //实现Runnable接口class myshow implements Runnable {void show() {for (char i = 97; i < 123; i++) {System.out.print(Thread.currentThread().getName()+ ":" + c+"\t");}}public void run() {show();}}public class myThread {public static void main(String[] args) {Thread t1 = new myshow();Thread t2 = new myshow();Thread t3 = new myshow();Thread t1 = new Thread(new myshow(), "线程1");Thread t2 = new Thread(new myshow(), "线程2");Thread t3 = new Thread(new myshow(), "线程3");t1.start();t2.start();t3.start();}}。

Java-EE-复习参考资料全

Java-EE-复习参考资料全

Java EE 复习参考资料1一、填空题1. 发布到服务器上的组件除包含自身实现的代码文件外,还要包含一(XML)部署描述文件。

2. Java EE技术框架可分为三部分:组件技术、(服务技术)、通信技术。

3. Servlet 最大的用途是通过(动态响应)客户机请求来扩展服务器功能。

4. 表单数据的提交方法有两种,(Post)方法和Get方法。

5. (Filter)拦截请求和响应,以便查看、提取正在客户机和服务器之间交换数据。

6. (Listener)实现了Servlet的事件驱动。

7. JSP页面的脚本元素用来嵌入(java)代码。

8. JSP动作组件是一些(XML)语法格式的标记,被用来控制Web容器的行为。

9. JSP供提供九种内置对象,(request)对象代表的是来自客户端的请求。

10. JSP 标准标记库是一个实现(Web )应用程序中常用功能的定制标记库集。

11. java.sql.Statement对象代表一条发送到数据库执行的SQL语句。

有(三)种Statement 对象。

12. Servlets可以使用(MIME)类型来向浏览器传送非HTML 文件。

13. Enterprise Bean 是在(多)台机器上跨几个地址空间运行的组件。

14. JavaBean 是(一)台机器上同一个地址空间中运行的组件。

15. 在标记描述TLD文件中Required 定义为(true)代表为必须。

二、单项选择题1、表单数据的提交方法有两种, (Post)方法使得数据由标准的输入设备读入。

A.GetB. PostC.ReadD.Input2、在表单提交的数据中,如果变量的值有多个,这时应调用(getParameterValues())方法,A. getParameterValues()B. getParameter()C. getParameterNames()D. getAttribute()3、Servlet的事件驱动由(Listener)实现。

第1章 JavaEE基础

第1章 JavaEE基础


授权(Authorization)

资源:网页、Servlets、JSPs、EJBs等。
3、 Security

安全性控制

声明的方式

由容器控制 声明一些安全性角色,并把角色映射到实际的安全域中

Security-Role:逻辑的用户组,如经理角色、职员角色 Security-Domain:安全控制实际应用的领域,如操作系统域、实际的应用域(xx公 司) 规则1:“经理”角色可以执行“员工管理”Bean的“辞退员工”方法 规则2: “所有人(未经过身份认证)”可以访问商品信息页面
Java程序 一般具有图形用户界面。 可以直接访问JavaEE中间层的所有服务。

可以直接调用EJB提供的服务。 基于浏览器的客户端只能直接访问Web构件的服务。
2、 EJB
Enterprise Java Beans
Entity Beans
Session Beans
Message Driven Beans
Java Standard Edition
Java Card
Java Micro Edition
Java Platform HotSpot
Memory:
Classic VM
10MB< ----------------------------------------- >1MB
64bit
KVM
500KB<----------------->10KB

1、JNDI

JNDI屏蔽了不同目录服务之间的差异。JNDI service API是和具体的目录服务无关的。这使得 我们利用JNDI开发的应用可以不用修改代码而应 用到不同的目录服务上。

javaee知识点

javaee知识点

javaee知识点JavaEE(Java Enterprise Edition)是一套企业级应用开发的技术规范和平台,它涵盖了众多的知识点和技术,为构建大规模、高可靠、高性能的企业级应用提供了坚实的基础。

首先,我们来了解一下 JavaEE 的多层架构。

通常包括表现层、业务逻辑层和数据持久层。

表现层负责与用户进行交互,接收用户的输入并展示系统的输出。

这一层常常使用诸如 Servlet、JSP(JavaServer Pages)、JSF(JavaServer Faces)等技术来实现。

Servlet 是 JavaEE 中处理 HTTP 请求和响应的基本组件,通过它可以实现对请求的处理和响应的生成。

JSP 则是一种基于 HTML 的模板技术,允许在页面中嵌入 Java 代码,以动态生成页面内容。

JSF 提供了一套基于组件的用户界面开发框架,使得构建复杂的 Web 界面更加便捷。

业务逻辑层是整个应用的核心,负责处理业务规则和逻辑。

在这一层,常用的技术有 EJB(Enterprise JavaBeans),特别是会话 Bean 和实体 Bean。

会话 Bean 用于实现业务流程和逻辑,实体 Bean 则用于表示业务数据。

此外,Spring 框架在 JavaEE 开发中也被广泛应用,它提供了依赖注入、面向切面编程等强大的功能,使得业务逻辑的开发更加灵活和易于维护。

数据持久层的主要任务是与数据库进行交互,实现数据的存储和检索。

JDBC(Java Database Connectivity)是 Java 中连接数据库的基本API,但直接使用 JDBC 会导致大量的重复代码和复杂的数据库操作。

因此,ORM(ObjectRelational Mapping)框架应运而生,比如Hibernate 和 MyBatis。

Hibernate 是一个全自动的 ORM 框架,它能够将对象与数据库表进行自动映射,大大简化了数据操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通过在下面的result元素配置type属性实现: <action name="login" class="xiong.LoginAction"> <result name="error">/error.jsp</result> <result name="success" type=“dispatcher”>/welcome.jsp</result> </action>
实例:用Struts 2实现注册程序(掌握)
第6章 Struts 2输入校验
1.手工编写代码实现输入校验
Struts2验证机制
➢ Action组件要求实现Validateable接口,覆盖其 validate()方法,编写有关验证代码
➢ 还要实现ValidationAware接口,该接口提供了添 加错误消息的方法
}
第5章 Struts 2入门
ActionSupport类
ActionSupport类为Action接口提供了一些默认实现, 主要包括预定义常量、从资源文件中读取文本资源、 接收、验证错误信息和验证的默认实现,它同样位于 com.opensymphony.xwork2包。
下面是ActionSupport类所实现的接口:
Servlet是运行于服务器端的Java类,它在服务器端创建响应用户请 求的对象,用于动态处理请求以及构造响应信息。
Servlet的生命周期
(1) 初始化Servlet对象。Servlet对象第一次被请求加载时,服务器 初始化这个Servlet对象,即创建一个Servlet对象,对象调用init() 方法完成必要的初始化工作。 (2)诞生的Servlet对象再调用service()方法响应客户的请求。 (3)当服务器关闭时,调用destroy()方法,消毁Servlet对象。
第2章 JSP简介
request的重要方法 ➢ getParameter(String name):以字符串的形式返回客户端 传来的某一个请求参数的值,该参数由name指定。
response的重要方法 ➢ sendRedirect(String url):把响应发送到另一个指定的页面 (URL)进行处理。
④ Action的execute方法通常用来存储和(或)重新获得信息 (通过数据库)。
⑤ 结果被返回到浏览器。
可能是HTML、图片、PDF或 其他。
其实,Struts 2框架的应用 着重在控制上。简单的流程是: 页面→控制器→页面。最重要
的是控制器的取数据与处理后 传数据的问题。Struts 2的体系 结构还可以参考右图,更直观 地展现出其流程。
Java平台企业版。主要用于快速设计、开发、部署和管理企 业级的软件系统。
第2章 JSP简介
JSP指令标记
➢ 常用的有3条指令:page、include和taglib。指令 标记以“<%@”开始,以“%>”结束 ,如
<%@ page contentType="text/html;charset=gb2312"%>
JSP页面中使用bean <jsp:useBean id= "给bean起的名字" class= "创建bean的类"
scope= "bean有效范围"/>
第2章 JSP简介
设置bean的属性值
(1)设置bean的属性为一个表达式的值的格式如下: <jsp:setProperty name="bean 的 名 属 性 "
JSP中forward (转发)和redirect(重定向)的区别(掌握)
第2章 JSP简介
在JSP技术规范中为开发人员使用的对象定义了4个 使用范围,分别是:
page 只能在引用特定对象的JSP页面中访问这些 对象
request 可以在所有服务于当前请求的页面中访 问这些对象。其中包括转发到或者包含在原始JSP 页面中的页面,相应的请求被导入这些JSP页面。
➢ Struts.xml 配置Action
➢ Action
业务控制器,可以是只含有execute()方法的简单 Java类,也可以实现Action接口或者继承自 ActionSupport类
除了封装请求属性外,还可包含其他属性 execute()方法不直接返回JSP页面,而是返回一个字
符串,保证了Struts 2支持多种视图技术
第3章 用JSP连接数据库
JDBC与数据库的连接过程(掌握)
➢ 1.加载和注册JDBC驱动程序。调用Class类的 forName()方法加载数据库JDBC驱动程序。
➢ 2.获得数据库连接。调用驱动程序管理器( DriverManager对象)的getConnection()方法,返回 Connection对象。
Struts2程序,15分,共25分)
考试结构:JSP ×50% + Struts2×50% 总成绩=平时成绩×30%+考试成绩×70%
第1章 Java EE简介
根据不同的应用领域,将Java语言分为三大平台: ➢ 1. Java ME ➢ 2. Java SE ➢ 3. Java EE
Java EE(掌握) Java EE全称为Java Platform Enterprise Edition,是指
public class ActionSupport implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider,Serializable {
……
}
第5章 Struts 2入门
除了JSP外,Struts 2还支持多种视图技术
控制器根据视图提出的要求对数据做出处理,并将有关结 果存储到模型中,同时负责让模型和视图进行必要的交互 ,当模型中的数据变化时,让视图更新显示。
第4章 Servlet简介
JSP中的MVC模式 模型(Model):一个或多个JavaBean对象,用于存储数据,
JavaBean主要提供简单的setXXX()方法和getXXX()方法,在这 些方法中不涉及对数据的具体处理细节。 视图(View):一个或多个JSP页面,为模型提供数据显示, JSP页面主要使用 HTML标记和JavaBean标记来显示数据。 控制器(Controller):一个或多个Servlet对象,根据视图 提交的要求进行数据处理操作,并将有关的结果存储到 JavaBean中,然后Servlet使用重定向方式请求视图中的某个 JSP页面更新显示.
value= "<%=expression%>" />
(2)通过HTTP表单的参数的值来设置bean的相应属性的值: <jsp:setProperty name="bean的名字" property="*" />
( 3 ) 通 过 request 的 参 数 的 值 来 设 置 bean 的 相 应 属 性 的 值 , 要 求 request参数名字必须与bean属性的名字相同其格式如下:
第5章 Struts 2入门
Action接口
为了让用户开发的Action类更规范,Struts 2提供了 一个Action接口,它在com.opensymphony.xwork2 包中,定义了一些常量和一个execute()方法。标准 Action接口代码如下:
public interface Action { public static final String SUCCESS="success"; public static final String NONE="none"; public static final String ERROR="error"; public static final String INPUT="input"; public static final String LOGIN="login"; public String execute() throws Exception;
type表示结果类型,可以取以下值: dispatcher:JSP视图 freemarker: FreeMarker视图 redirect:直接跳转到其他URL
注意:type没有“jsp“的属性值
第6章 Struts 2输入校验
输入校验有两种实现方法:(掌握)
1. 手工编写代码实现。 2. 基于XML配置方式实现。
addFieldError()
➢ 一般继承ActionSupport类,其实现了上述接口。
➢ response:对客户的请求作出响应,向客户端发送数据。 ➢ session:表示客户端和服务器端之间的会话,记录有关连
接的信息。 ➢ application:代表应用程序上下文,它允许JSP页面与包
括在同一应用程序中的任何Web组件共享信息。 ➢ out:表示一个输出流,将数据发送到客户端浏览器。
实例:用Servlet求该数的因数或该数范围的质数(掌握)
第4章 Servlet简介
MVC设计模式(掌握) 通过3个不同部分构造一个软件或组件的理想办法:
模型(Model)——用于存储数据的对象。 视图(View)——为模型提供数据显示的对象。 控制器(Controller)——负责具体的业务逻辑操作,即
<jsp:setProperty name= "bean 的 名 字 " property=" 属 性 名 " param= "参数名" />
相关文档
最新文档