大学研究了三年的.Net,由于偶然的机会,拿到IBM的Java web实习offer,所以决定转行搞Java(综合了校招情况、发展前景和其他各种因素)。

下面是我在学习Java web的一些学习笔记(可能会比较乱,希望能做个备忘,如果能对您有帮助那就更好了)

Servlet相关--------------------------

1.Servlet的生命周期:

Servlet生命周期分为三个阶段:

  1,初始化阶段:调用init()方法

  2,响应客户请求阶段:调用service()方法

            Service()方法内部对请求的类型(get/post)进行了判断,自动调用doPost/doGet

  3,终止阶段:调用destroy()方法

2.Servlet的单例多线程:

单例:Servlet只在用户第一次请求时被实例化,并且是单例的,在服务器重启或关闭时才会被销毁。

多线程:当请求到达时,Servlet容器(Tomcat...)通过线程池中可用的线程给请求者并执行Service方法。

Java基础相关-----------------------

1.多线程

线程创建的两种方法:

第一种,实现Runnable接口

package test.Thread;

import org.junit.Test;

//This example shows the two method to create new thread.The java file "MyThread" shows the other method.
public class NewThread{
@Test
public void Fun(){
RunnableThread rt = new RunnableThread();
Thread t1 = new Thread(rt,"First");
Thread t2 = new Thread(rt,"Second"); t1.start();
t2.start();
}
} class RunnableThread implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName());
}
} }

第二种,继承Thread类

package test.Thread;

public class MyThread extends Thread{
//The constructor without parameter
public MyThread(){ } //The constructor with name parameter
public MyThread(String name){
super(name);
} public void run(){
for(int i=0;i<100;i++){
System.out.println(this.getName());
}
}
}

线程的同步

使用同步锁synchronized,参见卖票程序。同步的对象必须是同一个对象。

package test.Thread;

import org.junit.Test;

public class Thread_Synchronized {

    public static void main(String[] args){
SynchronizedRunnableThread srt = new SynchronizedRunnableThread(); Thread t1 = new Thread(srt,"window1");
Thread t2 = new Thread(srt,"window2");
Thread t3 = new Thread(srt,"window3"); t1.start();
t2.start();
t3.start();
}
} class SynchronizedRunnableThread implements Runnable{ private static int tickets=100; @Override
public void run() {
while(true){
//We can use the definition of class,because it's unique
/*
synchronized(this){
if(tickets>0){
System.out.println(Thread.currentThread().getName()+" is selling the "+(tickets--)+"th ticket");
}
}
*/
//or we can use the other method--synchronized method
sellTickets();
}
} private synchronized void sellTickets() {
if(tickets>0){
System.out.println(Thread.currentThread().getName()+" is selling the "+(tickets--)+"th ticket");
}
}
}

2.IO流

四大流:

InputStream、OutputStream  用于任意对象(二进制格式)

Writer、Reader          用于字符对象(字符格式)

使用示例: 

package test.Stream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter; public class FileInputStream_FileOutputStream {
public static void main(String[] args) throws Exception{
//The difference of "FileInputStream" and "FileReader" is that "FileInputStream" read the file with byte,
//but "FileReader" read with Unicode,in other words,"FileReader" can read Chinese word.
FileInputStream is = new FileInputStream("D:\\read.txt");
FileOutputStream os =new FileOutputStream("D:\\FileOutputStream.txt"); int ch = is.read();
while(ch!=-1){
os.write(ch);
System.out.print((char)ch);
ch = is.read();
}
os.flush(); os.close();
is.close();
}
}
package test.Stream;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter; public class FileReader_FileWriter {
public static void main(String[] args) throws Exception{
FileReader fr = new FileReader("D:\\read.txt");
FileWriter fw =new FileWriter("D:\\write.txt"); int ch = fr.read();
while(ch!=-1){
fw.write(ch);
ch = fr.read();
}
fw.flush(); fw.close();
fr.close(); }
}

3.集合类

jsp相关-----------------------------

1.jsp工作原理:

  当一个JSP文件第一次被请求的时候,Tomcat首先会把这个JSP文件转换成一个Java源文件。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息。如果转换成功,Tomcat用javac把该Java源文件编译成相应的.class文件并将该.class文件加载到内存中。(通过查看原文件,可知jsp最终也是转化被成Servlet,.java就是一个Servlet)

2.jsp九大内置对象?

  request          用户端请求,此请求会包含来自GET/POST请求的参数 
  response        网页传回用户端的回应 
  pageContext   网页的属性 
  session       与请求有关的会话信息 
  application           
  out             用来传送回应的输出 
  config                 存取servlet实例的初始化参数 
  page                  
  exception

3.JSTL标签

  1.表达式控制标签:out、set、remove、catch

  2.流程控制标签:if、choose、when、otherwise

  3.循环标签:forEach、forTokens

  4.URL操作标签:import、url、redirect

4.EL表达式

C#/.NET转Java学习笔记的更多相关文章

  1. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  2. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  3. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  4. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  5. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  6. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  7. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

  10. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

随机推荐

  1. 闭包----你所不知道的JavaScript系列(4)

    一.闭包是什么? · 闭包就是可以使得函数外部的对象能够获取函数内部的信息. · 闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. · 闭包就 ...

  2. 当给DataGrid的Itemssoure属性赋值引起TabControl_SelectionChanged事件

    在TabControl的TabItem下布局了DataGrid控件时,当给dg.ItemsSource 赋值时会触发父控件的TabControl_SelectionChanged事件; 类似问题原因可 ...

  3. Bash 笔记

    获取当前工作目录 basepath=$(cd `dirname $0`; pwd) 源文 : https://sexywp.com/bash-how-to-get-the-basepath-of-cu ...

  4. Linux下绑定网卡的操作记录

    公司采购的服务器安装了双网卡,并进行bond网卡绑定设置,网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6. 第一种模式:mod= ...

  5. M1事后分析汇报以及总结

    一.设想和目标 1. 们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是为了提供周边美食和菜谱查询功能,为“吃货”们提供便利.对典型用户和场景有清晰的描 ...

  6. 《Linux内核设计与实现》第四章学习笔记

    <Linux内核设计与实现>第四章学习笔记           ——进程调度 姓名:王玮怡  学号:20135116 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交 ...

  7. Can't find model 'en'

    在使用 nlp = spacy.load("en") 报错OSError: Can't find model 'en' 应该用 python -m spacy download e ...

  8. jdk自带的jvisualvm-监控远程linux

    简介 jdk有好多自带的工具比如jconsole.jvisualvm.jstatd等 Windows的路径:%JAVA_HOME/bin/目录下,配置好环境变量直接用cmd执行jvisualvm命令即 ...

  9. JavaScript使用jsonp实现跨域

    为什么要把ajax跨域写一下呢,因为ajax跨域并不是想跨就能跨的.因为为了安全,ajax是不允许跨域的. 举个例子,你有一个卖水果的网站,你的ajax请求另一个网站提供的图片,正常的时候,图片是一个 ...

  10. 被辞退时N+1的说法

    “N+”,指在这家公司工作了N年,赔偿N个月的上年平均工资,再加上1个月“代通知金”. N的上限时12: 上年平均工资的上限是工作所在城市平均工资的三倍. StudyFrom知乎 所以很明显能够算出来 ...