韩顺平servlet笔记(完整代码)

韩顺平servlet笔记(完整代码)
韩顺平servlet笔记(完整代码)

目录

一、前序工作 (2)

二、Classes文件写一个Hello.java (2)

写java文件 (2)

配置web.xml文件 (3)

上网验证 (4)

三、写登陆界面 (4)

写java文件 (5)

配置web.xml文件 (7)

上网验证 (7)

四、同一用户的不同页面共享数据 (8)

用sendRedirct()方法实现 (8)

用隐藏表单实现 (11)

Session (11)

五、Servlet链接数据库 (13)

建数据库的表 (13)

写java文件 (13)

放jar包 (16)

Sql注入漏洞 (16)

六、Servlet中显示图片 (18)

七、分页技术 (19)

八、cookie (24)

使用cookie保存用户名,密码,在一定时间不用重复登陆 (24)

删除cookie (29)

九、网站框架 (30)

十、ServletContext (38)

网站计数器 (39)

优化 (40)

用户ip地址 (42)

十一、界面美化 (42)

十二、tomcat配置 (59)

如何修改tomcat端口 (59)

如何设置虚拟目录 (60)

如何给tomcat的管理员设置密码 (61)

如何设置数据源和连接池 (62)

附录 (63)

Jcreator不能导入javax.servlet包问题 (63)

本文数据库数据库 (64)

本文Web.xml文件配置 (64)

一、前序工作

Tomcat安装好后

再webapps文件夹下新建mywebsite,里面包括WEB-INF,在里面是classes,lib和web.xml 文件。

Jcreator配置好jdk路径后servlet也需要导入,configure—>options—>jdkprofile,选中jdk vension,点edit—>add add achieve,选择tomcat里lib下的servlet-api,就ok了。详细看附录。

二、Classes文件写一个Hello.java

写java文件

有三种方法:

/*使用实现servlet接口的方式开发(不全)

package com.tsinghua; //一个自定义的包

import javax.servlet.*;

import java.io.*;

import java.io.IoException;

public class Hello implements Servlet{

//该函数用于初始化servlet(类似与构造函数)

//该函数只会被调用一次

public void init(ServletConfig parml) throws ServletException {

System.out.println("init it");

}

public ServletConfig getServletConfig(){

return null;

}

//这个函数用于处理业务逻辑

//程序员应该把业务逻辑代码写这里

//这个函数当用户每访问servlet时,都会被调用

//req:用于获得客户端(浏览器)信息 res:用于向客户端(浏览器)返回信息

public void service(ServletRequest req,ServletResponse res)throws ServletException{ System.out.println("service it");

//从res中得到printWriter

PrintWriter pw=res.getWriter();

pw.println("hello,world");

}

public void destroy(){

}

}

//方法二,继承GenericServlet(不全)

package com.tsinghua;

import javax.servlet.GenericServlet;

import javax.servlet.*;

import java.io.*;

public class HelloGenen extends GenericServlet{

//重写service方法

public void service(ServletRequest req,ServletResponse res){

//返回hello,world

try{

PrintWriter pw=res.getWriter();

pw.println("hello,world,generc");

}

catch (Exception ex){

ex.printStackTrace();

}

}

}

*/

//方法三,继承HttpServlet开发

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;

public class Hello extends HttpServlet{

//处理get请求

public void doGet(HttpServletRequest req,HttpServletResponse res){

//业务逻辑

try

{

PrintWriter pw = res.getWriter();

pw.println("hello http");

}

catch (Exception ex){

ex.printStackTrace();

}

}

public void doPost(HttpServletRequest req,HttpServletResponse res){

this.doGet(req,res);

}

}

配置web.xml文件

这个web.xml文件可以从旁边文件夹里拷来,主要改写的部分如下

hello

com.tsinghua.Hello

hello

/hello

上网验证

先打开apache-tomcat-8.5.8\bin下的startup.bat,然后登陆下面地址,看manager里有没有mywebsite,若runing是true则ok

再登陆下面地址看看是否成功

显示了hello,成功了

三、写登陆界面

写java 文件

登陆界面包含三个java 文件,用sendRedirect 进行跳转,其中还包括了html 语言,表单知识,详细看下面

Login.java

/**

* @(#)Login.java * *

* @author

* @version 1.00 2017/2/10 */

//登陆界面

package com.tsinghua;

import javax.servlet.http.*; import java.io.*;

