servlet基础(1)

一.Servlet的请求转发和重定项
1.请求转发和重定项是什么:

请求转发:
request.getRequestDispatcher("/service02").forward(request, response);
重定项:
response.sendRedirect("/ServletDay02-1/service02");

2.请求转发和重定项的区别:

服务器中从一个资源跳到另一个资源的行为有两种:1.请求转发 2.重定向	
1.请求转发不会改变地址栏
	重定向会将地址栏改变	
		
2.请求转发可以通过request中的Attribute属性传递数据
  重定向不可以使用request传数据		
  
3.请求转发的请求资源不可以是本服务以外的资源
  重定向可以请求本服务器以外的资源		
  
4.无论是请求转发还是重定向过后,都不要在其代码下面添加其他代码

二:Servlet中的路径问题

如果一次请求是浏览器行为,则“/”表示服务器根目录(127.0.0.1:8080/)
如果一次请求是服务器的内部行为,则“/”表示项目的根目录(127.0.0.1:8080/project_name/)

简单的说:请求转发,servlet代码地址都属于服务器行为
重定向(重定向的第二次跳转是由浏览器发起),js,css引用路径,html中form表单提交地址都属于浏览器行为

"/"相对服务器根目录或者是项目根目录的位置
不加"/"表示相对路径,相对于本层的路线,如果要跳转到上一层,可表示为"../"

三:form表单及获取数据的方式

1.form 表单:(method为get/post)
<form action="service01" method="post">
			姓名:<input type="text" name="userName" value="小华" /><br/>
			密码:<input type="password" name="passwd" value="aaa"/><br/>
			爱好:<br/>
				   篮球<input type="checkbox" name="favarite" value="篮球" /><br/>
				   足球<input type="checkbox" name="favarite" value="足球" /><br/>
				   游泳<input type="checkbox" name="favarite" value="游泳" /><br/>	
	    <p><button type="submit">登陆</button></p>		
		</form>
		
2.Servlet获取方法:
(1).例如name,password这类只有一条数据的,可以使用如下代码:
		Object name = request.getParameter("userName");
		Object passwd = request.getParameter("passwd");
		
(2).如果是checkbox这样的复选框,需要使用如下方法:
		String[] fa = request.getParameterValues("favarite");
		for(int i=0;i<fa.length;i++){
			System.out.println(fa[i]);
		}

四.Servlet乱码问题解决方法:

(暴力解决方法)
1.在Java代码中设置:
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		
2.在Tomcat的servlet.xml文件中加上 :useBodyEncodingForURI="true",如下
   <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>  
   
3.将eclips配置中编码格式改为UTF-8:
Windows-->Preference-->workspace-->Text file encoding(在界面最下方左边)

(对症下药)
1.浏览器发动到服务器的数据有乱码
	1)请求方式为GET
	解决:
	①打开tomcat的server.xml配置,在<Connector>添加属性 useBodyEncodingForURI="true" (针对tomcat7及以下)
	②获取数据前,添加 request.setCharacterEncoding("utf-8");
	2)请求方式为POST
	解决:
	①获取数据前,添加 request.setCharacterEncoding("utf-8");
2.服务器返回给浏览器的数据有乱码
	解决:
	response.setContentType("text/html; charset=utf-8");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值