华清远见-重庆中心-JAVA WEB知识点梳理

Servlt

maven

Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包

创建web项目

1.

2.

3.

toncat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

配置tomcat

1.

2.

3.

4.

servlet配置

创建java类,继承HttpServlet,重写其中的service方法

public class BMIServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req,
HttpServletResponse resp) throws
ServletException, IOException {
// 1. 设置编码
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
// 2. 获取参数: -- url:
// http://localhost:8080/bmi?tz=60&sg=1.7
// ? key=value & key1+value1 , &用于分隔参数
String tz = req.getParameter("tz");
String sg = req.getParameter("sg");
// 3. 处理数据
double tz1 = Double.valueOf(tz);
double sg1 = Double.valueOf(sg);
double bmi = tz1 / (sg1 * sg1);
// 4. 响应结果
PrintWriter writer = resp.getWriter();
String str = "";
if(bmi < 18){
str = "太瘦了";
}else if(bmi < 24){
str="标准身材";
}else if(bmi < 28){
str="超重了";
}else {
str="肥胖状态。";
}
writer.println("你的bmi是:" + bmi + "\n");
writer.println("<b style='color:red'>"+str+"</b>");
}

在web.xml中配置servlet的访问路径

<servlet>
<servlet-name>bmi</servlet-name>
<servlet-class>action.BMIServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>bmi</servlet-name>
<url-pattern>/bmi</url-pattern>
</servlet-mapping>

htpp协议

特点:一发一收,一问一答

HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0

协议: 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。

请求方式        get               请求参数在url地址后显示               数据量比较小               不安全               不支持文件上传               get请求: ① 浏览器地址栏直接访问 , ② form的method设置为get , ③ 超链接 ,               ④ 异步请求的时候,设置为get.        post               数据放在消息体中的               数据量大               相对安全               支持文件上传               post请求: ① form的method设置为post , ② 异步请求的时候, 设置为post

servlet生命周期

容器启动的时候,或者第一次访问servlet的时候 , 会执行init方法,一个生命周期之内只执行一 次。 servlet被访问的时候,反复执行 service(doXX)方法。 容器结束运行的时候,执行destroy方法,一个生命周期之内只执行一次。

转发和重定向

转发

一个请求完成部分功能,希望剩下的功能由另一个请求完成,这种时候使用转发. 一般使用servlet完成数据处理, 转发数据到jsp页面,实现数据的展示。 转发可以通过request对象,把数据转发给另一个请求 转发的本质是一个请求,因为request对象不变(可以共享request中的数据)。 转发之后,浏览器地址栏显示的是第一个请求的地址。

重定向

某个请求完成之后,希望浏览器自动发起另一个请求,则使用重定向。 使用重定向的时候,浏览器消息头中收到一个302状态码和url地址。浏览器根据这个状态码和 url地址,自动发起请求。 重定向是完全不同的两个请求,是两个request对象,两个请求的数据无法共享。 浏览器地址栏显示的是第二个请求的地址

if(servletPath.equals("/delete.do")){
String bookId = req.getParameter("bookId");
if(bookId == null){
req.setAttribute("msg" , "只能根据id删除数据。");
RequestDispatcher rd =
req.getRequestDispatcher("./book/info.jsp");
rd.forward(req ,resp);
}else{
Boolean aBoolean = service.deleteOne(Integer.valueOf(bookId));
if(aBoolean == false){
req.setAttribute("msg" , "删除失败");
RequestDispatcher rd =
req.getRequestDispatcher("./book/info.jsp");
rd.forward(req ,resp);
}else{ // 删除成功,重定向到list.do (重定向是第二个请求)
resp.sendRedirect("list.do"); // sendRedirect -- 重定向
}
}
}

cookie

客户端状态管理:cookie技术,把数据保存在浏览器中,就是客户端的状态管理。 服务器端创建cookie对象,再添加到浏览器中。 浏览器保存响应结果中邀请你需要add的cookie对象,每个cookie和自己的请求的域名一致。 浏览器每次给服务器发请求的时候,会将请求对应的域名中保存的cookie数据,一起发送到服务 器。 服务器通过request获取cookie对象的数据,根据cookie的name,找到value值,进行使用value.

Cookie c = new Cookie(key ,value);
response.addCookie(c)
//创建cookie对象

cookie的有效期

cookie.setMaxAge(秒) -- 设置cookie的有效期

setMaxAge(正数) : 有效期就是当前时间 + 正数的秒数。 setMaxAge(0) : 立即失效, 表示cookie过期了。 没有调用setMaxAge 或者 setMaxAge(负数) : 表示会话期间有效。浏览器关闭,cookie失效了。 默认设置。 会话期间: 浏览器第一次访问某个服务器,到浏览器关闭的期间,称为一个会话。

