JavaWeb JSP 配置Tomcat 请求转发功能的实现

5 篇文章 0 订阅

get与post区别

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

request对象

作用

处理客户端请求

方法

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

示例

<%
    //读取用户名和密码
    String name = request.getParameter("name");
    String pwd = request.getParameter("pwd");
    ……//HTML页面
    //读取复选框选择项
    String[] channels = request.getParameterValues("channel");
    if (channels != null) {
for (String channel : channels) {
out.println(channel);
}
    }
%>
​

内置对象

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

解决字符集编码问题

post方式

<%   // 以POST方式提交数据时
        // 设置读取请求信息的字符编码为UTF-8
        request.setCharacterEncoding("UTF-8");  
        // 读取用户名和密码
        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
%>
​

get方式1

<%   // 以GET方式提交数据时
        // 读取用户名和密码
        String name = request.getParameter("name");
        // 对请求数据进行字符编码
        name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
%>
​

get方式2

在Tomcat目录结构\conf\server.xml中设置字符集
<Connector  port="8080"  protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"  URIEncoding="UTF-8"
/>

response对象

作用

响应客户请求并向客户端输出信息

方法

void sendRedirect(String location)//重定向,客户端将重新发送请求到指定的URL

重定向与转发

转发

作用

转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递

特点

客户端浏览器的地址栏不会显示转向后的地址

举例

request.getRequestDispatcher("welcome.jsp").forward(request, response);

重定向

作用

重定向是在客户端发挥作用,通过发送一个新的请求实现页面转向

特点

在地址栏中可以显示转向后的地址

举例

response.sendRedirect("welcome.jsp");

session对象

定义

一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程

常用方法

方法名称说明
String getId()获取sessionid
void setMaxInactiveInterval(int interval)设定session的非活动时间
int getMaxInactiveInterval()获取session的有效非活动时间(以秒为单位)
void invalidate()设置session对象失效
void setAttribute(String key, Object value)以key/value的形式保存对象值
Object getAttribute(String key)通过key获取对象值
void removeAttribute(String key)从session中删除指定名称(key)所对应的对象

注意点

1.每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别) 2.通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

举例

<%
if ("admin".equals(name) && "admin".equals(pwd)) {  // 如果是已注册用户
session.setAttribute("login", name);
 // 设置session过期时间
session.setMaxInactiveInterval(10*60);
request.getRequestDispatcher("admin.jsp").forward(request, response);
} else {
response.sendRedirect("index.jsp");
} 
%>
​
<%
String login = (String) session.getAttribute("login");
if (login == null) {
    response.sendRedirect("index.jsp");
    return;
} %>
​

关于失效

手动设置失效:

session.invalidate()

超时失效

1.通过setMaxInactiveInterval( )方法,单位是秒

session.setMaxInactiveInterval(600);

<%
session.setAttribute("login","admin"); 
session.setMaxInactiveInterval(600); 
response.sendRedirect("admin.jsp"); 
%>

2.通过设置项目的web.xml或Tomcat目录下的/conf/web.xml文件,单位是分钟

<session-config>
    <session-timeout>10</session-timeout>
</session-config>

cookie

简介

是Web服务器保存在客户端的一系列文本信息

作用

对特定对象的追踪 实现各种个性化服务 简化登录

安全性

容易泄露信息

创建对象

Cookie newCookie = new Cookie(String key, String value);

写入

response.addCookie(newCookie);

读取

Cookie[] cookies = request.getCookies();

常用方法

方法名称说 明
void setMaxAge(int expiry)设置cookie的有效期,以秒为单位
void setValue(String value)在cookie创建后,对cookie进行赋值
String getName()获取cookie的名称
String getValue()获取cookie的值
int getMaxAge()获取cookie的有效时间,以秒为单位

cookie与session的对比

sessioncookie
在服务器端保存用户信息在客户端保存用户信息
session中保存的是Object类型cookie保存的是 String类型
随会话的结束而将其存储的数据销毁cookie可以长期保存在客户端
保存重要的信息保存不重要的用户信息

application对象

作用

实现用户之间的数据共享

常用方法

方法名称说 明
void setAttribute(String key, Object value)以key/value的形式保存对象值
Object getAttribute(String key)通过key获取对象值
String getRealPath(String path)返回相对路径的真实路径

示例

 <%
    Integer count = (Integer) application.getAttribute("count");
    if (count != null) {
        count = 1 + count;
    } else {
        count = 1;      
    }
    application.setAttribute("count", count);
%>
​

作用域分类

page作用域

对应的作用域访问对象为pageContext

范围

指本JSP页面的范围

request作用域

对应的作用域访问对象为request

范围

一次请求

session作用域

对应的作用域访问对象为session

范围

一次会话

application作用域

对应的作用域访问对象为application

范围

整个应用的上下文

jsp内置对象回顾

内置对象名称说明
out用于向客户端输出数据
request主要用于处理客户端请求的数据信息
response用于响应客户端请求并向客户端输出信息
session用于记录会话状态的相关信息
application类似于系统的全局变量,用于实现Web应用中的资源共享

