当前位置:文档之家› 韩顺平servlet笔记2完整版

韩顺平servlet笔记2完整版

韩顺平servlet笔记2完整版
韩顺平servlet笔记2完整版

第二部分

◆MVC模式修改用户管理系统

◆对当前网站结构的问题分析

1. 在LoginCl.java 文件和ManageUser.java文件中都去操作了数据库,它们的逻辑相似,有重复代码

2: 整个框架没有清晰的层次关系,显得非常乱.

3:代码一点也不优雅, 可读性差,可维护性差.

解决方法:

指导思想:

①业务逻辑代码和界面分离

②把常用的代码(对数据库的连接和操作) 封装到工具类

具体的方法

①每一张表对应一个domain类(表示数据) 还要对应一个Service 类

比如users 表对应Users 类(domain 类) UserService类(该类会封装对users表的各种操作) ,实际上这里体现出数据和操作分离的思想

上机练习:

包登录部分改成mvc模式,建议先保存一份项目,再改.

①完成分页的mvc模式改写

首先在UsersService 类中添加方法

//? 为什么要返回ArrayList ,而不是我们想到ResultSet

//1. ArrayList 中封装User对象,更加符合面向对象的编程方式OOP

//2.我们通过Resulst->User 对象->ArrayList 这样ArrayList 和Resultset没有关系,就可以及时关闭数据库资源.

public ArrayList getUsresByPage(int pageNow,int pageSize){

reutrn al;

}

练习: 把我们的用户管理系统出了cookie 和session 相关的功能不做,其它都做了.

一起完成用户管理系统的crud操作

1.一个请求对应一个控制器

优点: 逻辑清晰

缺点: 会造成控制器过多

可以这样考虑:一类事务请求,我们做一个控制器,即让该控制器可以处理多个请求,为了让一个控制器去区分,不同的请求,我们可以这样做:

在发出请求的同时,在带一个type=del 或者type=add 或者type=update..., 在控制器中我们接收type的值,从而判断用户希望做什么事情!

关于跳转到修改用户界面有两种思路:

(1)传递用户id号的同时,把用户的其它信息一并传递,这样可以减少数据库查询的次

数(缺点: 增加网络开销100字节*1000000*2 , 优点: 减少对数据库的一次操作)

(2)只传递用户id好,控制器接收到id后,再查询数据库,从而显示.

添加用户

(1)用户id号,我们做成子增长

在oracle中先建立一个sequece

create sequence users_seq

start with 11

increment by 1

minvalue 11

nomaxvalue

nocycle

nocache

课堂练习

添加查询用户功能:安装老师给出网站结构写.

◆会话技术cookie和session

◆什么是会话

基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话.

比如打电话.

◆为什么需要cookie技术(会话技术)

如何保存用户上次登录时间

如何显示用户浏览历史?

如何把登录的用户名和密码电脑,下次登录,不需要重新输入:

◆解决之道—cookie

◆cookie的原理图

cookie的小结

①cookie 是在服务端创建

②cookie 是保存在浏览器这端

③cookie 的生命周期可以通过

cookie.setMaxAge(2000);

?如果不设置setMaxAge则该cookie的生命周期当浏览器关闭时,就消亡.

④cookie 可以被多个浏览器共享(与session的区别)

⑤怎么理解

我们可以把cookie 想成一张表

?如果cookie重名会有什么问题?

如果重名就会替换存在的cookie值.

⑥一个web应用可以保存多个cookie,但保存在同一个cookie文本在客户端浏览器下

⑦cookie存放的时候是以明文方式存放,因此安全较低.,我们可以通过加密后保存.

◆->补讲md5加密算法:

请大家注意,以后我们的密码都要使用加密存放,在验证密码的时候,对用户输入密码,进行md5加密,然后该到数据库去验证。

md5算法

package com.hsp;

import java.security.*;

import java.security.spec.*;

class MD5_test {

public final static String MD5(String s) {

char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

'a', 'b', 'c', 'd', 'e', 'f' };

try {

byte[] strTemp = s.getBytes();

MessageDigest mdTemp = MessageDigest.getInstance("MD5");

mdTemp.update(strTemp);

byte[] md = mdTemp.digest();

int j = md.length;

char str[] = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

return new String(str);

} catch (Exception e) {

return null;

}

}

public static void main(String[] args) {

// MD5_Test aa = new MD5_Test();

System.out.print(MD5_test.MD5("韩顺平"));

}

}

◆保存上次登录时间

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

//先获取cookie

// 假设我们保存上次登录时间的cookie "lasttime" "2011-11-11 12:12:12";