cookie的特点

用户可以删除cookie 用户可以禁止使用cookie 存储小于4k的内容 cookie的个数不能超过300个 只能存储字符串 cookie不安全

session

session对象的获取 sesssion对象的获取,和请求中从浏览器中传输到服务器的cookie(JSESSIONID)有关系。 根据JSESSIONID 这个cookie, 去查找当前请求对应的session对象。

// 根据sessionId 获取session对象,如果没有获取到,就创建一个session.
HttpSession session = request.getSession()
// true: 同 request.getSession() 一样,就是找不到就给创建一个。
// false : 找不到session对象,就返回null.
HttpSession session = request.getSession(boolean)
session.setAttribute(String , Object) -- key,value
Object obj = session.getAttribute(String) -- 根据key找到value
session.removeAttribute(String) -- 根据key ,删除数据

如果没有设置有效期,默认的有效期是30分钟,如果会话结束了,session一般就无效了。 设置session无效 一般系统又一个退出功能,可以清空session中保存的数据, 使用session的invalidate方法, 设置session为无效

Jsp

jsp使用

jsp是sun公司制定的一种用于服务器端的动态页面的技术规范,也是一种组件,依赖于容器(tomcat)进 行运行。 jsp不需要再web.xml中进行配置,直接通过它的路径和文件名进行访问。 jsp是一种运行在服务器端的页面,它里面可以包含html , 嵌入一些java代码,通过在tomcat容器中经 过解析,输出为html页面。 servlet : 数据的处理和数据的展示(拼html标签) servlet + jsp : servlet做数据处理, jsp做数据的展示。 servlet做数据展示的时候,不方便(编写代码的时候, 维护代码的时候) jsp : 让数据的处理和数据的展示进行分离(解耦)

jsp页面上写java代码

<%
// java 代码
String str = "hello jsp!";
%>

JSP页面本质上是一个Servlet程序,第一次访问JSP页面时(运行Tomcat服务器后在浏览器地址栏输入路径),Tomcat服务器会将此JSP页面翻译成为一个Java源文件,并对其进行编译成为.class字节码文件(一个.java,一个.class)

表达式脚本

格式:<%=表达式 %>

作用:在浏览器的JSP页面上输出数据(只有此脚本可以在浏览器的页面上输出数据)

特点:

(1) 所有的表达式脚本都会被翻译到对应的Java类的_jspService()方法中,故表达式脚本可以 直接使用_jspService()方法参数中的对象

(2) 表达式脚本都会被编译后的Java类中的out.print()方法输出到浏览器页面上

(3) 表达式脚本中的表达式不能以分号结束

jsp9个内置对象

request:请求对象

response:响应对象

pageContext:JSP的上下文对象

session:会话对象

application:ServletContext对象

config:ServletConfig对象

out:JSP输出流对象

page:指向当前JSP的对象

exception:异常对象

jsp四个域对象

EL表达式

在jsp页面中, 可以直接通过el表达式,获取到存储在pageContext, request, session , application中的数据。

语法规则:${对象},¥{对象.属性名}

对象符合java bean的规范(描述类的属性私有化,提供公开的get/set方法。比如 属性 名叫abc , 对应的方法叫getAbc / setAbc) ${对象.属性名} ,这里的本质是调用属性名对应的get方法。 el表达式的查找数据方式 从pageContext, request, session , application等对象中,查找需要输出的对象 pageContext, request, session , application如果出现了同名的key , 那么查找按小范围优选 的原则查找 可以通过pageScope, requestScope , sessionScope, applicationScope 指定查找范围。

Filter

fliter的使用

sun公司提供的一种特殊的组件规范,主要用于拦截容器的调用过程。 规范: 实现Filter接口(实现doFilter方法) 特殊:过滤器不能单独使用,需要和servlet进行配合使用 组件:实现软件的某个模块功能,需要在容器中运行。 容器: 一个特殊的软件,可以运行组件 支持多个Filter , 以在web.xml中的配置的顺序进行过滤。

Filter的生命周期

实例化 (调用构造函数) -- 1次 初始化(调用init函数) -- 1次 就绪(调用doFilter函数) -- 任意次 销毁(调用destroy函数)-- 1次

public class LifeFilter implements Filter {
public LifeFilter(){
System.out.println("LifeFilter 构造函数......");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("LifeFilter init函数......");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse, FilterChain filterChain) throws IOException,
ServletException {
System.out.println("LifeFilter doFilter函数......");
filterChain.doFilter(servletRequest , servletResponse);
}
@Override
public void destroy() {
System.out.println("LifeFilter destroy函数......");
}
}

