一、工具准备
- idea新建web工程
- 配置Tomcat(选择本地自己下载的tomcat,并在idea中设置)
- 在library中导入编写代码的相关依赖
二、源代码
- 登陆页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<%--<meta http-equiv="Content-Type" content="text/html";charset="UTF-8">--%>
<title>登陆页面</title>
</head>
<body>
<form action="show.jsp" method="GET">
用户名:<input type="text" name="uname"/><br/>
密 码:<input type="password" name="upwd"/><br/>
年 龄:<input type="text" name="uage"/><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>
</html>
2. 信息存储显示页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>show页面</title>
</head>
<body>
<%
//设置编码
request.setCharacterEncoding("utf-8");
String name = request.getParameter("uname");
int age = Integer.parseInt(request.getParameter("uage"));
String pwd = request.getParameter("upwd");
String[] hobbies = request.getParameterValues("uhobbies");
%>
注册成功,信息如下:<br/>
用户名:<%=name %> <br/>
年 龄:<%=age %> <br/>
密 码:<%=pwd %> <br/>
爱 好: <br/>
<%
for (String hobby:hobbies)
{
out.print(hobby+" ");
}
%>
</body>
</html>
三、遇到的问题
- jsp乱码: jsp执行是先编译成java,再到class运行的
解决方法:在代码第一行加入<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8” %>
- idea 提示Cannot resolve method 'setAttribute(java.lang.String, java.lang.String),是因为没有导入相关依赖,解决方案
卢宥晟博客https://blog.csdn.net/weixin_41298572/article/details/86767065
四、 关于Cookie和Session
- Cookie:服务端产生的,返回给客户端储存在本地的,相当于本地缓存,不是内置对象。作用:提高服务端访问效率,但是安全性差,key-value格式;
服务端增加:response.addcookie(Cookie,cookie); //服务端发送给客户端
;
客户端获取:request.getCookies(); //返回的是数组
【零存整取,取只能一起获取】 - session就是会话:eg一次浏览+点击购买+关闭,就是一次会话,存在于服务端,是内置对象。
- 两者关联:客户端第一次产生会话,在服务端会产生一次session,用于保存用户信息,且自带sessionId;服务端产生cookie,里面自带key=“JSESSIONID”,value=“服务端的sessionId的值”,此时,两个就可根据sessionId一一对应,也就是说客户端与服务端就是这样关联到一起了(记住用户名密码功能)。
五、 关于请求转发request和重定向response
- 请求转发 2. 重定向
地址是否改变 | 不变 | 变
是否保留第一次请求数据 | 保留 | 不保留
请求次数 | 1次 | 2次
- 请求转发是服务器内部跳转到另一个jsp页面,用户不知道;
而重定向,例如登陆页面,登陆成功,是用户>check.jsp>用户>success.jsp>用户显示登陆成功
getrequestDispatcher("b.jsp").forward(request,response)//请求转发
void sendRedirect(String location) throws InException//页面的跳转方式,重定向