来源:遇妳 发布时间:2020-05-12 11:58:39 阅读量:1681
静态web项目与动态web项目的区别
1.传统意义上的静态web项目是指使用HTML+CSS+JS等前端技术做成的页面,静态web项目不会随着用户的操作时间、操作地点等改变;而动态web项目可以根据用户的请求动态的作出响应。
2.静态web项目与动态web项目最大的区别是动态web项目可以进行数据库的操作,而静态web项目无法进行数据库的操作。
动态web项目执行原理
如图1所表示的一样,当客户端通过浏览器向服务端请求web资源时,web服务器插件会先判断客户端请求的web资源的类型,若是静态web资源则将客户端请求交给web服务器,并从文件系统中取出资源响应给客户端;若客户端请求的是动态web资源,则在web容器中进行处理,主要是通过拼凑代码(拼凑html代码)的方式动态的生成数据并通过web服务器响应给客户端。
JSP九大内置对象及常用方法
out对象
1.out对象的作用
JspWriter类的实例,用于把结果输出至网页上。
2.out对象常用方法
out.print(dataType dt):输出Type类型的值
request对象(请求对象)
常用方法:
1.void setCharacterEncoding():设置请求的编码方式
2.String getParameter(String name):返回name指定参数的参数值
3.String[] getParameterValues(String name):返回包含参数name的所有值的数组
4.void getRequestDispatcher(String location).forward(requset,response):请求转发,页面跳转的一种方式
下面通过一个简单的注册功能串一下上面的方法
注册页,用于收集用户信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="check.jsp" method="post">
姓名:<input type="text" name="uname"/><br/>
密码:<input type="password" name="upwd"/><br/>
爱好:<br/>
<input type="checkbox" name="uhobbies" value="足球"/>足球
<input type="checkbox" name="uhobbies" value="篮球"/>篮球
<input type="checkbox" name="uhobbies" value="乒乓球"/>乒乓球<br/>
<input type="submit" value="提交"/>
</form>
</body>
检查页,用于接收用户信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>检查</title>
</head>
<body>
<%
/*
request对象常用方法
1.void setCharacterEncoding():设置请求的编码方式
2.String getParameter(String name):返回name指定参数的参数值
3.String[] getParameterValues(String name):返回包含参数name的所有值的数组
4.void getRequestDispatcher(String location).forward(requset,response):请求转发,页面跳转的一种方式
*/
// 设置请求的编码方式
request.setCharacterEncoding("utf-8");
// 根据name取值
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
String[] hobbies = request.getParameterValues("uhobbies");
%>
<!--显示用户信息-->
提交成功,信息如下:<br/>
姓名:<%=name%><br/>
密码:<%=pwd%><br/>
爱好:<br/>
<%
if (hobbies != null){
for (String hobby : hobbies){
out.print(hobby+" ");
}
}
%>
</body>
</html>
开启tomcat服务器访问login.jsp,进行注册操作
页面跳转到check.jsp进行取值
response(响应对象)
常用方法
response常用方法
1.void addCookie(Cookie cookie):服务端向客户端增加一个Cookie对象
2.void sendRedirect(String location):重定向,页面跳转的一种方式
3.void setContentType(String type):设置响应编码
下面通过一个登陆操作演示一下上面的常用方法,用户通过login.jsp页面输入用户名、密码;页面跳转到check.jsp进行校验,若用户名等于张三且密码等于abc则跳转到欢迎页,否则登陆失败。
登陆页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆页</title>
</head>
<body>
<form action="check.jsp" method="post">
姓名:<input type="text" name="uname"/><br/>
密码:<input type="password" name="upwd"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>检查页</title>
</head>
<body>
<%
/*
response常用方法
1.void addCookie(Cookie cookie):服务端向客户端增加一个Cookie对象
2.void sendRedirect(String location):重定向,页面跳转的一种方式
3.void setContentType(String type):设置响应编码
*/
// 设置响应的编码方式
request.setCharacterEncoding("utf-8");
// 取出用户信息
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
// 进行校验
if (name.equals("张三") && pwd.equals("abc")){
// 登陆成功,跳到欢迎页
// 重定向方式跳转
// response.sendRedirect("success.jsp");
//请求转发方式
request.getRequestDispatcher("success.jsp").forward(request,response);
}else {
// 登陆失败,跳回登陆页重新登陆
request.getRequestDispatcher("login.jsp").forward(request,response);
out.print("用户名或密码有误!");
}
%>
</body>
</html>
欢迎页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎页</title>
</head>
<body>
登陆成功,欢迎您:<br/>
<%
String name = request.getParameter("uname");
out.print(name); //登陆成功,欢迎您: null
%>
</body>
</html>
将项目部署到tomcat服务器并访问login.jsp
页面跳转到check.jsp页面进行校验
关于重定向和请求转发
cookie对象
1.Cookie对象不是内置对象,必须使用new关键字创建,由服务端产生并且在响应的同时发送给客户端,相当于我们平时理解的缓存
2.常用方法
public Cookie(String name,String value)
String getName():获取name
String getValue():获取value
void setMaxAge(int expiry):设置最大有效时间
3.服务端准备Cookie:response.addCookie(String name,String value)
客户端获取Cookie:Cookie[] request.getCookies():一次性拿到所有的Cookie对象,然后再遍历取出
下面通过一个记住用户名的例子串一下上面的方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆页</title>
</head>
<body>
<%!
String uname;
%>
<%
// 标记用来记录Cookie是否失效
boolean flag = false;
// 接收Cookie
Cookie[] cookies = request.getCookies();
// 进行判断并取出用户信息
for (Cookie cookie : cookies){
if (cookie.getName().equals("uname")){ // 若能执行到这一步说明拿到了用户名
uname = cookie.getValue();
//flag = true; // 能进行到这一步说明Cookie未失效
}
}
if (!flag){
out.print("Cookie已失效!");
}else {
out.print("Cookie:"+uname);
}
%>
<form action="addCookie.jsp" method="post">
姓名:<input type="text" name="uname" value="<%=(uname==null?"":uname)%>"/><br/>
密码:<input type="password" name="upwd"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>服务端</title>
</head>
<body>
<!--
Cookie对象
1.Cookie对象不是内置对象,必须使用new关键字创建,由服务端产生并且在响应的同时发送给客户端,相当于我们平时理解的缓存
2.常用方法
public Cookie(String name,String value)
String getName():获取name
String getValue():获取value
void setMaxAge(int expiry):设置最大有效时间
3.服务端准备Cookie:response.addCookie(String name,String value)
客户端获取Cookie:Cookie[] request.getCookies():一次性拿到所有的Cookie对象,然后再遍历取出
-->
<%
// 设置请求编码方式
request.setCharacterEncoding("utf-8");
// 取出用户信息
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
// 创建Cookie对象
Cookie cookie = new Cookie("uname",name);
// 设置Cookie最大有效时间
cookie.setMaxAge(60);
// 增加Cookie对象
response.addCookie(cookie);
// 响应将Cookie发送给客户端
response.sendRedirect("A.jsp");
%>
</body>
</html>
session对象
session对象:
1.session中文翻译为会话,表示用户从登陆到退出登陆的这个过程,session由服务端产生,通过Cookie响应至客户端
2.当用户第一次访问服务端时,服务端会自动为这个用户产生一个sessionId,并且自动产生一个name为JSESSIONID的Cookie响应至客户端
session常用方法
1.String getID():获取sessionId
2.boolean isNew():判断用户是否是第一次登陆
3.void invalidate():使sessio失效(退出登陆、注销)
4.void setAttribute():设置属性值
5.Object getAttribute():获取属性值,需要进行强制类型转换
6.void setMaxInactiveIntervval():设置最大有效非活动时间
下面通过一个实例演示session对象常用方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action="check.jsp" method="post">
姓名:<input type="text" name="uname"/><br/>
密码:<input type="password" name="upwd"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>检查</title>
</head>
<body>
<%--
session对象:
1.session中文翻译为会话,表示用户从登陆到退出登陆的这个过程,session由服务端产生,通过Cookie响应至客户端
2.当用户第一次访问服务端时,服务端会自动为这个用户产生一个sessionId,并且自动产生一个name为JSESSIONID的Cookie响应至客户端
session常用方法
1.String getID():获取sessionId
2.boolean isNew():判断用户是否是第一次登陆
3.void invalidate():使sessio失效(退出登陆、注销)
4.void setAttribute():设置属性值
5.Object getAttribute():获取属性值,需要进行强制类型转换
6.void setMaxInactiveIntervval():设置最大有效非活动时间
--%>
<%
// 设置编码
request.setCharacterEncoding("utf-8");
// 取出用户信息进行判断
String name = request.getParameter("uname");
String pwd = request.getParameter("upwd");
if (name.equals("张三") && pwd.equals("abc")){
// 登陆成功,session中才有必要保存用户信息
session.setAttribute("uname",name);
session.setAttribute("upwd",pwd);
System.out.println("sessionId:"+session.getId());
Cookie cookie = new Cookie("uname",name);
response.addCookie(cookie);
// 设置最大有效非活动时间
// session.setMaxInactiveInterval(10);
// 请求转发
request.getRequestDispatcher("welcome.jsp").forward(request,response);
}else {
// 登陆失败,重新登陆
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>欢迎页</title>
</head>
<body>
登陆成功,欢迎您:<br/>
<%
String name = (String) session.getAttribute("uname");
if (name != null) {
out.print(name);
%>
<a href="invalidate.jsp">注销</a>
<%
}else {
// 重新登陆(防止用户直接通过地址栏的方式访问welcom.jsp页面)
response.sendRedirect("login.jsp");
}
%>
</body>
</html>