JavaWeb
使用java开发Web服务的技术统称为JavaWeb
B/S与C/S模式
B/S:浏览器服务器模式,
用户只需要一个浏览器就能访问服务器
C/S:客服端/服务单模式
用户需要下载客户端才能访问服务器
网络服务器
部署Web项目的平台
Tomecat
由Apache、Sun和其他公司及个人共同开发的web服务器。
免费、开源、轻量级,在中小型系统中普遍被使用。
是开发和调试Web项目的首选。
Maven
用于结构化管理jar文件的工具。
通过在Maven项目中加入某个jar文件的依赖,让其自动从Maven云仓库中下载对应的jar文件。
访问服务器的某个URL
在浏览器地址栏中输入对应的URL,属于GET提交
使用a标签,在href中输入对应的URL,属于GET提交
使用from表单,在action中输入对应的URL,通过method修改提交方式为get或post
页面向服务器提交数据的方式
使用from表单中的name属性显示提交
<form action="http://localhost:8080/day1/hero" method="get">
<input type="text" name="username">
<input type="submit">
</form>
提交的数据会暴露在地址栏中
使用from表单中的name属性隐式提交
<form action="http://localhost:8080/day1/hero" method="post">
<input type="text" name="username">
<input type="submit">
</form>
提交的数据会不会暴露在地址栏中
通过"?"参数名=值"方式提交
在地址栏中输入URL的时候,末尾加入这部分
https://www.baidu.com/s?wd=hello
在a标签的href属性中加入这部分
<a href="https://www.baidu.com/s?wd=hello">访问</a>
通过ajax提交,可以设置get/post
先导入Jquery
$.ajax({
//请求地址
url:'',
//提交数据
data:{
"参数名":值,
"参数名":值
},
//提交方式
type:"get/post",
//成功回调
success:function(res){
//res为控制层的返回值
},
//失败回调
error:function(){}
});
服务器端获取页面传递的数据
以任何方式提交到服务器端的数据都可以通过request.getParameter("name名/?后的参数名")
class TestServlet extends HttpServlet{
doGet(HttpServletRequest req,HttpServletResponse resp){
//获取表单提交的数据req.getParameter("表单中某个表单元素的name值");
String username = req.getParameter("username");
}
doPost(HttpServletRequest req,HttpServletResponse resp){
doGet();
}
}
路径
/
表示根目录,即域名:端口号,如localhost:8080
./
表示当前目录,如在localhost:8080/Web03/page.html页面中访问./index.html,相当于
localhost:8080/Web03/index.html
../
表示向上一层目录,如在localhost:8080/Web03/page.html页面中访问../index.html,相当于
localhost:8080/index.html
使用EL的${pageContext.request.contextPath}表示当前项目的上下文路径,
如localhost:8080/Web03/pages/index.html中使用
${pageContext.request.contextPath}/hello.html,
相当于localhost:8080/Web03/hello.html
servlet依赖
如果要使用servlet、filter、listener、request、response都需要该依赖
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
web.xml中的相关配置
servlet
<!-- 声明servlet -->
<servlet>
<servlet-name>自定义servlet名</servlet-name>
<servlet-class>servlet全限定名</servlet-class>
<!-- servlet初始化参数 -->
<init-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</init-param>
</servlet>
<!-- 配置servlet请求映射 -->
<servlet-mapping>
<servlet-name>自定义servlet名</servlet-name>
<url-patten>/映射名</url-patten>
</servlet-mapping>
filter
<!-- 声明filter -->
<filter>
<filter-name>自定义filter名</filter-name>
<filter-class>filter全限定名</filter-class>
</filter>
<!-- 配置filter请求映射 -->
<filter-mapping>
<filter-name>自定义filter名</filter-name>
<!--过滤器通常用于解决中文乱码,要过滤所有请求-->
<url-patten>/*</url-patten>
</filter-mapping>
listrnner
listener>
<listener-class>监听器的全限定名</listener-class>
</listener>
session
<!--设置全局session配置-->
<session-config>
<session-timeout>session有效时长,单位为分钟</session-timeout>
</session-config>
全局参数
<!--设置全局参数-->
<context-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</context-param>
跳转
请求转发forward
保存在request中的数据会一直存在
request.getRequestDispatcher("目的路径").forward(request,response);
重定向redirect
保存在request中的数据会丢失(不是同一个请求)
response.sendRedirect("目的路径");
JSP
由控制层保存数据到作用域中,跳转到jsp中展示数据。
作用域对象
pageContext request session application
内置对象
request response page pageContext session application out config exception
EL
表达式语言。替换jsp中的输出<%=%>部分。
从作用域中获取对象,通过.或[]获取属性,该属性必须存在且有get方法
${对象名.属性名}或${指定作用域.对象名["属性名"]}
从请求中获取参数,表单的name或?后的数据
${param.参数名}
逻辑判断、计算
非空判断 ${empty 对象}
计算 ${xx + yy}
获取当前项目上下文路径
${pageContext.request.contextPath}
JSTL
<!--jstl标签库-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
先导入依赖,在jsp页面中引入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
判断
<c:if test="条件">
html内容
</c:if>
遍历
<c:forEach items="要遍历的集合" var="遍历出的对象">
html内容
</c:forEach>
session
通常用session保存登录时的用户信息,实现在各个页面中共享信息或防止未登录的情况下访问。
使用session时,会创建一个JSESSIONID,保存在cookie中,在浏览器开启状态下,该JSESSIONID默认
会有30分钟的有效期,
如果在30分钟内没有对session进行操作或关闭浏览器,该cookie就会销毁,对应的session就会失效。