javaWeb总结

javaWeb总结


## 程序架构

C/S架构程序

1622016460427

B/S架构程序

1622016506132

B\S架构工作原理

B/S架构采用请求/相应模式进行交互

1622016632794

计算机通过统一资源定位符实现资源访问

  • URL:Uniform Resource Locator的缩写
  • 唯一能识别Internet上具体的计算机、目录或文件夹位置的名命约定

1622016842225

web服务器

  • 是可以向发出请求的浏览器提供文档的程序
  • 提供网上的信息浏览服务

常用的Web服务器

  • nMicrosoft:IIS
  • nApache:Tomcat
  • nOracle:WebLogic
  • nIBM:WebSphere
  • nNginx

Tomcat服务器

  • Apache Jakarta的开源项目
  • 轻量级应用服务器
  • 开源、稳定、资源占用小

下载路径:http://tomcat.apache.org/download-70.cgi

Tomcat目录结构

目录 说明
/bin 存放各种平台下用于启动和停止Tomcat的脚本文件
/conf 存放Tomcat服务器的各种配置文件
/lib 存放Tomcat服务器所需的各种JAR文件
/logs 存放Tomcat的日志文件
/temp Tomcat运行时用于存放临时文件
/webapps 当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中
/work Tomcat把由JSP生成的Servlet放于此目录下

配置Tomcat

  • 默认端口:8080
  • 通过配置文件server.xml修改Tomcat端口号
1
2
3
4
5
<Connector port="8080" 
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>

修改port的值

启动Tomcat: bin\startup.bat

访问Tomcat主页:http://localhost:端口号

停止Tomcat: bin\shutdown.bat

jsp概述

JSP(Java Server Pages)

运行在服务器端的Java页面,使用HTML嵌套Java代码实现

1622017675448

代码注释:

  • HTML注释:
  • JSP注释:<%–JSP注释–%>
  • JSP脚本中注释:<%//单行注释%><%/*多行注释*/%>

JSP执行过程

1622017994056

翻译_jsp.java——-翻译_jsp.class——执行

Web程序常见错误

404错误—找不到访问的页面或资源

  • 运行时,URL输入错误
  • 将页面放在WEB-INF下
  • 外部启动Tomcat,未部署项目

500错误—jsp页面代码有误

页面无法显示—未启动Tomcat

page指令

通过属性定义了JSP的特性,实现与JSP容器的通信

1
<%@ page  language="属性值"  import="属性值"  contentType="属性值"%>
属性 说明
language 指定JSP页面使用的脚本语言
import 通过该属性来引用脚本语言中使用到的类文件
contentType 用来指定页面的MIME类型,以及字符编码方式

out对象

  • out对象是jsp的内置对象
  • 实现数据的输出显示
属性 说明
print 向页面输出显示
println 向页面输出显示,在结尾处添加换行

获取表单提交的数据

请求对象:request

1
public String getParameter(String name)

实例:

1
2
3
4
//html代码
<input type="text" name="userName">
//jsp代码
String userName = request.getParameter("userName");

get与post区别

参数出现在URL中
长度限制
安全性
URL可传播

request对象常用方法

方法名称 说明
String getParameter(String name) 根据表单组件名称获取提交数据
String[ ] getParameterValues(String name) 获取表单组件对应多个值时的请求数据
void setCharacterEncoding(String charset) 指定每个请求的编码
RequestDispatcher getRequestDispatcher(String path) 返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求

内置对象

jsp已经准备好的,可以直接使用的对象

  • 请求对象:requesst
  • 输出对象:out
  • 相应对象:response
  • 应用程序对象:application
  • 会话对象:session
  • 页面上下文对象:pageContext
  • 页面对象:page
  • 配置对象:config
  • 异常对象:exception

中文乱码

jsp中默认使用的字符编码方式:ios-8859-1,不支持中文

常见的支持中文的编码方式

编码方式 收录的字符
gb2312 常用简体汉字
gbk 简体和繁体汉字
utf-8 所有国家需要的字符

解决中文乱码

设置请求和相应的编码格式

1
2
3
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
<%@ page language="java" contentType="text/html; charset=utf-8"%>

get请求出现乱码

  • 治标的方法:new String( s.getBytes(“iso-8859-1”), “utf-8” );
  • 治本的方法:配置tomcat\conf\server.xml文件
1
2
<Connector connectionTimeout="20000" port="8080" 
protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

在请求中存储属性

在请求中保存属性

1
2
public void setAttribute(String name,Object o);
request.setAttribute("mess", "注册失败");

在请求中获取属性

1
public Object getAttribute(String name)

1.在使用属性值的时候要做非空判断,否则会出现空指针异常

2.它的返回值类型是Object类型,需要做数据类型的转换

传发与重定向

转发

RequestDispatcher对象==================forward()方法

1
2
3
request.getRequestDispatcher("url").forward(request, response)
<jsp:forward page="url" />

重定向

将用户请求重新定位到一个新的URL

1
2
response.sendRedirect("url")

区别

1622025998959

比较项 转发 重定向
URL变化
重新发出请求 不会
是否携带请求
目标URL要求 仅本Web应用 任意URL

重定向是客户端行为,转发是服务器行为

session对象

  • 一个会话就是浏览器与服务器之间的一次通话
  • 会话可以在多次请求中保存和使用数据

用法

1
2
3
4
5
6
7
8
public void setAttribute(String name, Object value);
//用法:
session.setAttribute("userName", "张三丰");

public Object getAttribute(String name);
//用法:
String userName=(String)session.getAttribute("userName");

每个session都有一个唯一的sessionid

1
2
3
public String getId();
session.getId();

会话的清除和过期

若没有清理机制,会导致性能问题或服务器崩溃

  • 程序主动清除session数据
  • 服务器主动清除长时间没有再次发出请求的session

程序主要清除session数据

设置会话失效

1
2
session.invalidate();

移除会话的一个属性

1
2
session.removeAttribute("userName");

服务器主动清除长时间没有再次发出请求的session

设置会话过期时间

方法一

1
2
public void setMaxInactiveInterval(int interval);

方法二:设置web.xml文件

1
2
3
4
<session-config>
<session-timeout>30</session-timeout>
</session-config>

cookie以文件方式保存数据

添加数据

1
2
public void addCookie(Cookie cookie)

获取数据

1
2
public Cookie[] getCookies()

设置有效期

1
2
public void setMaxAge(int expiry)

application

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>
<%
//从全局对象中获取数据
Integer count = (Integer)application.getAttribute("count");
if (count == null){
application.setAttribute("count",1);
}else{
application.setAttribute("count",count+=1);
}
%>
<h1 style="color: red">
Good Morning! have a good day!!
</h1>
<span>
当前访问人数:<%=count%>
</span>
</body>

三个对象对比

request、session、application

相同点:都可以储存属性

不同点:

  • request中存储的数据仅在一个请求中可用
  • session中存储的数据在一个会话的有效期内可用
  • application中存储的数据在整个Web项目中可用