Servlet
servlet是由sun公司开发的动态web的一门技术
sun在这些API中提供一个接口叫Servlet,使用需要两个步骤:
-
编写一个类实现Servlet接口
-
把开发好的类部署到web服务器中
helloServlet
构建一个普通的项目先删除src目录以后学习就在这个项目里建立moudel

然后在main下建立一个java包

然后再创建一个包里边开始写类

里边是写的一些方法


ServletContext
实现数据的共享,我们可以在一个servlet中保存数据,可以在另一个servlet中拿到数据
例子:


最后配置web.xml



请求转发



HttpServletResponse
当服务端接收到客户端的请求之后,分别创建一个代表请求的HttpServletRequest对象和一个代表响应的HttpServletResponse对象
如果获取客户端请求过来的参数就用HttpServletRequest,如果响应一些信息就用HttpServletResponse。
常见应用
-
像浏览器输出消息
-
下载文件
-
要获取下载文件的路径
-
文件名是什么
-
让浏览器支持我们下载的东西
-
获取下载文件输入流
-
创建缓冲区
-
获取Outputstream对象
-
将Fileoutputstream流放入缓冲区
-
用outputstream将缓冲区数据输入到客户端
-


-
实现重定向(重点)
一个web资源收到客户端请求后,他会通知客户端去访问另一个web资源这个过程叫重定向
常见
用户登录
第三行是前两行的实现
//resp.setHeader("location","/untitled1_war/t04");
//resp.setStatus(302);
resp.sendRedirect("/untitled1_war/t04");
面试题:
重定向和转发的区别:
相同点:页面会实现跳转
不同点:
-
请求转发时,url不会变
-
重定向时url会发生变化
登陆并返回参数跳转至新的页面


应用场景

Cookie session
cookie
客户端技术(响应,请求)
-
从请求中拿到cookie信息
-


URLEncoder
URLDecoder
session(重点)
服务器技术,可以保存用户会话信息,我们可以把信息或者数据放在session中
服务器会给每一个用户创建一个session对象:sessionID
一个session独占一个浏览器,只要浏览器没关,这个session就存在
用途:保存登陆信息,保存购物车信息。。。
注销
在web.xml中注销
<session-config>
<session-timeout>15</session-timeout>
</session-config>
手动注销
HttpSession session = req.getSession();
session.removeAttribute("name");
session.invalidate();
session和cookie的区别
cookie是把用户数据写给用户浏览器,浏览器baocun
session把用户数据优写到独占的session中,服务端保存
session由服务器创建
JSP
java server pages:服务器端页面,和servlet一样,用于动态web技术 本质就是servlet
在jsp页面中:只要是java代码就会原封不动的输出;如果是html代码,就会被转化为 out.write(" ");
jsp基础语法
jsp表达式
<%--jsp表达式
作用:将程序的输出输出到客户端
<%= 变量或者表达式 %> --%>
<%= new java.util.Date() %>
jsp脚本片段
<%--jsp脚本片段--%>
<%
int sum=10;
for (int i = 0; i <sum ; i++) {
sum+=i;
}
out.print("<h1>sum="+sum+"</h1>");
%>
jsp声明
<%! %>
九大内置对象
pagecontext
request
response
session
application
config
out
page
excaption
el表达式
${ }
<% application.setAttribute("lt1","1"); //从服务器打开到关闭都有效
session.setAttribute("lt2","2"); //浏览器打开到关闭都有效
pageContext.setAttribute("lt3","3");//一个页面中有效
request.setAttribute("lt4","4");// 一次请求中有效,请求转发会携带这个数据
%>
<% String lt1 = (String) pageContext.getAttribute("lt1");
String lt2 = (String) pageContext.getAttribute("lt2");
String lt3 = (String) pageContext.getAttribute("lt3");
String lt4 = (String) pageContext.getAttribute("lt4");
String lt5 = (String) pageContext.getAttribute("lt5");%>
$(lt1)
JSP标签,JSTL标签,EL表达式
el:获取数据,执行运算,获取web开发常用对象
jsp标签
<%--指向页面传递参数--%>
<jsp:forward page="/test.jsp">
<jsp:param name="lt1" value="lt1"/>
<jsp:param name="lt2" value="lt2"/>
</jsp:forward>
<%--取出参数--%>
<%=request.getParameter("lt1")%>
<%=request.getParameter("lt2")%>
JSTL
<form action="test01.jsp" method="get">
<input type="text" name="user" value="${param.user}">
<input type="submit"value="登陆">
</form>
<c:if test="${param.user=='1'}" var="isAdmin">
<c:out value="管理员欢迎"/>
</c:if>
<c:out value="${isAdmin}"/>
javaBean
-
无参构造
-
属性私有化
-
必须有对应的get/set方法
一般和数据库字段映射 ORM:对象关系映射
MVC三层架构
model view controller 模型视图控制器
filter
-
导包
注意导入的是javax.servlet包
-
编写过滤器
-
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
filterChain.doFilter(servletRequest,servletResponse);
}
-
-
在web.xml中配置Filter
<filter>
<filter-name>test05</filter-name>
<filter-class>com.lt.filter.UnicodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>test05</filter-name>
<url-pattern>/test04/*</url-pattern>
</filter-mapping>
监听器
实现监听器
在web.xml中注册监听器
Juilt单元测试
可以执行没有main方法的方法
import org.junit.Test;
public class test001 {
@Test
public void test(){
System.out.println("你好");
}
}

事务。

浙公网安备 33010602011771号