// 这里我们要考虑一个情况: 用户第一次登录'您是第一次登录..'

Cookie []cookies=request.getCookies();

boolean b=false;//假设没有lasttime cookie

if(cookies!=null){ //保证有cookie,取遍历

for(Cookie cookie: cookies){

//取出名

String name=cookie.getName();

if("lasttime".equals(name)){

//显示

out.println("您上次登录时间是"+cookie.getValue());

//更新时间

//把当前日期保存cookie

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String nowTime=simpleDateFormat.format(new java.util.Date());

Cookie mycookie=new Cookie("lasttime",nowTime);

mycookie.setMaxAge(7*3600*24);//保存一周

response.addCookie(mycookie);

b=true;

break;

}

}

}

if(!b){

//没有找到

out.println("您是第一次登录..");

//把当前日期保存cookie

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String nowTime=simpleDateFormat.format(new java.util.Date());

Cookie cookie=new Cookie("lasttime",nowTime);

cookie.setMaxAge(7*3600*24);//保存一周

response.addCookie(cookie);

}

}

*上机练习

◆cookie自动保存用户密码

打开登录页面的时候,自动填写该用户的用户名和密码【这个要求学员课堂练习(最好单开一个项目)】

◆cookie保存浏览商品

请自己作为作业考虑实现

◆cookie的细节

①一个浏览器最多放入300cookie,一个web站点,最多20cookie,而且一个cookie大小限

制子4k

②cookie生命周期的再说明:

1.cookie默认生命周期是会话级别

2.通过setMaxAge()可以设置生命周期

setMaxAge(正数) , 即多少秒后该cookie失效

setMaxAge(0) ,删除该cookie

setMaxAge(负数), 相当于该cookie生命周期是会话级别.

案例:

//先得到该cookie

Cookie cookies[]=request.getCookies();

for(Cookie cookie: cookies){

if(cookie.getName().equals("id")){

System.out.println("id");

//删除

cookie.setMaxAge(0);

response.addCookie(cookie);//一定带上这句话,否则不能删除

}

}

特别说明: 如果该web应用只有一个cookie ,则删除该cookie后,在浏览器的临时文件夹下没有该cookie文件,如果该web应用有多个cookie,则删除一个cookie后,文件还在,只是该cookie没有

③cookie存放中文,怎么处理

存放:

String val=https://www.doczj.com/doc/a517421136.html,.URLEncoder.encode("顺平","utf-8");

Cookie cookie=new Cookie("name",val);

取出:

String val=https://www.doczj.com/doc/a517421136.html,.URLDecoder.decode(cookie.getValue(), "utf-8");

out.println("name ="+val);

◆session为什么有?

问题1: 如何实现在不同的页面,可以去查看信息(比如说购物车),同时还要实现不同的用户看到的信息是自己.

◆session工作原理图

session的生命周期是30分钟

◆session 小结:

①session是存在服务器的内存中

②一个用户浏览器,独享一个session域对象

③session中的属性的默认生命周期是30min ,你可以通过web.xml来修改④

◆3种session生命周期的设置

(1)一个地方是tomcat/conf/web.xml

30//表示30分钟的意思

对所有的web应用生效

(2)另外一个地方,就是在单个web应用的下去修改web.xml

30session精确到分钟,cookie精确到秒

如果发生冲突,则以自己的web应用优先级高

(3)session.setMaxInactiveinterval(60)发呆六十秒后session失效

对session和cookie生命周期小结:

⑤session中可以存放多个属性

⑥session 可以存放对象

⑦如果session.setAttribute(“name”,val) , 如果名字重复,则会替换该属性.

?如果同一个用户浏览器,向session设置一个属性的时候,如果名字相同了,会出现什么情况?

结论:会替换该对象值.

◆session的更深入理解:

为什么服务器能够为不同的浏览器提供不同session?

因为每个浏览器去访问web站点的时候,如果发出的http请求头没有带JSESSIONID头就会自动给你创建一个并返回

◆https://www.doczj.com/doc/a517421136.html,[开源之祖]

◆生成验证码案例

使用(原理是使用到java的绘图技术.)

这里最重要的就是生成验证码的servlet

package com.hsp;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Random;

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class CreateCode extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 7.禁止浏览器缓存随机图片

response.setDateHeader("Expires", -1);

response.setHeader("Cache-Control", "no-cache");

response.setHeader("Pragma", "no-cache");

// 6.通知客户机以图片方式打开发送过去的数据

response.setHeader("Content-Type", "image/jpeg");

