怎么用servlet做一个学习系统
2个回答
展开全部
1、C/S和B/S的比较 1) c/s架构的系统在使用的时候必须安装一个客户端软件,如果服务器端升级之后,客户端也需要进行升级.所以对于这样一种类型的软件可维护性比较差。 2) b/s架构的系统在使用的时候客户端不需要安装特殊的软件,只需要一个浏览器就可以了,服务器端升级完毕之后,客户端不需要作任何改变,就可以使用升级之后的软件,所以对于这样一种类型的软件可维护性比较好,应用广泛。
动态网页和静态网页:当浏览器在不同的时间或不同的条件下请求web服务器时,web服务器响应给浏览器的内容发生了变化,这就是动态网页。servlet是服务器端编写动态网页的一门技术。2、Web的介绍 1) 互联网: 连接全球计算机资源的网络环境,它是基于TCP/IP协议。 TCP/IP是一个协议簇,包括: 应用层: HTTP FTP(上传下载) TELNET STMP POP3(邮件协议) 传输层: TCP UDP 网络层: IP 数据链路层 2) 万维网(www World Wide Web):是互联网提供的一种服务,它是基于HTTP协议,Web也就是万维网。
4、CGI定义 CGI(Common Gateway Interface 公共网关接口),CGI是用来开发web应用的一门技术,CGI程序可以来处理客户端的请求,动态生成html。 优点: CGI程序可以很多种语言编写(C、Perl和VB等),便于程序员掌握。 缺点: 1) 服务器调用CGU程序处理客户端请求的时候,会启动一个进程去执行,所以性能方面比较低。 2) 移植性不好5、Servlet定义 1) 简单地说,Servlet就是运行在服务器端的一个java类 2) 专业地说,Servlet是一个Web组件 组件: 利用少量的、简单的API编写的一段程序,这段程序可以去完成某个和客户端请求有关的功能(如用户注册)。
6、Servlet的使用目的 1) 利用Servlet技术来开发Web应用 2) Servlet采用java语言编写,具有java语言的一切优点。 3) 服务器调用Servlet处理客户端请求的时候,会分配一个线程去执行, 所以性能比较好。 4) 利用Servlet可以动态地生成html
7、Web Server Web Server是一个能够接收并处理http请求,还能产生response的软件,用户开发好的Web应用要部署到Web Server上才能运行,类似Windows中的IIS。一般将Web Server称为Web服务器或应用服务器。常见的有: Tomcat: Apache(软件基金会)提供的开源的web服务器 商用型: WebSphere: IBM Weblogic: BEA
客户端 --> web server(中间件)-->Web应用 客户端----》hibernate(中间件)---》数据库
8、容器(Container) 容器是Web Server中的其中一个组成部分,它的主要工作就是管理部署在Web Server上的web应用的运行(装载和卸载web应用)以及这些web应用中的web组件(servelt,jsp等)的生命周期。 容器是运行在Web server(进程)中的一个很重要的后台线程。在Tomcat中容器的名字 叫Catalina。 容器分为Web容器和EJB容器两种: 1) web容器 装载和卸载Web应用(管理Web应用的生命周期) 在Tom和cat中只有一个Web容器,Tomcat只能部署Web应用。
2) ejb容器 装载和卸载ejb应用(管理ejb应用的生命周期) Websphere和Weblogic有一个Web容器和ejb容器,它们可以部署Web应用 和ejb应用。9、Servlet处理请求的流程: 1) 客户端在浏览器的地址栏中输入一个请求的URL,按回车后就向服务器端发起一个http request(由浏览器生成)。
2) 服务器端的Web Server首先接受到请求,并将请求转交给容器,容器会根据请求的URL去调用客户端要访问的Servlet。
3) 容器会根据web.xml中对Servlet的描述去查找要访问的Servlet,若找到,将此Servlet装载进虚拟机并实例化(第一次访问),然后调用Servlet实例中的service方法处理请求,并分配一个线程去执行。 注: 当第二次去访问同一个Servlet时,若容器判断到该Servlet已经被装载并实例化,那么容器就不会再去创建一个新的Servlet实例,直接调用原来那个Servlet实例中的service方法来处理请求。 4) 若没有查找到,直接返回一个404的错误代码到客户端,表示访问的资源不存在。
10、tomcat是apache的一个开源的项目.tomcat的目录结构 bin:存放了tomcat的一些可执行文件,比如启动tomcat或则关闭tomcat common:存放了tomcat和所有web应用都可以使用的类和jar包 conf:存放tomcat的一些配置文件. logs:存放tomcat和web应用输出的日志文件. server:存放只有tomcat才能使用的类和jar包,以及tomcat自带的web应用 shared:存放所有web应用都可以使用的类和jar包 temp:存放一些临时文件 webapps:存放开发的web应用(可以有多个) work:存放jsp相关的一些servlet类
11、部署在tomcat上的Web应用的目录结构 Web应用名------WEB-INF----classes(servlet或其它类编译后的class文件) | |-----lib(web应用需要使用的第三方jar包,如classes12.jar) |--*.jsp |-----web.xml(用来描述Web应用中所有的 Servlet、Filter、Listener等) |--*.html |--js |--image |--css
12、servlet技术是j2ee的其中一个规范,主要包含两个方面 1) 开发人员在开发servlet的时候必须遵循servlet规范(主要是servlet api)开发 如: 开发人员开发一个Servlet要去继承javax.servlet.http.HttpServlet 2) 中间件开发商在开发Web Server的时候,也必须遵循这个规范
13、开发一个servlet的基本步骤 1) 创建一个java类,继承javax.servlet.HttpServlet 2) 在web.xml文件中描述这个servlet <servlet> <servlet-name>servlet的名字</servlet-name> <servlet-class>servlet的类名</servlet-class> </servlet> <servlet-mapping> <!--跟servlet元素中的servlet-name相同--> <servlet-name>servlet的名字</servlet-name> <!--定位一个servlet的URL--> <url-pattern>servlet的URL</url-pattern> </servlet-mapping> 注意: * 在<servlet>和<servlet-mapping>元素中的<servlet-name>要对应 * <servlet-class>:用来指定客户端要访问的Servlet(包名+Servlet类名) * <url-pattern>:指定一个url用来定位客户端要访问的Servlet
14、开发一个Servlet的三种方式 1) 定义一个类继承(推荐使用) javax.servlet.http.HttpServlet 2) 定义一个类继承 javax.servlet.GenericServlet 3) 定义一个类实现 javax.servlet.Servlet
15、ServletContext(interface) 代表一个Web应用的上下文,在一个Web应用中只有一个独一无二的ServletContext。
1、在Servlet中获得提交表单中信息的方法 1) String value = request.getParameter(name); 功能: a) 获得提交表单中的指定字段信息 name --> 和表单中的字段名字对应 b) 获得URL中?后面的指定参数值 name --> 和?后面的参数名对应
2) String[] array = request.getParameterValues(name); 功能: 获得同一个字段名字下的多个值,封装到一个数组中。 通常用于checkbox中
3) Enumeration e = request.getParameterNames(); 功能: 获得提交表单中所有字段的名字,封装到一个枚举类型中。
4) String queryString = request.getQueryString(); 功能: 获得URL中?后面的字符串
2、http request的格式 分为请求头(Http协议的头部)和请求体(Http协议的体部) 注: http response也分为头部和体部
3、表单的常用提交方式 1) GET 浏览器将提交表单中的字段信息放置在请求头中,不适合大数据量的传输, 适合根据关键字作查询。
2) POST 浏览器将提交表单中的字段信息放置在请求体中,适合大数据量的传输, 如:向服务器端上传文件等。
注意: 1) 若直接在地址栏中输入URL按回车 按GET方式提交 2) 若属性method不指定任何值或者 不加属性method默认按GET方式 提交 3) 只有在method指定为POST时才按 POST方式提交
4、解决中文乱码 1) request中的中文乱码 a) POST方式提交 在获得提交表单信息之前调用 request .setCharactersEncoding("UTF-8");
b) GET方式提交 在Tomcat的server.xml中配置 <Service> <Connector URIEncoding="UTF-8"> ... </Connector> </Service>
2) reponse中的中文乱码 在通过response获得输出流之前调用 response.setCharacterEncoding("UTF-8");
Servlet的生命周期:
1、装载并实例化Servlet(在整个生命周期中Servlet实例只有一个) 分为两种装载方式: a) 延迟装载(默认方式) 当客户端发起一个请求第一次去访问Servlet时,容器会将Servlet装载进虚拟机并实例化,第二次以后去访问同一个Servlet时容器就不会再去装载并实例化。
b) 预先装载 当Web Server启动,容器在装载Web应用的时候会将Servlet装载进虚拟机并实例化。 这种方式必须在web.xml中描述: <servlet> ... <load-on-startup> number </load-on-startup> </servlet> number<0: 采用延迟装载 number>=0: 采用预先装载 number越小越先被装载 number越大越晚被装载 number=0最晚被装载 注: 若不描述默认采用延迟装载
2、init方法的调用 当Servlet被装载并实例化后,容器会调用init方法对 Servlet进行初始化,只有在init方法调用成功后,Servlet 才处于service状态,能够处理客户端的请求。 注意: 1) 在整个Servlet的生命周期中init方法仅被调用一次 2) 用户定义的Servlet中可以覆盖有参或无参的init方法,但是若覆盖有参init方法,最好先调用super.init(config),对变量config进行赋值初始化。而覆盖无参init可以不调用super.init(),推荐覆盖无参init,为了使用方便。 3) 用户定义的Servlet中可以不去覆盖init方法,覆盖只是为了使用方便(如:获得web.xml中描述的初始化参数) 4) init方法的调用次序: 见init.ppt
3、service方法的调用 当Servlet被装载实例化并初始化后,客户端发起请求,容器就会调用Servlet实例的service方法对请求进行处理。 注意: service方法在生命周期中被调用多次,这跟请求的次数有关。
4、Servlet实例的销毁 当容器在销毁Servlet实例前会先去调用destroy(), 在此方法中可以作下列工作: 1) 恢复一些初始化的变量 2) 释放资源 3) 控制所有运行在Servlet中的线程在Servlet实例被销毁之前能正常运行结束 4) 记录日志信息 注意: 1) destroy()在生命周期中仅被调用一次 2) 用户定义的Servlet中可以不覆盖destroy()
服务器内部和外部跳转:
1、获得请求分发器RequestDispatcher的方式 1) RequestDispatcher dispatcher = request.getRequestDispatcher(url); url: 指定要跳转的服务器端资源(如:Servlet Jsp Html等)的URL url可以为 a) 绝对路径: 如"/form/show" b) 相对路径: 如"show"
2) ServletContext scx = super.getServletContext(); RequestDispatcher dispatcher = scx.getRequestDispatcher(url); url: 只能是绝对路径(如:"/form/show") ServletContext: Web应用的上下文
2、服务器内部跳转(Web内部跳转) 功能: 在服务器内部从一个Servlet跳转到服务器端的另外一个资源(Servlet Jsp Html等)。 跳转方式: 1) forward方式 dispatcher.forward(request,response);
2) include方式 dispatcher.include(request,response);
两种跳转的区别: forward: 会将response体部中的信息清空 include: 将写到输出流中的信息包含进response中, 不会将response体部信息清空。
3、request(属于HttpServletRequest类型) 1) 使用范围 从客户端的一次请求到response之前是存在的,但是response之后就不存在。
2) 使用语法 a) 往request中存放信息 request.setAttribute(key,value); key: String类型 value: Object类型
b) 从request中获取信息 Object o = request.getAttribute(key);
c) 删除request中的信息 request.removeAttribute(key);
4、服务器外部跳转(重定向) 1) 跳转语法 response.sendRedirect(url); url可以为 a) 绝对路径: 如: request.getContextPath()+"/resource/dispatch2" 等于 "/servlet_jd0801a/resource/dispatch2"
b) 相对路径: 如: "dispatch2"
2) 功能 从一个Servlet重定向到服务器端的另外一个资源(Servlet Jsp Html等)。
3) 注意点 客户端发起了两次请求
一、Http协议的特点 1、 基于Http协议的http request和服务器端采用一次性的连接,这样客户端不必关心服务器端系统的升级和维护,要获得信息只要发起一次请求即可。
2、Http协议是一种无状态的协议,当客户端向服务器端发起一次请求,服务器端不会来区分客户端以及保存客户端的状态信息, 优点: 可以提高服务器端的处理请求能力和提高response的 响应灵敏度。 缺点: 服务器端无法跟踪和保存客户端的状态信息
二、跟踪和保存客户端状态信息的技术 1、Cookie 1) Cookie是在服务器端构造的对象,在Cookie中可以以文本形式保存客户端的状态信息(如登陆的用户名和密码),并将Cookie对象放置在response中返回并保存在客户端。
2) 服务器端生成Cookie的方式 Cookie cookie = new Cookie(cookieName,cookieValue); cookieName: String类型 cookieValue: String类型 如: Cookie cookie = new Cookie("username","jack"); Cookie cookie2 = new Cookie("password","888888");
3) 设置Cookie保存在客户端的存活期 cookie.setMaxAge(int time); time: Cookie存活期的时间(单位:秒),默认为-1
time > 0: Cookie被保存在客户端的某个文件中 time < 0: Cookie被保存在客户端的浏览器中 time = 0: 表示删除浏览器中同名的Cookie
注意: * 当time > 0时,若超过了Cookie的存活期, 那么在下次请求时,浏览器就不会把Cookie放置在 request中发送到服务器端。 * 当time < 0时,在关闭浏览器后,那么保存 在浏览器中Cookie也就会不存在。
4) 将Cookie放置在response中并返回到客户端 response.addCookie(cookie);
5) 在服务器端获得从客户端发送过来所有Cookie Cookie[] cookies = request.getCookies();
6) Cookie功能可以被浏览器屏蔽 目的: 解决安全隐患问题 屏蔽的特点: 在Cookie被浏览器屏蔽后,服务器端 返回response中的Cookie不会被浏览器接受,客户端发起 请求后浏览器也不会把保存在客户端的Cookie放在 request中发送到服务器端。
2、session(会话) --> 属于HttpSession类型 1) 获得session的方式 (a) HttpSession session = request.getSession(); 当第一次调用此方法时,容器会先去获得从客户端发送过来的Cookie,从中取出jsessionid,若没有取到的话,容器会构造一个新的session对象并为之分配一个唯一的jsessionid,并将这个session对象放置在由容器维护的一个Map中(jsessionid,session对象引用),同时紧接着构造一个Cookie对象来存放jsessionid的值,格式如下:Cookie cookie = new Cookie("JSESSIONID","jsessionid的值");然后调用response.addCookie(cookie);将cookie放置在response中返回到客户端保存在当前浏览器中。 当第二次以后去调用此方法时,容器就可以从客户端发送来的Cookie中获得jsessionid,然后从Map中取出原来构造的session对象。 (b) HttpSession session = request.getSession(boolean create); create=true: 同 a) create=false: 当容器获取不到Cookie中的 jsessionid时,它不会去构造一个新的session对象, 此方法直接返回null。
动态网页和静态网页:当浏览器在不同的时间或不同的条件下请求web服务器时,web服务器响应给浏览器的内容发生了变化,这就是动态网页。servlet是服务器端编写动态网页的一门技术。2、Web的介绍 1) 互联网: 连接全球计算机资源的网络环境,它是基于TCP/IP协议。 TCP/IP是一个协议簇,包括: 应用层: HTTP FTP(上传下载) TELNET STMP POP3(邮件协议) 传输层: TCP UDP 网络层: IP 数据链路层 2) 万维网(www World Wide Web):是互联网提供的一种服务,它是基于HTTP协议,Web也就是万维网。
4、CGI定义 CGI(Common Gateway Interface 公共网关接口),CGI是用来开发web应用的一门技术,CGI程序可以来处理客户端的请求,动态生成html。 优点: CGI程序可以很多种语言编写(C、Perl和VB等),便于程序员掌握。 缺点: 1) 服务器调用CGU程序处理客户端请求的时候,会启动一个进程去执行,所以性能方面比较低。 2) 移植性不好5、Servlet定义 1) 简单地说,Servlet就是运行在服务器端的一个java类 2) 专业地说,Servlet是一个Web组件 组件: 利用少量的、简单的API编写的一段程序,这段程序可以去完成某个和客户端请求有关的功能(如用户注册)。
6、Servlet的使用目的 1) 利用Servlet技术来开发Web应用 2) Servlet采用java语言编写,具有java语言的一切优点。 3) 服务器调用Servlet处理客户端请求的时候,会分配一个线程去执行, 所以性能比较好。 4) 利用Servlet可以动态地生成html
7、Web Server Web Server是一个能够接收并处理http请求,还能产生response的软件,用户开发好的Web应用要部署到Web Server上才能运行,类似Windows中的IIS。一般将Web Server称为Web服务器或应用服务器。常见的有: Tomcat: Apache(软件基金会)提供的开源的web服务器 商用型: WebSphere: IBM Weblogic: BEA
客户端 --> web server(中间件)-->Web应用 客户端----》hibernate(中间件)---》数据库
8、容器(Container) 容器是Web Server中的其中一个组成部分,它的主要工作就是管理部署在Web Server上的web应用的运行(装载和卸载web应用)以及这些web应用中的web组件(servelt,jsp等)的生命周期。 容器是运行在Web server(进程)中的一个很重要的后台线程。在Tomcat中容器的名字 叫Catalina。 容器分为Web容器和EJB容器两种: 1) web容器 装载和卸载Web应用(管理Web应用的生命周期) 在Tom和cat中只有一个Web容器,Tomcat只能部署Web应用。
2) ejb容器 装载和卸载ejb应用(管理ejb应用的生命周期) Websphere和Weblogic有一个Web容器和ejb容器,它们可以部署Web应用 和ejb应用。9、Servlet处理请求的流程: 1) 客户端在浏览器的地址栏中输入一个请求的URL,按回车后就向服务器端发起一个http request(由浏览器生成)。
2) 服务器端的Web Server首先接受到请求,并将请求转交给容器,容器会根据请求的URL去调用客户端要访问的Servlet。
3) 容器会根据web.xml中对Servlet的描述去查找要访问的Servlet,若找到,将此Servlet装载进虚拟机并实例化(第一次访问),然后调用Servlet实例中的service方法处理请求,并分配一个线程去执行。 注: 当第二次去访问同一个Servlet时,若容器判断到该Servlet已经被装载并实例化,那么容器就不会再去创建一个新的Servlet实例,直接调用原来那个Servlet实例中的service方法来处理请求。 4) 若没有查找到,直接返回一个404的错误代码到客户端,表示访问的资源不存在。
10、tomcat是apache的一个开源的项目.tomcat的目录结构 bin:存放了tomcat的一些可执行文件,比如启动tomcat或则关闭tomcat common:存放了tomcat和所有web应用都可以使用的类和jar包 conf:存放tomcat的一些配置文件. logs:存放tomcat和web应用输出的日志文件. server:存放只有tomcat才能使用的类和jar包,以及tomcat自带的web应用 shared:存放所有web应用都可以使用的类和jar包 temp:存放一些临时文件 webapps:存放开发的web应用(可以有多个) work:存放jsp相关的一些servlet类
11、部署在tomcat上的Web应用的目录结构 Web应用名------WEB-INF----classes(servlet或其它类编译后的class文件) | |-----lib(web应用需要使用的第三方jar包,如classes12.jar) |--*.jsp |-----web.xml(用来描述Web应用中所有的 Servlet、Filter、Listener等) |--*.html |--js |--image |--css
12、servlet技术是j2ee的其中一个规范,主要包含两个方面 1) 开发人员在开发servlet的时候必须遵循servlet规范(主要是servlet api)开发 如: 开发人员开发一个Servlet要去继承javax.servlet.http.HttpServlet 2) 中间件开发商在开发Web Server的时候,也必须遵循这个规范
13、开发一个servlet的基本步骤 1) 创建一个java类,继承javax.servlet.HttpServlet 2) 在web.xml文件中描述这个servlet <servlet> <servlet-name>servlet的名字</servlet-name> <servlet-class>servlet的类名</servlet-class> </servlet> <servlet-mapping> <!--跟servlet元素中的servlet-name相同--> <servlet-name>servlet的名字</servlet-name> <!--定位一个servlet的URL--> <url-pattern>servlet的URL</url-pattern> </servlet-mapping> 注意: * 在<servlet>和<servlet-mapping>元素中的<servlet-name>要对应 * <servlet-class>:用来指定客户端要访问的Servlet(包名+Servlet类名) * <url-pattern>:指定一个url用来定位客户端要访问的Servlet
14、开发一个Servlet的三种方式 1) 定义一个类继承(推荐使用) javax.servlet.http.HttpServlet 2) 定义一个类继承 javax.servlet.GenericServlet 3) 定义一个类实现 javax.servlet.Servlet
15、ServletContext(interface) 代表一个Web应用的上下文,在一个Web应用中只有一个独一无二的ServletContext。
1、在Servlet中获得提交表单中信息的方法 1) String value = request.getParameter(name); 功能: a) 获得提交表单中的指定字段信息 name --> 和表单中的字段名字对应 b) 获得URL中?后面的指定参数值 name --> 和?后面的参数名对应
2) String[] array = request.getParameterValues(name); 功能: 获得同一个字段名字下的多个值,封装到一个数组中。 通常用于checkbox中
3) Enumeration e = request.getParameterNames(); 功能: 获得提交表单中所有字段的名字,封装到一个枚举类型中。
4) String queryString = request.getQueryString(); 功能: 获得URL中?后面的字符串
2、http request的格式 分为请求头(Http协议的头部)和请求体(Http协议的体部) 注: http response也分为头部和体部
3、表单的常用提交方式 1) GET 浏览器将提交表单中的字段信息放置在请求头中,不适合大数据量的传输, 适合根据关键字作查询。
2) POST 浏览器将提交表单中的字段信息放置在请求体中,适合大数据量的传输, 如:向服务器端上传文件等。
注意: 1) 若直接在地址栏中输入URL按回车 按GET方式提交 2) 若属性method不指定任何值或者 不加属性method默认按GET方式 提交 3) 只有在method指定为POST时才按 POST方式提交
4、解决中文乱码 1) request中的中文乱码 a) POST方式提交 在获得提交表单信息之前调用 request .setCharactersEncoding("UTF-8");
b) GET方式提交 在Tomcat的server.xml中配置 <Service> <Connector URIEncoding="UTF-8"> ... </Connector> </Service>
2) reponse中的中文乱码 在通过response获得输出流之前调用 response.setCharacterEncoding("UTF-8");
Servlet的生命周期:
1、装载并实例化Servlet(在整个生命周期中Servlet实例只有一个) 分为两种装载方式: a) 延迟装载(默认方式) 当客户端发起一个请求第一次去访问Servlet时,容器会将Servlet装载进虚拟机并实例化,第二次以后去访问同一个Servlet时容器就不会再去装载并实例化。
b) 预先装载 当Web Server启动,容器在装载Web应用的时候会将Servlet装载进虚拟机并实例化。 这种方式必须在web.xml中描述: <servlet> ... <load-on-startup> number </load-on-startup> </servlet> number<0: 采用延迟装载 number>=0: 采用预先装载 number越小越先被装载 number越大越晚被装载 number=0最晚被装载 注: 若不描述默认采用延迟装载
2、init方法的调用 当Servlet被装载并实例化后,容器会调用init方法对 Servlet进行初始化,只有在init方法调用成功后,Servlet 才处于service状态,能够处理客户端的请求。 注意: 1) 在整个Servlet的生命周期中init方法仅被调用一次 2) 用户定义的Servlet中可以覆盖有参或无参的init方法,但是若覆盖有参init方法,最好先调用super.init(config),对变量config进行赋值初始化。而覆盖无参init可以不调用super.init(),推荐覆盖无参init,为了使用方便。 3) 用户定义的Servlet中可以不去覆盖init方法,覆盖只是为了使用方便(如:获得web.xml中描述的初始化参数) 4) init方法的调用次序: 见init.ppt
3、service方法的调用 当Servlet被装载实例化并初始化后,客户端发起请求,容器就会调用Servlet实例的service方法对请求进行处理。 注意: service方法在生命周期中被调用多次,这跟请求的次数有关。
4、Servlet实例的销毁 当容器在销毁Servlet实例前会先去调用destroy(), 在此方法中可以作下列工作: 1) 恢复一些初始化的变量 2) 释放资源 3) 控制所有运行在Servlet中的线程在Servlet实例被销毁之前能正常运行结束 4) 记录日志信息 注意: 1) destroy()在生命周期中仅被调用一次 2) 用户定义的Servlet中可以不覆盖destroy()
服务器内部和外部跳转:
1、获得请求分发器RequestDispatcher的方式 1) RequestDispatcher dispatcher = request.getRequestDispatcher(url); url: 指定要跳转的服务器端资源(如:Servlet Jsp Html等)的URL url可以为 a) 绝对路径: 如"/form/show" b) 相对路径: 如"show"
2) ServletContext scx = super.getServletContext(); RequestDispatcher dispatcher = scx.getRequestDispatcher(url); url: 只能是绝对路径(如:"/form/show") ServletContext: Web应用的上下文
2、服务器内部跳转(Web内部跳转) 功能: 在服务器内部从一个Servlet跳转到服务器端的另外一个资源(Servlet Jsp Html等)。 跳转方式: 1) forward方式 dispatcher.forward(request,response);
2) include方式 dispatcher.include(request,response);
两种跳转的区别: forward: 会将response体部中的信息清空 include: 将写到输出流中的信息包含进response中, 不会将response体部信息清空。
3、request(属于HttpServletRequest类型) 1) 使用范围 从客户端的一次请求到response之前是存在的,但是response之后就不存在。
2) 使用语法 a) 往request中存放信息 request.setAttribute(key,value); key: String类型 value: Object类型
b) 从request中获取信息 Object o = request.getAttribute(key);
c) 删除request中的信息 request.removeAttribute(key);
4、服务器外部跳转(重定向) 1) 跳转语法 response.sendRedirect(url); url可以为 a) 绝对路径: 如: request.getContextPath()+"/resource/dispatch2" 等于 "/servlet_jd0801a/resource/dispatch2"
b) 相对路径: 如: "dispatch2"
2) 功能 从一个Servlet重定向到服务器端的另外一个资源(Servlet Jsp Html等)。
3) 注意点 客户端发起了两次请求
一、Http协议的特点 1、 基于Http协议的http request和服务器端采用一次性的连接,这样客户端不必关心服务器端系统的升级和维护,要获得信息只要发起一次请求即可。
2、Http协议是一种无状态的协议,当客户端向服务器端发起一次请求,服务器端不会来区分客户端以及保存客户端的状态信息, 优点: 可以提高服务器端的处理请求能力和提高response的 响应灵敏度。 缺点: 服务器端无法跟踪和保存客户端的状态信息
二、跟踪和保存客户端状态信息的技术 1、Cookie 1) Cookie是在服务器端构造的对象,在Cookie中可以以文本形式保存客户端的状态信息(如登陆的用户名和密码),并将Cookie对象放置在response中返回并保存在客户端。
2) 服务器端生成Cookie的方式 Cookie cookie = new Cookie(cookieName,cookieValue); cookieName: String类型 cookieValue: String类型 如: Cookie cookie = new Cookie("username","jack"); Cookie cookie2 = new Cookie("password","888888");
3) 设置Cookie保存在客户端的存活期 cookie.setMaxAge(int time); time: Cookie存活期的时间(单位:秒),默认为-1
time > 0: Cookie被保存在客户端的某个文件中 time < 0: Cookie被保存在客户端的浏览器中 time = 0: 表示删除浏览器中同名的Cookie
注意: * 当time > 0时,若超过了Cookie的存活期, 那么在下次请求时,浏览器就不会把Cookie放置在 request中发送到服务器端。 * 当time < 0时,在关闭浏览器后,那么保存 在浏览器中Cookie也就会不存在。
4) 将Cookie放置在response中并返回到客户端 response.addCookie(cookie);
5) 在服务器端获得从客户端发送过来所有Cookie Cookie[] cookies = request.getCookies();
6) Cookie功能可以被浏览器屏蔽 目的: 解决安全隐患问题 屏蔽的特点: 在Cookie被浏览器屏蔽后,服务器端 返回response中的Cookie不会被浏览器接受,客户端发起 请求后浏览器也不会把保存在客户端的Cookie放在 request中发送到服务器端。
2、session(会话) --> 属于HttpSession类型 1) 获得session的方式 (a) HttpSession session = request.getSession(); 当第一次调用此方法时,容器会先去获得从客户端发送过来的Cookie,从中取出jsessionid,若没有取到的话,容器会构造一个新的session对象并为之分配一个唯一的jsessionid,并将这个session对象放置在由容器维护的一个Map中(jsessionid,session对象引用),同时紧接着构造一个Cookie对象来存放jsessionid的值,格式如下:Cookie cookie = new Cookie("JSESSIONID","jsessionid的值");然后调用response.addCookie(cookie);将cookie放置在response中返回到客户端保存在当前浏览器中。 当第二次以后去调用此方法时,容器就可以从客户端发送来的Cookie中获得jsessionid,然后从Map中取出原来构造的session对象。 (b) HttpSession session = request.getSession(boolean create); create=true: 同 a) create=false: 当容器获取不到Cookie中的 jsessionid时,它不会去构造一个新的session对象, 此方法直接返回null。
展开全部
怎么用servle实现一个学习系统?
主要是基于mvc设计模式进行分层实现, 学习系统本质上就一个内容管理系统, 用富文本编辑器实现内容管理比较方便, 部分资料给你了
java中mvc设计思路怎么做
所谓的mvc就是model view controller模式。这种模式用于应用程序的分层开发。模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器,控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开
javaweb项目怎么进行数据库设计
一般来说大学做的javaweb项目都比较简单, 数据库用mysql就可以了, 也可以用sqlserver, 表设计尽量少带外键少复杂, 注意配置好索引等, 注意每个表需要加上时间与状态字段
javaweb项目哪里可以下载源码
各种云盘都有大量的之前同学搞出来的成品, 比如五六年前还都是jsp和传统struts2的, 最近几年比较多的代码都是用spring全家桶实现的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询