public class Login extends HttpServlet{

public Login() { }

//处理get 请求

public void doGet(HttpServletRequest req,HttpServletResponse res){ //业务逻辑 try { //中文乱码解决方法 res.setContentType("text/html;charset=gbk");

PrintWriter pw = res.getWriter(); //返回登陆界面

pw.println(""); pw.println("");

pw.println("

登陆界面

");

pw.println("

");

pw.println("用户名:
"); pw.println("密码:
"); pw.println("
"); pw.println("

"); pw.println(""); pw.println(""); }

catch (Exception ex){ ex.printStackTrace(); } }

public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res); } }

LoginCl.java

/**

* @(#)Login.java

*

*

* @author

* @version 1.00 2017/2/10

*/

//验证(登陆处理)

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;

public class LoginCl extends HttpServlet{

public LoginCl() {

}

//处理get请求

public void doGet(HttpServletRequest req,HttpServletResponse res){ //业务逻辑

try

{

//接受用户名和密码

String u=req.getParameter("usrname");

String p=req.getParameter("passwd");

//验证

if(u.equals("sp")&&p.equals("123")){

//合法

//跳转(welcome)

res.sendRedirect("welcome");

}else{

//不合法

//跳转(回原界面)

res.sendRedirect("login");//写url

}

}

catch (Exception ex){

ex.printStackTrace();

}

}

public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res);

}

}

Welcome.java

/**

* @(#)Welcome.java

*

*

* @author

* @version 1.00 2017/2/10

*/

//欢迎界面

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;

public class Welcome extends HttpServlet{

public Welcome() {

}

//处理get请求

public void doGet(HttpServletRequest req,HttpServletResponse res){ //业务逻辑

try

{

//输出weclcome

PrintWriter pw=res.getWriter();

pw.println("welcome");

}

catch (Exception ex){

ex.printStackTrace();

}

}

public void doPost(HttpServletRequest req,HttpServletResponse res){

this.doGet(req,res);

}

}

配置web.xml文件

再之前的web.xml文件里增加如下

login

com.tsinghua.Login

login

/login

logincl

com.tsinghua.LoginCl

logincl

/logincl

welcome

com.tsinghua.Welcome

welcome

/welcome

上网验证

登陆下面地址,看manager里有没有mywebsite,若runing是true则ok

四、同一用户的不同页面共享数据用sendRedirct()方法实现

实现在welcome界面显示登录用户的姓名

以上三个java文件中LoginCl和Welcome文件进行修改LoginCl.java

Welcome

实现在welcome界面显示登录用户的姓名和密码

以上三个java文件中LoginCl和Welcome文件进行修改LoginCl

Welcome

结果图:

隐藏数据:

用隐藏表单实现

Session

Session:浏览器访问服务器时,服务器内存为浏览器分配的空间。名字String值Object

用session防止用户非法登陆到某个页面,这里防止直接登陆欢迎界面

以上三个java文件中LoginCl和Welcome文件进行修改

LoginCl

Welcome

网页:

输入welcome重新跳回登入界面

正确输入后:

五、Servlet链接数据库建数据库的表

写java文件

Login

/**

* @(#)Login.java

*

*

* @author

* @version 1.00 2017/2/10

*/

//登陆界面

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;