// 1.在内存中创建一副图片

BufferedImage image = new BufferedImage(60, 30,

BufferedImage.TYPE_INT_RGB);

// 2.向图片上写数据

Graphics g = image.getGraphics();

// 设背景色

g.setColor(Color.BLACK);

g.fillRect(0, 0, 60, 30);

// 3.设置写入数据的颜色和字体

g.setColor(Color.RED);

g.setFont(new Font(null, Font.BOLD, 20));

// 4.向图片上写数据

String num = makeNum();

//这句话就是把随机生成的数值,保存到session

request.getSession().setAttribute("checkcode", num); 通过session就可以直接去到随即生成的验证码了

g.drawString(num, 0, 20);

// 5.把写好数据的图片输出给浏览器

ImageIO.write(image, "jpg", response.getOutputStream());

}

//该函数时随机生成7位数字

public String makeNum() {

Random r = new Random();

//9999999 可以生成7位

String num = r.nextInt(9999) + "";

StringBuffer sb = new StringBuffer();

//如果不够4位,前面补零

for (int i = 0; i < 4 - num.length(); i++) {

sb.append("0");

}

num = sb.toString() + num;

return num;

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException { doGet(request, response);

}

}

如何适用

Login.java

练习,请大家把验证码功能加入到用户管理系统.

过滤器(filter)

①开发过滤器的步骤:

1.创建继承HttpServlet同时实现Filter接口

2.默认filter不生效,需要配置.

MyFilter

com.zhy.filter.MyFilter

MyFilter

/* /*表示对该WEB的所有网页都过滤

3.在filter的方法中添加业务逻辑.

package com.hsp.filter;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import https://www.doczj.com/doc/a517421136.html,er;

public class MyFilter1 extends HttpServlet implements Filter { public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException { System.out.print("myfilter1...");

//获取session

HttpServletRequest httpServletRequest=

(HttpServletRequest)request;

//看看请求的资源是什么

String uri=httpServletRequest.getRequestURI();

if(uri.startsWith("/UsersManager3/imgs")||uri.startsWith("/Use rsManager3/Login")){

//直接放行.

chain.doFilter(request, response);

}else{

HttpSession session=httpServletRequest.getSession();

User user=(User) session.getAttribute("loginuser");

if(user!=null){

//该用户合法,放行

chain.doFilter(request, response);

}else{

request.setAttribute("err", "请好好登陆");

httpServletRequest.getRequestDispatcher("/LoginServlet")

.forward(request, response);

}

}

}

public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub

}

}

◆过滤器链

实现方式:

1.在创建一个过滤器 (继承HttpServlet同时还要实现Filter接口)

2.配置过滤器

配置过滤器的顺序就可以决定调用过滤器的顺序.

◆控制session的销毁时间

对session的销毁时间的讨论—借助一个案例:

面试题: (应用:关掉IE后,再开IE,上次购买的商品还在。->涉及到session销毁时间)

分析

●我们的session 生命周期如果是30min,该session不会随浏览器的关闭,而自动销

毁.而会到30min后,才会被服务器销毁.

●我们使用代码来实现该功能(session + cookie结合使用)

分析实现的思路:

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

HttpSession session = request.getSession();

session.setAttribute("name", "张辉胤");

out.println("创一个session并放入姓名属性");

Cookie cookie = new Cookie("JSESSIONID", session.getId());

cookie.setMaxAge(60*30);

response.addCookie(cookie);

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

HttpSession httpSession = request.getSession();

String name = (String) httpSession.getAttribute("name");

out.println("name = "+name);

}

ie禁用cookie后使用session的方法

如何实现ie禁用cookie后,我们还可以继续使用session.

简易购物车的实例:

思路:

当用户点击购买商品时,我们把该商品保存到session中,该session的结构是

name val

mybookds hashMap对象

而hashmap的结构是

key val

书号书对象.

Book.java类;

具体的实现,参看myCart项目

总节我们使用到的相关知识

(1)java基础的集合 ArrayList HashMap LinkedHashmap(有序的)

(2)session技术

(3)servlet

(4)单态

(5)如何选择不同的集合

list 集合都是有序

map 集合是无序

list和map集合都可以放入null

list可以放入相同的对象,而map也可以放相同对象 , 但是key不能重复.

?JSP笔记

1.为什么需要servletContext

需求1

需求2

◆解决之道—ServletContext

原理图:

◆快速入门

ServletContext

1.ServletContext 是在服务器

2.ServletContext 是被所有客户端共享

3.ServletContext 是当web应用启动的时候,自动创建

4.ServletContext 当web应用关闭/tomcat关闭/对web应用reload 会造成servletContext销

毁.

◆对ServletContext的用法小结

获取:

this.getServletContext(); this.getServletConfig().getServletContext();

添加属性:

servletcontext.setAttribute(string,object);

取出属性

servletcontext.getAttribute(“属性名”)

删除

setvletContext.removeAttribute(“属性名”);

◆ServletContext的应用

(1)获取WEB应用的初始化参数

name

scott

如何获取

String val= this.getServletContext().getInitParameter("name");

(2)使用ServletContext实现跳转

//目前我们跳转到下一个页面

//1 response.sendRedirect("/web应用名/资源名");

//2 request.getRequestDispatcher("/资源名").forward(request, response);

/*

* 区别1. getRequestDispatcher 一个跳转发生在web服务器sendRedirect发生在浏览器

* 2. 如果request.setAttribute("name","顺平") 希望下一个页面可以使用属性值,则使用 getRequestDispatcher

* 3. 如果session.setAttribute("name2","顺平3"), 希望下一个页面可以使用属性值,则两个方法均可使用,但是建议使用 getRequestDispatcher * 4. 如果我们希望跳转到本web应用外的一个url,应使用

sendRedirect

*/