第一 用户界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body background="a.jpg" >

	
	<style>
	body{background:url(a.jpg) top left;
	background-size:50%;}
	</style>
	<h1 style="color:pink" >
	 <% out.print("强将手下无弱兵"); %>
	</h1>
	<font color="red" size="3"> 
	欢迎来到实力至上主义的教室
	</font>
	<h1 style="color:orange" >
	吃好喝好玩好
	</h1>
	
	<%		
				
		if(application.getAttribute("count")==null){			
			application.setAttribute("count", 1);
		}else{	
			int count=(int)application.getAttribute("count");
			count+=1;
			application.setAttribute("count", count);
		}					
		out.print("亲爱的用户你已经访问了这个页面"+(int)application.getAttribute("count")+"次了 注意休息!!!");
	
	%>
	<% 
	//获取到的cookie 遍历 给初始账号 属性赋值  用户不用二次填写 增加用户体验
	Cookie[] cookies=request.getCookies();
	Cookie Cookie1= new Cookie("username","");
	Cookie Cookie2= new Cookie("sex","");
	for(Cookie cookie:cookies){
		if("username".equals(cookie.getName())){
			Cookie1=cookie;
		}
		if("sex".equals(cookie.getName())){
			Cookie2=cookie;
		}
	}
	%>
	
	<form action="createUser.jsp" method="post" autocomplete="off">
	<h5 style="color:green"><span>姓名:</span>	<input type="text" name="name" value="<%=Cookie1.getValue() %>"></h5>
	<h5 style="color:green"><span>性别:</span>	<input type="text" name="sex" value="<%=Cookie2.getValue() %>"></h5>
	<h5 style="color:green"><span>年龄:</span>	<input type="text" name="age"></h5>
	<h5 style="color:green"><span>电话:</span> <input type="text" name="phone"></h5>
	<h5 style="color:green"><span>爱好 打球:</span> <input type="checkbox" name="hobby" value="打球"></h5>
	<h5 style="color:green"><span>打代码:</span> <input type="checkbox" name="hobby" value="打代码"></h5>
	<h5 style="color:green"><span>看源码:</span> <input type="checkbox" name="hobby" value="看源码"></h5>
	<h5 style="color:green"><span>听歌:</span> <input type="checkbox" name="hobby" value="听歌"></h5>

  		<button>提交</button>
	</form>

	
	
	
	
	
</body>
</html>

第二步 后端处理转发界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body background="37a9b.jpg" >

		<style>
		body{background:url(37a9b.jpg) top left;
		background-size:10%;}
		</style>
		<%! boolean isnull(String str1){
			if(str1==null || "".equals(str1.trim())){
				return true;
			}			
			return false;
		}%>
		<%
		request.setCharacterEncoding("UTF-8");
		String name =request.getParameter("name");
		
		String sex =request.getParameter("sex");

		String age =request.getParameter("age");
	
		

		String phone =request.getParameter("phone");
	
		String[] hobbys =request.getParameterValues("hobby");

		StringBuilder str=new StringBuilder("");
		if(isnull(name)||isnull(sex)||isnull(age)||isnull(phone)||hobbys==null|| hobbys.length<1){
			str.append("输入值为空");
		}else if(!("男".equals(sex)||"女".equals(sex))){
			str.append("输入值性别不对");
		}
		else if(Integer.parseInt(age)<0||Integer.parseInt(age)>300){			
			str.append("输入值年龄不对");
		}		
		else if(phone.length()!=11){
			str.append("输入值电话长度不对");
		}else if(hobbys.length == 0){
			str.append("输入值为空");
		} 		
		if(str.length()==0){
			str.append("成功");
		} 
		Cookie newCookie=new Cookie("username",name);
		response.addCookie(newCookie);
		Cookie newCookie1=new Cookie("sex",sex);
		response.addCookie(newCookie1);
		
		//request.setAttribute("message", str);
		//转发     同一个请求
		//转发地址是不变的 url
		//通过request.setAttribute()也可以实现值得传递
		
		//request.getRequestDispatcher("index.jsp").forward(request,response); 
		
		//重定向  不同一个请求
		//转发地址是变的 url
		session.setAttribute("message", str);
		//session.invalidate();
		session.setMaxInactiveInterval(10);
		response.sendRedirect("index.jsp");
		%>
</body>
</html>

第三步 转发的界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body >
<style>
	body{background:url(deb.jpg) top  left ;
	background-size:50%;}
	</style>
 	<%= 
 	"注册"+ session.getAttribute("message")
 	%>
</body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
购物车系统是一个常见的电子商务功能,能够为用户提供方便快捷的购物体验。在JavaWeb开发中,我们可以利用Servlet、MySQL、JSPTomcat实现购物车系统。 首先,我们需要使用MySQL数据库来存储商品信息、用户信息和订单信息等。可以创建相应的数据库表来存储这些数据,并通过Java程序连接数据库进行增删改查操作。 接下来,在Servlet中编写相应的逻辑来处理用户的购物车操作。当用户点击添加商品到购物车按钮时,可以将商品的信息存储到Session中,这样就可以在用户的不同请求之间保持购物车的信息不丢失。同时,可以编写其他Servlet来处理购物车中的商品数量修改、商品删除等操作。 在JSP中,可以使用JSTL标签库来展示用户的购物车信息。通过循环遍历Session中的商品列表,可以将商品名称、价格、数量等信息展示出来,并提供修改和删除商品的链接。 最后,利用Tomcat作为服务器来部署我们的Web应用程序。将编写好的Servlet和JSP文件打包成一个war包,然后将其部署到Tomcat服务器上即可。用户可以通过浏览器访问我们的网站,添加商品到购物车,并进行相关的操作。 除了基本的购物车功能,我们还可以进一步扩展购物车系统,例如实现用户登录注册功能、生成订单、进行支付等。通过不断改进和迭代,可以让购物车系统变得更加完善和实用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kjshuan

点个赞就好啦!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值