public class Login extends HttpServlet{

public Login() {

}

//处理get请求

public void doGet(HttpServletRequest req,HttpServletResponse res){

//业务逻辑

try

{

//中文乱码解决方法

res.setContentType("text/html;charset=gbk");

PrintWriter pw = res.getWriter();

//返回登陆界面

pw.println("");

pw.println("");

pw.println("

登陆界面

");

pw.println("

");

pw.println("用户名:
");

pw.println("密码:
");

pw.println("
");

pw.println("

");

pw.println("");

pw.println("");

}

catch (Exception ex){

ex.printStackTrace();

}

}

public void doPost(HttpServletRequest req,HttpServletResponse res){

this.doGet(req,res);

}

}

LoginCl

/**

* @(#)Login.java

*

*

* @author

* @version 1.00 2017/2/10

*/

//验证(登陆处理)

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;

import java.sql.*;

public class LoginCl extends HttpServlet{

public LoginCl() {

}

//处理get请求

public void doGet(HttpServletRequest req,HttpServletResponse res){

//业务逻辑

Connection ct=null;

Statement sm=null;

ResultSet rs=null;

try

{

//接受用户名和密码

String u=req.getParameter("usrname");

String p=req.getParameter("password");

//链接数据库,加载驱动

Class.forName("com.mysql.jdbc.Driver");

//得到链接

ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/xcdb?useUnicode=true&charac terEncoding=gbk","root","gu123");

//创建Statement

sm=ct.createStatement();

rs=sm.executeQuery("select * from user where username='"+u+"' and password='"+p+"'");

//验证

if(rs.next()){

//合法

//将验证成功的信息,写入session

//1表示得到session

HttpSession hs=req.getSession(true);

//修改session 的存在时间,设为20秒

hs.setMaxInactiveInterval(20);

//把信息放session

hs.setAttribute("pass","ok");

//跳转(welcome)

res.sendRedirect("welcome?uname="+u+"&upassword="+p);

}else{

//不合法

//跳转(回原界面)

res.sendRedirect("login");//写url

}

}

catch (Exception ex){

ex.printStackTrace();

}finally{

try{

if(rs!=null){

rs.close();

}

if(sm!=null){

sm.close();

}

if(ct!=null){

ct.close();

}

}

catch(Exception ex){

ex.printStackTrace();

}

}

}

public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res);

}

}

Welcome

/**

* @(#)Welcome.java

*

*

* @author

* @version 1.00 2017/2/10

*/

//欢迎界面

package com.tsinghua;

import javax.servlet.http.*;

import java.io.*;

public class Welcome extends HttpServlet{

public Welcome() {

}

//处理get请求

public void doGet(HttpServletRequest req,HttpServletResponse res){

JavaEE课堂笔记f

1.Struts2在jsp页面中使用标签实现对集合的迭代,其中var属性表示要迭代的集合对象。标签实现下拉列表的功能,其中listKey属性表示其生成的HTML代码option 标签的value,listValue属性表示用作字面显示的值。标签会定义一个新的Bean,而scope属性指定将这个Bean放到相应的作用域。 2.MVC设计模式包括Model(模型)、View(视图)和Controller(控制器)三个层。Model 层一般是指Java Bean,View层一般是用jsp页面实现,Controller是控制跳转的,一般用Servlet 或相似功能的组件实现。而Struts2框架的核心控制器是StrutsPrepareAndExecuteFilter过滤器。 3.Hibernate配置文件中包括了数据库连接信息、数据库方言、其他属性等信息,不包括数据库表和实体类的ORM信息。在众多属性中,show_sql属性可以设置是否在控制台显示最终生成的SQL语句。 4.Struts2全局国际化,在创建资源文件后需要在struts.xml配置文件中添加对这些资源文件基本名的引用。 5.Spring的面向方面编程可以让我们将程序中涉及的分散的公用问题集中解决。 6.Http协议是一种无状态的协议,它不能记录用户的状态。我们可以通过get和post方法发送数据,其中get方法对请求参数有长度的限制,而post方法没有。 7.j sp中的EL可以访问JavaBean中存储的数据,EL表达式包括requestScope、sessionScope、applicationScope、param、pageContext等隐式对象。在Struts2中,EL表达式可以直接访问Action Bean中属性的值。 8.HQL和SQL语法相似,但HQL是面向对象的,而SQL是面向关系型数据库的。HQL的关键字不区别大小写,而语句中的实体类名、对象名、属性名等都是区别大小写的,这一点和Java语言类似。 9.Servlet在加载后的生命周期分为实例化、初始化、服务和销毁四个过程。 10.JSP的标准动作能实现页面转发的功能。 11.Servlet中的PrintWriter对象可以输出信息,该类型的对象可以通过response.getWriter()方法取得。 12.DWR一个能帮助我们简化Ajax开发的开源框架,在使用时,需要在dwr.xml配置文件中为JavaScript脚本暴露相应的Java类。 13.在struts.xml配置文件中标签用于配置要转向的下一个目标页面。 14.Hibernate将JDBC作了轻量级封装,使得Java程序员可以随心所欲的使用面向对象的编程思想来操纵数据库,但其本质上还是使用JDBC去和数据库进行交互。 15.SSH是JavaEE开发的经典搭配,Spring框架可以对其他框架进行整合,持久化层更可以有多种选择,除了Hibernate外,像MyBatis这样的开源框架也很受欢迎。 16在软件设计上Struts2没有跟Servlet API或struts有着紧密的耦合,因此在Struts2中可以不必使用Servlet API所提供的类和接口,但如果要使用,也可以通过多种方式实现(ServletActionContext类或实现相应接口)。同时Struts2的Action类也不用必须继承或实现struts框架提供的任何类或接口。 17Servlet API中,HttpServletResponse接口的sendRedirect()方法可以将浏览器重定向到另一个URL。而HttpServletRequest接口的getSession()方法可以取得本次会话的HttpSession类型的对象,HttpServletRequest接口的getParameter()方法可以获取客户端请求参数的数据。18依赖注入(DI)是一种开发模式,可以解除或减轻各组件之间相互依赖,相互制约的关系。

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

第一课 第二课tomcat 简单模拟

package com.my.first; import java.io.*; import https://www.360docs.net/doc/ad4751761.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

韩顺平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.360docs.net/doc/ad4751761.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

韩顺平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”>

完整图解 Tomcat 5.0.28 安装笔记

一、准备工作 在开始安装之前,先准备J2SDK和TOMCAT两个软件,如果已经安装了J2SDK,就只需TOMCAT即可。 笔者使用的软件如下: Windows 2000 Advance Server + SP4 J2SDK v1.4.2_04 - https://www.360docs.net/doc/ad4751761.html,/j2se/1.4.2/download.html TOMCAT v5.0.28 - https://www.360docs.net/doc/ad4751761.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文档。

1.php学习笔记

◆Web开放介绍: 1.在英语中web即表示网页的意思,它用于表示Internet主机 上供外界访问的资源,即提供浏览器访问的资源。 2.Internet上供外界访问的web资源分为: ①.静态web资源(如html页面):指web页面中供人们浏览 的数据始终是不变。 ②.动态web资源:指web页面中供人们浏览的数据是由程序 产生的,不同时间点访问web页面看到的内容各不相同。 静态web资源开发技术 ★html 3.常用动态web资源开发技术: PHP、JSP/Servlet、ASP、https://www.360docs.net/doc/ad4751761.html,等 ◆php的基本概念: 1.php(php hypertext preprocessor) 超文本预处理语言 2.php由zend公司进行维护 3.php最先前用于做个人主页,现在发展到用于做网站开发 ◆php的优势: 1.跨平台性良好,多种数据库支持 2.效率比较高,具有良好的安全性 3.免费使用(成本低) 4.开放的源代码,所有的php源代码都可以得到 5.面向对象 不足: 1.安装比较复杂 2.灵活;php是解释运行机制的语言,所有很多问题在运行的阶 段才会发现

php的基本概念 快速入门案例: test.php ①.php是personla homepage的缩写 ②.目前是有zend公司负责维护和商业化 ③.php是嵌入到html中的代码 ④.php脚本是运行在服务器端的

B/S和C/S的区别 b/s的优势: ①.开发成本低 ②.管理维护简单 ③.产品升级便利 ④.对用户的培训费用低 ⑤.用户使用方便,出现故障的概率小 b/s的不足: ①.安全性不足 ②.客户端不能随心变化,受浏览器的限制 WEB服务器: 1. IIS 2. Lighttpd 3. apache

韩顺平struts笔记

! Struts视频笔记: Struts是一个开源的web框架,框架提高了程序的规范的同时也约束了程序员的自由 为什么会有struts: 因为我们队mvc理解的不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展,所以我们有必要用一个统一的规范来开发项目(struts) Struts 的好处: 程序更加规范化,开发效率提高了,可读性增加了,程序的可维护性增加了 ^ 运行原理: 一个请求从浏览器发送给web服务器,,web服务器首先解析主机然后解析web应用的名称 在解析出资源名转发给总司令ActionServlet(该类由struts框架提供给我们的无需编写,只需配置)ActionServlet有一个文件,该文件配置了表单actionForm(军火库),还配置了action,以及他们之间的对应关系,当ActionServlet拿到命令后它会查询文件去填充数据,把用户的数据填充到表单里边,下个动作就是去调用指定的action(小队长),action去从表单中读取数据,调用某个model(士兵,如service)完成任务,完成任务把结果返回给ActionServlet总司令(返回一个执行的结果),-->总司令又去查询文件,决定跳转到哪个jsp页面,返回一个执行结果(形成静态html文件)直接返回给web服务器服务器再把静态页面以h ttp响应给浏览器 ,登录小项目过程步骤: 新建web工程导入struts包编写编写actionForm和action 配置编写和配置测试 中的中的scope指的是actionform的生命周期范围 struts中的scope默认是session @ 配置过滤器 public class MyFilter extends HttpServlet implements Filter { @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { ("gb2312"); ("gb2312"); ~ (arg0, arg1); } 配置 MyFilter MyFilter/* 上面这次比较浪费资源每次都要去实例化但是下面这种过滤器不太彻底,往数据库里插入数据时还是会经常出现乱码

韩顺平Spring笔记说课材料

◆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的开发包(最小配置spring.jar 该包把常用的jar都包括, 还要写日志包 common-logging.jar 2.创建spring的一个核心文件applicationContext.xml, [hibernate有核心hibernate.cfg.xml struts核心文件struts-config.xml], 该文件一般放在src目录下,该文件中引入xsd文件:可以从给出的案例中拷贝一份. 3.配置bean

韩顺平 4.在Test.java中,我们怎么使用 //我们现在使用spring来完成上面的任务 //1.得到spring 的applicationContext对象(容器对象) ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml"); UserService us=(UserService) ac.getBean("userService"); us.sayHello(); 5.细节讨论? 传统的方法和使用spring的方法 5.1使用spring ,没有new 对象,我们把创建对象的任务交给spring框架 5.2spring的运行原理图: 5.3我们再看spring

韩顺平servlet与jsp 笔记与心得

?韩顺平 servlet与jsp 笔记与心得 ? ? ? ?Java EE概述: Java EE是一个开放的平台,它包括的技术很多,主要包括十三种核心技术(java EE就是十三种技术的总称)。建立一个整全的概念。 J2ee的十三种技术(规范) 1.java数据库连接(JDBC)。——JDBC定义了4种不同的驱动: 1.JDBC-ODBC桥, 2.JDBC-native驱动桥3,JDBC-network桥4.纯java驱 动。 2.Java命名和目录接口(JNDI)(它是为了对高级网络应用开发中的使用 的目录基础结构的访问。)。 3.企业Java Beans(Enterprise Java Beans,EJB)(它提供了一个架构来 开发和配置到客户端的分布式商业逻辑,因此可以明显减少开发扩展 性、高度复杂企业应用的难度。)。 4.JavaServer Pages(JSPs)。 5.Java servlets(servlets提供的功能大部分与JSP相同,JSP中大部 分是HTML代码,其中只有少量的Java代码,而servlets则相反,它 完全使用Java编写,并且产生HTML代码。)。 6.Java IDL/CORBA(用得不多)。 7.Java 事务体系(JTA)/Java事务服务(JTS)(用得不多)。 8.JavaMail和JavaBenas激活架构(JavaBeans Activation Framework,JAF)。(JavaMail是一个用来访问邮件服务的API)。 9.Java信使服务(Java Messaging Service,JMS)(JMS是一个用来和面 向信息的中层通信的API)。 10.扩展标记语言(Extensible Markup Language,XML)。 11.12. 13当前流行的及格框架struts+hibernate+spring(ssh). Java ee的开发环境(eclipse) Eclipse是一个开源的、可扩展的集成开发环境,已经成为目前最流行的j2ee 开发工具。 Eclipse安装后就可以开发java se的项目了,但不能开发java ee项目, 需要安装web开发插件(lomboz或是myeclipe) Eclipse的官网:https://www.360docs.net/doc/ad4751761.html, myeclipse的官网:https://www.360docs.net/doc/ad4751761.html,/ 在java ee的开发中有几个重要的开发模式: 1.Model1模式 2.model2模式(model2x模式(用得少)) 3.mvc模式 一、Model1模式 Model1的基础是jsp文件,它由一些相互独立的jsp文件,和其它一些java class组成(不是必须的)。这些jsp从HTTPRequest中获得所需要的数据, 处理业务逻辑,然后将结果通过Response返回前端浏览器。

韩顺平servlet笔记(完整代码)

目录 一、前序工作 (2) 二、Classes文件写一个Hello.java (2) 写java文件 (2) 配置web.xml文件 (3) 上网验证 (4) 三、写登陆界面 (4) 写java文件 (5) 配置web.xml文件 (7) 上网验证 (7) 四、同一用户的不同页面共享数据 (8) 用sendRedirct()方法实现 (8) 用隐藏表单实现 (11) Session (11) 五、Servlet链接数据库 (13) 建数据库的表 (13) 写java文件 (13) 放jar包 (16) Sql注入漏洞 (16) 六、Servlet中显示图片 (18) 七、分页技术 (19) 八、cookie (24) 使用cookie保存用户名,密码,在一定时间不用重复登陆 (24) 删除cookie (29) 九、网站框架 (30) 十、ServletContext (38) 网站计数器 (39) 优化 (40) 用户ip地址 (42) 十一、界面美化 (42) 十二、tomcat配置 (59) 如何修改tomcat端口 (59) 如何设置虚拟目录 (60) 如何给tomcat的管理员设置密码 (61) 如何设置数据源和连接池 (62) 附录 (63) Jcreator不能导入javax.servlet包问题 (63) 本文数据库数据库 (64) 本文Web.xml文件配置 (64)

一、前序工作 Tomcat安装好后 再webapps文件夹下新建mywebsite,里面包括WEB-INF,在里面是classes,lib和web.xml 文件。 Jcreator配置好jdk路径后servlet也需要导入,configure—>options—>jdkprofile,选中jdk vension,点edit—>add add achieve,选择tomcat里lib下的servlet-api,就ok了。详细看附录。 二、Classes文件写一个Hello.java 写java文件 有三种方法: /*使用实现servlet接口的方式开发(不全) package com.tsinghua; //一个自定义的包 import javax.servlet.*; import java.io.*; import java.io.IoException; public class Hello implements Servlet{ //该函数用于初始化servlet(类似与构造函数) //该函数只会被调用一次 public void init(ServletConfig parml) throws ServletException { System.out.println("init it"); } public ServletConfig getServletConfig(){ return null; } //这个函数用于处理业务逻辑 //程序员应该把业务逻辑代码写这里 //这个函数当用户每访问servlet时,都会被调用

Servlet学习笔记(六)-----Servlet之间的通信

Servlet学习笔记(六)-----Servlet之间的通信 Servlet学习笔记(六)-----Servlet之间的通信 这是4个Servlet之间的通信 2. 代码如下: 1)首先是test.htm文件,它作为客户端访问的页面 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <META content="Microsoft FrontPage 4.0" name=GENERATOR></HEAD> <BODY> <CENTER> <H1>Earnest Bank </H1></CENTER> <FORM action="http://127.0.0.1:8000/servlet/firstservlet" method=post>enter your account Number here <INPUT name=accnum size="21"> <BR><BR><BR>enter your pin Number here&nbsp;&nbsp;&nbsp;&nbsp; <INPUT name=pinnum size="21"> <BR>

springBoot笔记

1.Spring Boot 入门 Spring Boot是Spring社区较新的一个项目。该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让Java开发也能够实现Ruby on Rails那样的生产效率。为Spring生态系统提供了一种固定的、约定优于配置风格的框架。 Spring Boot具有如下特性: ●为基于Spring的开发提供更快的入门体验 ●开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需 求。 ●提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、 外部配置等。 ●Spring Boot并不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。 1.1 简单例子 首先创建一个一般的Maven项目,有一个pom.xml和基本的src/main/java结构。 1.1.1 pom.xml 文件

1.1.2 对pom的说明 首先是增加了,增加父pom比较简单,而且spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写版本号。 使用父pom虽然简单,但是有些情况我们已经有父pom,不能直接增加时,

1.1.3关于java.version属性 上面pom.xml虽然没有出现这个属性,这里要特别提醒。 Spring默认使用jdk1.6,如果你想使用jdk1.8,你需要在pom.xml的属性里面添加java.version,如下: 1.8 1.1.4 添加spring-boot-starter-web依赖 Spring通过添加spring-boot-starter-*这样的依赖就能支持具体的某个功能。 我们这个示例最终是要实现web功能,所以添加的是这个依赖。 更完整的功能列表可以查看:Using-boot-starter-poms 1.1.4添加spring-boot-maven-plugin插件 该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。 在项目根目录下执行mvn package将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便。该命令执行后还会保留一个XXX.jar.original的jar包,包含了项目中单独的部分。 生成这个可执行的jar包后,在命令行执行java -jar xxxx.jar即可启动项目。 另外一个命令就是mvnspring-boot:run,可以直接使用tomcat(默认)启动项目。 在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。1.1.6 spring-loaded热部署 Spring-Loaded项目提供了强大的热部署功能,添加/删除/修改方法/字段/接口/枚举等代码的时候都可以热部署,速度很快,很方便。 想在Spring Boot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添 添加以后,通过mvnspring-boot:run启动就支持热部署了。 注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。

韩顺平 j2ee视频实战教程jsp第1讲 课件 笔记

java ee ; j2ee视频教程- jsp第1讲 作者: 韩顺平 (一)jsp第1讲 1 java EE核心十三种技术介绍 2 java EE程序员修炼成精的法门(卖油翁的故事) 3 jsp版本的用户管理系统演示 4 jsp的概述(基本语法) 5 jsp的运行原理(还是hello.jsp) 6 jsp版的计算器 6.1 jsp中如何使用js(javascript)和css技术.. (二)java EE核心十三种技术介绍 Java ee是一个开发的平台,它包括的技术很多,主要包括十三种技术. 在开发时选择地进行使用,并不是要把所有的技术就去找工作。只会几种技术就可以从事javaee的开发,正好比如说中国的十八般武艺,最好是什么都会~ 基础是java servlet jsp !!! 基础要像大象一样扎实!不要想水中芦苇,没有跟! (三)java EE程序员修炼成精

十三种技术规范: 1、Jdbc 2、java命名与目录接口(jndi)很少用了 3、企业java Bean (Enterprise Java Bean EJB 3.0 以前的版本也要回!因为之前的开发用之前的版本,现在要维护!) 4、jsp(本课程讲) 5、servlet (之前讲过了) 6、corba(很少用,但日本人喜欢用!) 7、java的事物体系(JTA)/java事务服务(JTS)现在很少用 8、javaMail(要回)和javaBeans激活架构(JAF ) 9、java信使服务(JMS)短信那边用 10扩展标记语言(XML很重要!相当有用) 11、Struts + hibernate + Spring (SSH)很重要! 卖油翁的故事:我亦无他唯手熟尔! 原文: 陈康肃公尧咨善射,当世无双,公亦以此自矜。尝射于家圃,有卖油翁释担而立,睨之,久而不去。见其发矢十中八九,但微颔之。 康肃问曰:“汝亦知射乎?吾射不亦精乎?”翁曰:“无他,但手熟尔。”康肃忿然曰:“尔安敢轻吾射!”翁曰:“以我酌油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:“我亦无他,惟手熟尔。”康肃笑而遣之。 此与庄生所谓解牛斫轮者何异? 熟能生巧!

韩顺平servlet笔记(必看完整版)

◆背景知识介绍 J2EE的13种技术 java->servlet->jsp [技术总是有一个演变过程] zip粘贴到word设置 ◆回顾一下我们现有的技术 java 基础(面向对象,集合,界面,线程,文件,网络) jdbc (java 的数据库编程) oracle / mysql / sqlserver html css javascript (web 开发) ->网页设计 xml serlvet+jsp ->java web开发[使用java技术做web开发] ◆java ee 体系的介绍 ◆servlet项目演示 ◆web 开发介绍 ①静态页面(html) ②动态页面 1.用户可以输入数据,和页面交互(注册,购物,发帖子,付款...) 2.不同时间打开页面,内容是变化. 3.目前比较流行的左动态页面的技术( servlet/jsp , php , https://www.360docs.net/doc/ad4751761.html, , asp, cgi ) ◆动态网页技术的比较(了解) ◆bs 和cs的比较 (1)BS:browser server 浏览器服务器

(2)cs client server 客户服务 为什么需要的web服务器/web究竟是干什么的? 模拟一个web服务器MyWebServer.java import java.io.*; import https://www.360docs.net/doc/ad4751761.html,.*; public class MyWebServer { public static void main(String []args) throws Exception{ ServerSocket ss=new ServerSocket(80); Socket s=ss.accept(); //提示一句话 System.out.println("在9999 上等待连接..."); OutputStream os=s.getOutputStream(); BufferedReader br=new BufferedReader(new FileReader("d:\\hello.html")); String buf=""; while((buf=br.readLine())!=null){ os.write(buf.getBytes()); } //关闭流

Java期末复习笔记(概念篇)

1、面向对象程序设计所具有的基本特征是数据隐藏和封装,抽象,_多态_,_继承_ 1、什么叫方法的重载?构造函数可以重载吗? 2、什么是异常?为什么要进行异常处理? 3、谈谈final, finally, finalize的区别? 1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、 编译生成字节码和解释运行字节码。 8、创建一个名为MyPackage 的包的语句是package MyPackag ,该语句应该放在程序的位置为:应该在程序第一行(可以有空格或者注释行)。 Inti() Start() stop() Destroy() Paint() Repaint() Update() 线程的五种状态分别是:新生状态、就绪状态、运行状态、阻塞状态、死亡状态 Panel和Applet容器的默认布局模式是FlowLayout,Window、Frame、Dialog容器的默认布局模式是BorderLayout 面向对象的三大特征分别是封装、继承、多态。 Collection的四种主要接口是BeanContext、List、Set、SortedSet JAVA数据类型分基本数据类型和引用数据类型 标识符是用来标识变量、常量、方法、类、对象等元素的有效字符序列。简单地说,标识符就是一个名字。 JAVA程序分两种,它们是Java Application程序和Java Applet程序 接口中只包含常量和方法的定义,而没有变量和方法的实现。 某个类中包含了抽象方法,则这个类必须为抽象类或接口类。 所有例外对象都应对应类Throwable及其子类;例外包括哪两种类型。uncheck例外、check例外 Java语言特点简单、安全、容易使用、面向对象、可移植、高性能、多线程的语言。character流与byte流的区别是什么前者是块读写,后者是字节读写 类和接口的异同点。 相同点:接口属于类不同点:接口是一种抽象类,接口只能定义抽象方法 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?Throws 含义:在一个方法声明后使用,表示这个方法可能会抛出异常,从而通知调用这个方法的调用方处理该异常。Throw 含义:抛出异常对象。Try含义:try 块所包含程序可能会产生异常。Catch 含义:捕获并处理异常Finally 含义:无论是否发生异常,finally 中的语句都要执行

尚学堂Java笔记

笔试和面试题目 北京尚学堂科技 JAVA基础笔试题目 1.JDK和JRE的区别? Java Development Kit. 包含了JRE、编译器等程序。 Java Runtime Environment指的是java运行时环境。负责启动虚拟机,加载和运行class文件。 2.JVM是什么?工作原理? JVM是sun公司定义的规范。 java vitual mashine。 3.GC是什么?是如何回收对象的? Gabbage collection 垃圾回收器。哪些对象需要回收?对象没有被引用。 4.()的作用是?程序员能直接调用垃圾回收器吗? GC不能被程序员调用。()可以通知调用垃圾回收器。 5.一个java源文件,可以定义多个class类吗?可以定义多个public类吗? 可以。 6.java中,包含几种数据类型? 基本数据类型 byte 1个字节 short 2个字节 int 4个字节整形常量默认类型 long 8个字节 float 4个字节 double 8个字节浮点常量的默认类型 char 2个字节Unicode码 boolean 1位 引用数据类型(4个) 7.&和&&的区别? 3&4和3&&4哪个写法是不对的? &,按位与 && 逻辑与短路 8.2x4=8. 最快的算法怎么实现? 移位运算。左移一位表示乘以一个2. 9.堆区和栈区的区别?

10. 包装类使用时,自动装箱和拆箱是怎么回事? 1. 2.3. 6. 7.

XML问题 1.xml解析的两种基本方式:DOM和SAX的区别是? DOM: document object model。一次加载,随机操作文档。 SAX: simple api for xml 。按照流的方式加载。 2.平时工作中,xml解析你是使用什么? JDOM DOM4J 3.dtd、schema干嘛的? dtd: document type definition 文档类型定义。定义xml文档的结构。 schema的作用和dtd是一样的。只不过,它本身就是xml文档。更有优势。servlet和jsp问题 1.说说b/s和c/s架构. c/s:像qq。 b/s: 实际上是特殊的c/s.客户端是标准的浏览器。 2.http请求中,get和post的区别是? get:通过请求行传参。信息量小、不安全。 post: 通过请求实体传参。信息量大、安全。 3.你如何理解servlet? 如何定义servlet类? servlet运行于服务器端,为客户端提供相关的服务。servlet运行于servlet容器中。servlet 调用不能直接调用,需要通过请求服务器,服务器调用servlet。 servlet本质还是一个java类。 servlet是给客户端提供运算服务。当有一个客户端连接到服务器上时,服务器会创建一个新的线程提供服务,这个线程调用相关的servlet。servlet是单例模式,相关线程共享一个servlet对象。 extends HttpServlet即可。重写service方法。 4.servlet的生命周期是什么? 加载 初始化(调用init()) 执行(service()) 销毁(destroy()) 当有一个客户端连接到服务器上时,服务器会创建一个新的线程提供服务,这个线程调用相关的servlet。servlet是单例模式,相关线程共享一个servlet对象。 5.请求转发forward和重定向sendredirect的区别?他们两个内部实现机制? a.请求转发。客户端发出一个请求A,服务器调用了ServletA,servletA直接调转到 ServletB。然后,服务器直接将serlvetB的执行返回。客户端并不知道服务器内部跳转。所以,地址栏不发生改变。 b.重定向。客户端发出一个请求A,服务器调用了命令:(“b”)。这个命令的本质是: 写了一个响应头Location,这个Location中包含了重定向的url。客户端收到Location

相关主题
相关文档
最新文档