//3.这种方法和2一样

this.getServletContext().getRequestDispatcher("/资源url").forward(request, response);

(3)读取文件,和获取文件全路径

//首先读取到文件

InputStream

inputStream=this.getServletContext().getResourceAsStream("dbinfo. properties");

//创建Properties

Properties pp=new Properties();

pp.load(inputStream);

out.println("name="+pp.getProperty("username"));

*如果文件放在src目录下;则使用类加载器

//如果文件放在src目录下,我们应该使用类加载器来读取

InputStream

is=Servlet5.class.getClassLoader().getResourceAsStream("dbinfo.pr operties")

//获取文件全路径

//如果读取到一个文件的全路径

String

path=this.getServletContext().getRealPath("/imgs/Sunset.jpg");

out.println("paht = "+path);

网站计数器的思考

分析:

代码:

我们建立一个文件recoder.txt文件,用于保存访问量,可以可以保证稳定增长.

实现方法

建立InitServlet ,用于初始化我的Servletcontext,和在关闭tomcat时保存访问量

package com.hsp;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class InitServlet extends HttpServlet {

/**

*Destruction of the servlet.

*/

public void destroy() {

System.out.println("init servlet destory()被调用..");

//把ServletContext值重新保存到文件.

//从record.txt文件中,读取浏览量

//1.首先得到该文件真实路径

String

filePath=this.getServletContext().getRealPath("record.text");

//2.打开文件

try {

FileWriter filewriter=new FileWriter(filePath);

//为了读取我们转为BufferedReader

BufferedWriter bufferedWriter=new

BufferedWriter(filewriter);

//从ServletContext读取访问量

String nums=(String)

this.getServletContext().getAttribute("nums");

//重新写会文件

bufferedWriter.write(nums);

//一定要关闭流

bufferedWriter.close();

filewriter.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

//关闭...

}

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doGet(request, response);

}

public void init() throws ServletException {

// Put your code here

//从record.txt文件中,读取浏览量

//1.首先得到该文件真实路径

String

filePath=this.getServletContext().getRealPath("record.text");

//2.打开文件

try {

韩顺平html笔记

HTML 一、HTML有关知识点 1.html介绍 html是一种标记语言,主要的用途是开发网页,使用html可以展现文字、图片、视频、声音,html是我们web开发(网站开发)。 2.html可以做什么 ?html可以编写静态网页 ?该静态网页可以包括文字、图像、动画、声音、表格、链接。从而构成一个个漂亮的网页 3.Html发展历史 4.Html的基本结构 5.是标记(也叫元素),标记的一般格式: <元素名[属性=“属性值”]>元素内容 如果没有内容可以用:<元素名[属性=“属性值”]/> 6.Html实体标记 7.Html常用标记

?html超链接 ●_blank 新的窗口 ●_self 本窗口 ●_parent 父窗口 ●_top整个浏览器窗口 ?html图像元素 ?html表格

--用于说明行 --用于说一小格
?无序列表 ?有序列表 ?框架 ?表单元素 文本框: 密码框: 单选框: 复选框:checked是指默认选中的 隐藏域: 图片按钮: ?文本域: ?下拉菜单:
password:
3、在scr目录下的com.ht.servlet编写AcountBean.java文件,代码如下:package com.ht.servlet; public class AccountBean { private String username = ""; private String password = ""; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { https://www.doczj.com/doc/a517421136.html,ername = username; } } 4、在scr目录下的com.ht.servlet编写servlet类CheckAccount.java文件,代码如下: package com.ht.servlet; import java.io.IOException;

韩顺平servlet笔记(个人总结版)

第一课 第二课tomcat 简单模拟

package com.my.first; import java.io.*; import https://www.doczj.com/doc/a517421136.html,.*; publicclass Mytomcat { /** * @param args */ publicstaticvoid main(String[] args) throws Exception { ServerSocketss = new ServerSocket(9999); Socket s = ss.accept(); System.out.println("在9999上等待。。。"); OutputStreamos =s.getOutputStream(); BufferedReaderbr = new BufferedReader(new FileReader("f:\\hello.html")); String str=""; while((str = br.readLine())!=null){ os.write(str.getBytes()); } br.close(); os.close(); s.close(); // ss.close(); } } 在浏览器中输入 http://localhost:9999 就会出现“hello world” 第三课 启动tomcat 各种问题总结

第四课

第五课 虚拟目录 如在f盘存放着各种web应用,但是空间不够了,这是我在d盘弄个文件当做该web应用的文件。但是要在server.xml中指定一下。 步骤:1、在那个磁盘下建立“f:\web2”,并建立相关的资源文件 2、在server.xml中配置 ps: path中的“/web2”是什么,在地址中就输入什么。 http://localhost:8080/web2/hello2.html context 能配置的属性 path、docBase、reloadable(有改变就重启tomcat)、unpackWAR

springMVC 个人学习笔记

第一、二课 所需jar包,本次使用版本是spring3.2.3 Ps:spring的文件用上面的基本够了,但是整个过程可能需要很多的commons 软件,如fileupload,io,lang包 SpringMVC demo案例 1、加入相关jar包 2、web.xml配置 springMVC org.springframework.web.servlet.DispatcherServlet 1 springMVC /这里一定要写成这样,如果写成 /* 输入地址总是No mapping found for HTTP request with URI Ps:springMVC 也有个默认的xml配置文件,类似struts2的struts.xml 该文件可以指定,即上面紫色注释掉部分。 默认路径是/WEB-INF/springMVC-servlet.xml

3、springMVC-servlet.xml 4、编写controller 该controller类似struts2的action,编写的controller 要实现org.springframework.web.servlet.mvc.Controller接口 第三课 springMVC的传值 通过modelandview 传值 1、

韩顺平html+css+js之JS笔记

韩顺平html+css+js 之JS笔记 Javascript的基本介绍 ?JS是用于WEB开发的脚本语言: ?脚本语言是什么: ?脚本语言不能独立使用,它和HTML/JSP/PHP/https://www.doczj.com/doc/a517421136.html,配合使用 ?脚本语言也有自己的变量,函数,控制语句(顺序,分支,循环) ?脚本语言实际上是解释性语言(即在执行时直接对源码进行执行) ?Java程序.java→.class→jvm , js→浏览器(js引擎来解释执行) ?Js在客户端(浏览器)执行 ?因为js是由浏览器来执行的,因此这里有个问题,不同类型的浏览器可能对js的支持不一样。 New Document 案例:1 需求:打开网页后,显示hello !

New Document 问题: ?js的位置可以随意放 ?js必须使用 ?在一个html文件中(JSP/PHP/https://www.doczj.com/doc/a517421136.html,)可以出现多对(script)片段,浏览器会按照先后顺序一次执行 案例2:Hello world程序改进 ?如何定义变量: ?如何运算: New Document ?Js的变量类型是怎样决定的 1) Js是弱数据类型语言,即:在定义变量侍候,统一使用var表示,甚至可以去点var这 个关键字 2) Js中的变量的数据是由js引擎决定的 Var name=”shunping”; //name是字符串 Var kk=2 //kk是数字 Name=234; //这事name自动变成数 ?Js的命名规范(函数/变量): 1) 使用大小写字母,数字,$可以命名 2) 不能以数字打头 3) 不能使用js保留字和关键字(即java里的关键字) 4) 区分大小写 5) 单行注释:// 6) 多行注释:/*…….*/ 韩顺平JS第三讲

韩顺平Spring笔记

①spring是什么? struts 是 web 框架 (jsp/action/actionfrom) hibernate 是 orm框架,处于持久层. spring 是容器框架,用于配置bean,并维护bean之间关系的框架 ?spring中有一个非常概念: bean (是java中的任何一种对象javabean/service/action/数据源./dao, ioc(控制反转inverse of control) di( dependency injection 依赖注入) ?画一个框架图 快速入门 开发一个spring项目. 1.引入spring的开发包(最小配置该包把常用的jar都包括, 还要写日志包 2.创建spring的一个核心文件 , [hibernate有核心 struts核心文件 ], 该文件一般 放在src目录下,该文件中引入 xsd文件: 可以从给出的案例中拷贝一份. 3.配置bean

韩顺平 4.在中,我们怎么使用 到spring 的applicationContext对象(容器对象) ApplicationContext ac=new ClassPathXmlApplicationContext(""); UserService us=(UserService) ("userService"); (); 5.细节讨论? 传统的方法和使用spring的方法 5.1使用spring ,没有new 对象,我们把创建对象的任务交给spring框架 5.2spring的运行原理图: 我们再看spring 对上面案例总结: spring实际上是一个容器框架,可以配置各种bean(action/service/domain/dao),并且可以维护bean与bean的关系,当我们需要使用某个bean的时候,我们可以getBean(id),使用即可. ioc是什么? 答:ioc(inverse of controll ) 控制反转: 所谓控制反转就是把创建对象(bean),和维护对象(bean)的关系的权利从程序中转移到spring的容器,而程序本身不再维护. DI是什么? 答: di(dependency injection) 依赖注入: 实际上di和ioc是同一个概念,spring设计者认为di更准确表示spring核心技术

韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)

java平台 1、J2SE java开发平台标准版 2、J2EE java开发平台企业版 java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。不同系统上要安装对应的虚拟机才可以运行java程序 开发步骤 1、编写源文件 (.java) 2、编译源文件为类文件(.class)可用J2SE或J2EE编译 3、在虚拟机上运行 注释 //单行注释 /* */多行注释 java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 java se课程介绍 java面向对象编程(基础) java图开界面开发 java数据库编程 java文件io流编程 java网络编程 java多线程编程 java ee基础1 java面向对象编程--数据库编程-->java se java 基础2 html--css--javascript-->div+css java ee中级部分 Servlet--Jsp-->mvc模式 java ee高级部分 Struts--Ejb--Hibernate--Spring--Ajax(ext,dw2)-->ssh框架 java之父gosling 1990 sun启动绿色计划 1 | 445

1992 创建oak语言-->java 1994 gosling参加硅谷大会演示java功能,震惊世界 1995 sun正式发布java第一个版本,目前最新是jdk7.0 java开发工具 记事本、(jcreator、jbuilder退出舞台了)、netbean、eclipse 如何选择开发工具 先选择记事本,对java有一定了解后再使用eclipse高级开发工具 为什么呢? 1、更深刻的理解java技术,培养代码感 2、有利于公司面试 java语言的特点 1、java语言是简单的 2、java语言是面向对象的 3、java语言是跨平台(操作系统)的[即一次编译,到处运行] 4、java是高性能的 java第一个程序hello.java 运行java程序要安装和配置jdk jdk是什么? 1、jdk全称java dvevlopment kit中文java开发工具包 2、jdk是sun公司开发的 3、jdk包括jre(java runtime envirnment)java运行环境、一堆java工具和java基础的类库(类共3600左右,常用类在150个左右) 4、可以在https://www.doczj.com/doc/a517421136.html,下载 **开发安装jdk,用户执行需要安装jre 配置JDK 添加环境变量即可 windows下配置jdk 在计算机属性--高级设置--环境变量--添加PATH将JDK所在路径指定即可。多个环境变量设置时需要用;号进行隔开 1、编写第一个hello.java //注释 (解释) 作者: //功能:在控制台显示"hello" //日期:2013.11.28 //public:表示这个类是公共的,一个java文件中只能有一个public类 //class:表示这是一个类 //hello:类名(公共类的类名必须和文件名一致) public class hello{ 2 | 445

Cookie笔记

1 课程回顾 Servlet编程 1)Servlet生命周期(重点) 构造方法:创建servlet对象。默认情况下,第一次访问servlet对象时。只调用1次。 init方法(有参):创建完servlet对象后调用。只调用1次。 注意:会调用无参的init方法。 service方法:servlet提供服务的方法。每次发出请求调用。 注意:request对象,response对象 destroy方法:tomcat服务器停止或web应用重新部署,servlet对象销毁,destroy方法被调用。 2)ServletConfig对象 获取servlet的初始化参数: getInitParameter("name "); getInitParameterNames(); 3)ServletContext对象 得到web应用路径: context.getContextPath(); request.getContextPath(); 等价于上面的代码 得到web应用参数: context.getInitParameter("name"); context.getInitParameterNames(); 域对象: context.setAttribute("name",Object): 保存数据 context.getAttribute("name") 得到数据 context.removeAttribue("name") 清除数据 转发 context.getRequestDispatcher("路径").forward(request,response); request.getRequestDispacher("路径").forward(request,response); 等价于上面的代码得到web应用中的资源文件 context.getRealPath("路径") context.getResourceAsStream("路径"); 今天的目标:会话管理 2. 会话管理入门 2.1 生活中会话 我:小张,你会跳小苹果码? 小张:会,怎么了? 我:公司年会上要表演节目,你教教我把 小张:没问题,一顿饭而已。 我:OK。 。。。。。。。。

韩顺平jsp学习笔记

韩顺平jsp学习笔记 jsp u j2ee核心13种技术: 程序员必须掌握的技术:java,servlet,jsp。 13种技术规范. u j2ee程序员修炼成精法门 u jsp 版本的用户管理系统:将servlet版本改为jsp版本,只使用jsp技术完成(modle1模式开发) 并且在后面可通过jsp版的用户管理系统的改写,非常自然过渡到mv设计模式,更进一步到mvc设计模式 开发工具:myeclipse u jsp概述: jsp是servlet技术的补充,访问jsp的过程:如果是第一次访问,jsp文件被服务器翻译成一个对应的java文件(servlet),然后,再被编译成.class文件并加载到内存中。如果是以后访问jsp,那就直接调用内存中的jsp实例,所以,第一次访问jsp慢,后面访问jsp的速度就会变快了。(hello.jsp来说明运行原理:tomcat下的work下有将jsp转换为servlet的代码) 1. 为什么出现:程序员在开发过程中,发现servlet做

界面非常不好,jsp对servlet的补充(对界面的补充,jsp界面好做) 2. jsp=html+java片段+jsp标签(语法)+javascript(css):综合 3. jsp功能的强大是因为可以与javabean结合使用(即:jsp作前台(界面),javabean作后台(逻辑层))。 4. Jsp是什么:1.jsp运行在服务器,2.jsp(java server page)3。Jsp基础是servlet(相当于对servlet的包装)4.jsp 是综合技术:一个公式:jsp=html+java代码+jsp标签 +javascript(css) 比较综合5.jsp无需配置,直接使用,如果你修改了jsp文件,不需要重新reload web应用6.jsp如何访问:http://ip:8088/web应用名.jsp路径u jsp的概述:元素 1. 指令元素 2. 脚本元素 3. 动作元素 u jsp与servlet的关系: 1. jsp与servlet是对应关系 2. jsp是以servlet为基础的 u 编写一个计算器的实例: 1. 表单提交处理的jsp页面为:<form action=”chuli.jsp”>

韩顺平.2011最新版.玩转oracle视频教程(笔记)

韩顺平—玩转ora cle视频教程笔记一:Oracle认证,与其它数据库比较,安装

Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager (3)一般讲,对数据库维护,使用system用户登录就可以拉 也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。 二: Oracle的基本使用--基本命令 sql*plus的常用命令 连接命令 1.conn[ect] 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper 2.disc[onnect] 说明: 该命令用来断开与当前数据库的连接 3.psssw[ord] 说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用 sys/system登录。 4.show user 说明: 显示当前用户名 5.exit 说明: 该命令会断开与数据库的连接,同时会退出sql*plus 文件操作命令 1.start和@ 说明: 运行sql脚本 案例: sql>@ d:\a.sql或是sql>start d:\a.sql 2.edit 说明: 该命令可以编辑指定的sql脚本 案例: sql>edit d:\a.sql,这样会把d:\a.sql这个文件打开 3.spool 说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 案例: sql>spool d:\b.sql 并输入 sql>spool off 交互式命令 1.& 说明:可以替代变量,而该变量在执行时,需要用户输入。 select * from emp where job='&job'; 2.edit 说明:该命令可以编辑指定的sql脚本 案例:SQL>edit d:\a.sql

完整图解 Tomcat 5.0.28 安装笔记

一、准备工作 在开始安装之前,先准备J2SDK和TOMCAT两个软件,如果已经安装了J2SDK,就只需TOMCAT即可。 笔者使用的软件如下: Windows 2000 Advance Server + SP4 J2SDK v1.4.2_04 - https://www.doczj.com/doc/a517421136.html,/j2se/1.4.2/download.html TOMCAT v5.0.28 - https://www.doczj.com/doc/a517421136.html,/dist/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.exe 二、安装J2SDK 安装很简单,只需双击下载的文件,笔者选择安装在d:\j2sdk1.4.2_04目录下。 设置环境变量,方法如下: 右击“我的电脑”==》属性==》高级==》环境变量==》新建... 变量名:JAVA_HOME 变量值:d:\j2sdk1.4.2_04 三、安装TOMCAT 运行jakarta-tomcat-5.0.28.exe 按照提示安装,偶这里选择了Service,就是作为Windows 服务来运行。

如果要改变安装路径,可以在这个步骤操作,偶这里选择安装在D:\Tomcat 5.0 在这里设置TOMCAT使用的端口以及WEB管理界面用户名和密码,请确保该端口未被其他程序占用

选择J2SDK的安装路径,安装程序会自动搜索,如果没有正确显示,则可以手工修改,偶这里改为d:\j2sdk1.4.2_04 接下来就开始拷贝文件了,成功安装后,程序会提示启动tomcat并查看readme文档。

JSP+Servlet+El+JSTL+Ajax学习笔记

JSP基础语法 一、 JSP基础语法 (5) 1. JSP注释 (5) (1) (5) (2) <% //注释 %> (5) (3) <%-- 注释 --%> (5) 2. JSP脚本代码 (5) (1) 定义全局变量、方法、类 (5) (2) 定义局部变量、或编写Java语句 (5) (3) 输出语句 (5) 3. page指令 (5) (1) page指令语法 (5) (2) page指令例子 (5) ● 设置MIME类型(contentType属性) (6) ● 设置编码(pageEncoding属性) (6) ● 错误页的设置(errorPage属性) (6) ● 导包操作(import属性) (6) 4. JSP动作指令 (6) (1) JSP的7个动作指令 (6) (2) 跳转指令(jsp:forward) (6) ● jsp:forward语法 (6) ● 例子 (6) (3) 参数传递指令(jsp:param) (6) ● jsp:param语法 (6) ● jsp:param指令的作用 (6) (4) 包含指令(jsp:include) (6) ● 静态包含(include不常用) (6) ● jsp:include语法 (6) ● 动态包含(较常用) (6) (5) jsp:plugin指令(不常用) (6) ● jsp:plugin语法 (6) ● jsp:plugin作用 (7) (6) jsp:useBean指令 (7) ● jsp:useBean语法 (7) ● jsp:useBean作用 (7) (7) jsp:setProperty指令 (7) ● jsp:setProperty语法 (7) ● jsp:setProperty作用 (7) (8) jsp:getProperty指令 (7) ● jsp:getProperty语法 (7) ● jsp:getProperty作用 (7) JSP内置对象 二、 JSP内置对象 (7) 1. JSP的9个内置对象 (7) 2. 四种属性范围 (8) (1) page范围 (8) (2) request范围 (8) (3) session范围 (8) (4) application范围 (8) (5) 四中属性范围的内置对象共有的方法 (8) 3. request对象 (8) (1) request对象的说明 (8) (2) request对象的主要方法 (8) ● 与request属性相关 (8) ● 与request参数相关 (8) ● 与request请求头相关 (8) ● 与request请求正文相关 (8) ● 其它 (8) (3) 表单提交方式 (8)

韩顺平玩转oracle视频教程笔记

韩顺平—玩转oracle视频教程笔记一:Oracle认证,与其它数据库比较,安装

Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager (3)一般讲,对数据库维护,使用system用户登录就可以拉 也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。 二:Oracle的基本使用--基本命令 sql*plus的常用命令 连接命令 1.conn[ect] 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper 2.disc[onnect] 说明: 该命令用来断开与当前数据库的连接 3.psssw[ord] 说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用 sys/system登录。 4.show user 说明: 显示当前用户名 5.exit 说明: 该命令会断开与数据库的连接,同时会退出sql*plus 文件操作命令 1.start和@ 说明: 运行sql脚本 案例: sql>@ d:\a.sql或是sql>start d:\a.sql 2.edit 说明: 该命令可以编辑指定的sql脚本 案例: sql>edit d:\a.sql,这样会把d:\a.sql这个文件打开 3.spool 说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 案例: sql>spool d:\b.sql 并输入 sql>spool off 交互式命令 1.& 说明:可以替代变量,而该变量在执行时,需要用户输入。 select * from emp where job='&job'; 2.edit 说明:该命令可以编辑指定的sql脚本 案例:SQL>edit d:\a.sql 3.spool

相关主题
文本预览
相关文档 最新文档