错误总结

1.404:代表 此请求路径找不到对应的资源, 检查请求的路径是否正确(页面中发出的请求路径和web.xml配置文件中Servlet处理的路径是否匹配)

2.web.xml配置错误

3.500错误

servlet代码出错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 根据所提供的清远-c0rtexas9资料路径,在实验中涉及到了Linux系统标准IO的应用实验。Linux系统标准IO是指Linux操作系统提供的一套标准化的IO库,可以用于操作文件、输入输出等。以下是对该实验的简单描述: 这个实验主要是关于Linux系统标准IO的应用实验。在该实验中,我们可以找到程序的源代码,该源代码是用Linux应用程序的方式编写的。通过这个实验,我们可以了解和学习Linux系统标准IO的基本操作和使用方法。 Linux系统标准IO是一套非常强大和灵活的IO库,提供了一系列的函数和方法来操作文件和进行输入输出。在实验源码中,我们可以看到一些常的标准IO函数,比如fopen、fclose、fprintf和fscanf等。 通过这些函数,我们可以打开和关闭文件,从文件读取数据或向文件写入数据。实验源码中包含了一些常的操作,比如读取文件、写入文件、复制文件和查找文件等。通过实验,我们可以了解到如何使用这些函数来完成不同的操作。 此外,在实验源码中可能还会涉及到一些其他的Linux系统标准IO相关的知识点,比如文件指针、文件描述符和文件流等。这些知识点对于理解和使用Linux系统标准IO函数非常重要。 通过实验中提供的源代码,我们可以进行相应的实验操作,从而更好地理解和学习Linux系统标准IO的使用。同时,我们也可以通过对实验源码的分析和调试,更深入地了解Linux系统标准IO的内部工作原理。 总之,通过这个实验,我们可以掌握Linux系统标准IO的基本操作和使用方法,从而提高我们在Linux系统中进行文件操作和输入输出的能力。 ### 回答2: 清远(英文名称为Far Infrared Technologies International Limited)是一家专注于红外光学技术研发及应用的企业。该公司的产品主要应用于安防监控、无人机、机器人、智能家居等领域。 关于"06. linux系统标准io实验"的实验资料包括了程序源码。在Linux操作系统中,标准I/O(Input/Output)库是用于进行文件读写和输入输出操作的一套API(Application Programming Interface)。标准I/O库提供了一系列函数,包括文件打开、读取、写入、关闭等操作,方便开发人员进行文件操作和输入输出。 这份实验资料中的源码,应该是用于展示和实践Linux系统标准I/O库的使用方法和技巧。通过编译和运行这些源码,可以了解如何使用标准I/O库来进行文件的读写和输入输出操作,包括打开文件、读取文件内容、写入文件等。 这些实验源码可以作为学习和实践Linux系统标准I/O库的参考资料。通过实际操作,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 总之,"06. linux系统标准io实验"的实验资料中的程序源码是用于学习和实践Linux系统标准I/O库的使用方法,通过编译和运行这些源码,可以加深对标准I/O库的理解和掌握,提高在Linux环境下进行文件操作和输入输出的能力。 ### 回答3: 清远-c0rtexa9资料中的程序源码目录为\linux应用实验源码\06. linux系统标准io实验\。这个实验中包含了一些关于Linux系统标准输入输出的代码示例。 在Linux中,标准输入输出是三个预先定义好的文件描述符,分别是0(stdin),1(stdout),2(stderr)。这些文件描述符与输入输出设备关联,比如键盘和屏幕。使用标准输入输出可以实现用户与程序之间的交互以及程序的输出显示。 在实验源码中,我们可以看到许多用于标准输入输出的函数,包括printf、scanf、getchar、putchar等。这些函数可以帮助我们进行输入输出操作。 在实验中,我们可以通过这些代码示例学习如何从标准输入读取用户输入,如何向标准输出显示结果。例如,可以使用scanf函数读取用户输入的数据,使用printf函数将处理结果输出显示。 通过实验中的代码示例,我们可以学习到如何处理标准输入输出的错误,如何进行格式化输入输出,如何使用缓冲区进行高效的输入输出等。 总之,清远-c0rtexa9资料中的\linux应用实验源码\06. linux系统标准io实验\中包含了一些关于Linux系统标准输入输出的代码示例,通过这些示例我们可以学习到如何进行标准输入输出操作,以及一些与之相关的技巧和注意事项。这对于学习Linux系统编程和开发应用程序非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值