首页 > 代码库 > JSP&Servlet
JSP&Servlet
2.5、跳转指令
本次预计讲解的知识点
1、 跳转指令的使用形式;
2、 跳转的特点。
具体内容
从一个JSP页面可以跳转到另外一个JSP或其它页面。跳转指令依然属于标签指令形式,
所以在跳转指令操作完成后依然要进行标签完结,对于跳转指令有以下两种定义形式:
· 定义一:不向跳转页面传递参数:
|- <jsp:forward page="路径"/>
· 定义二:向跳转页面传递参数:
<jsp:forward page="路径">
<jsp:param name="参数名称" value="http://www.mamicode.com/参数内容"/>
<jsp:param name="参数名称" value="http://www.mamicode.com/参数内容"/>
<jsp:param name="参数名称" value="http://www.mamicode.com/参数内容"/>
... </jsp:forward>
范例:实现跳转
<%@ page pageEncoding="UTF-8"%>
<h1>HELLO FORWARD</h1>
<%
String str = "WORLD" ;
%>
<%--<jsp:forward page="param.jsp"/>--%>
<jsp:forward page="param.jsp">
<jsp:param name="paramA" value="http://www.mamicode.com/HELLO"/>
<jsp:param name="paramB" value="http://www.mamicode.com/"/>
</jsp:forward>
以上的代码执行之后有一个特点:跳转之后地址栏不会发生任何的改变,但是页面的内
容发生了改变,那么这样的跳转我们称为服务器端跳转。当然,与服务器端跳转还有一种对应
的形式:客户端跳转。
<script type="text/javascript">
window.location = "param.jsp" ;
</script>
以上的操作与直接编写超链接区别不大,跳转之后地址栏上会发生地址的改变,也就是
说变为了跳转的目标页面路径,所以这样的跳转称为客户端跳转。
结论:
地址栏不改变的跳转称为服务器端跳转;
地址栏改变的跳转称为客户端跳转。
总结
1、 跳转指令与包含指令一样都必须在每次使用后完结;
2、 forward跳转之后地址栏不改变,属于服务器端跳转。
2.6、MyEclipse开发工具
本次预计讲解的知识点
以后主要使用的就是MyEclipse。
具体内容
Eclipse本身只提供有Java的开发环境,而后来如果要想开发Java EE程序,需要使用一系列
的插件。所以后来由IBM开发出了一个MyEclipse的插件(收费),从此Java EE的开发就变得非常容易了,而慢慢的MyEclipse使用人群也越来越多了。 但是后来随着发展,MyEclipse开始形成一个独立的产品,也就是说如果你自己直接安装的话,那么安装的MyEclipse里面就集成有了Eclipse。 本次使用的版本是MyEclipse 2015(在学习到Spring之前根本感觉到它与2014的区别)。 MyEclipse 2015要比MyEclipse 2014麻烦,主要麻烦在配置服务器上。如果是MyEclipse 2014,直接打开配置中心就可以配置服务器了,但是2015不行。
1、 建立一个新的WEB项目;
2、 在你编写代码之前首先要进行服务器的配置;
此时会继续将项目部署到Tomcat之上,部署的目录就是TomcatHOME/webapps。
再来一个“publish”发布到Tomcat上。
默认情况下如果要访问虚拟目录(可能是自动部署也可能是手工部署),那么出现的一定是
一个目录的列表,但是如果你的项目里面配置了欢迎页。就会自动显示欢迎页,
在WEB-INF/web.xml文件里面有欢迎页面的配置。
<welcome-file-list>
<welcome-file>MyJsp.jsp</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
总结
基本认知:工具是建立在你代码已经非常熟练的基础之上使用的。
2.7、综合实战:用户登录
用户在登录表单上输入登录信息,主要是输入用户名和密码信息,而后提交到一个指定的
jsp页面,在这个页面上进行用户名和密码的检查,如果通过检查,表示合法用户,则跳转
到欢迎页上进行欢迎信息的显示,如果出现了错误,则跳转回登录页。并且显示错误提示
信息。
需要准备出数据表以及相关的测试数据,才可以实现登录验证。
表名称为member表,如果要想进行验证最简单的做法可以使用如下结构的SQL语句:
SELECT COUNT(mid) FROM member WHERE mid=? AND password=?
· 输入正确的用户名和密码:数据量的统计为1;
· 输入错误的用户名或密码:数据量的统计为0;
一共需要建立三个页面:login.jsp、check.jsp、welcome.jsp。
1、 用户通过login.jsp进行信息的输入;
2、 表单提交给check.jsp页面,进行检查,如果登录失败,则跳转回login.jsp页面,
并且显示错误提示信息;
3、 如果登录成功,跳转到welcome.jsp页面;
以上的基础数据库验证完成之后为了保证程序可以正常编写,还需要在login.jsp页面中
加入JavaScript的验证。建立一个login.js文件;
总结
只要是系统开发,数据的检查就会分为两个部分:
· 服务器的验证:由JSP文件负责验证;
· 客户端验证:由JavaScript完成;
因为很多时候由于客户端的限制,有可能JavaScript验证会失效,所以任何的健壮的系统
都一定要分两个地方进行验证。
4.2、request内置对象(乱码解决)
在之前曾经发现过,如果在表单里面输入中文,那么有可能提交后就会变为中文乱码。
范例:输入表单
<meta charset="UTF-8">
<form action="input.jsp" method="post">
请输入内容:<input type="text" name="msg" id="msg">
<input type="submit" value="http://www.mamicode.com/提交">
</form>
范例:取得输入内容
<%@ page pageEncoding="UTF-8"%>
<%
String str = request.getParameter("msg") ;
%>
<h1>输入内容:<%=str%></h1>
实际上针对于乱码解决需要考虑两种情况:
· POST提交请求(表单上使用):可以直接使用ServletRequest父接口定义的方法:
|- 统一请求编码:public void setCharacterEncoding(String env) throws UnsupportedEncodingException;
· GET提交请求(直接输入访问路径、表单):
|- 如果使用了GET请求,那么所有的编码方式就使用的是ISO8859-1编码,
所以在接收之后需要进行编码的转换:String str = new String(request.getParameter("msg").getBytes("ISO8859-1")) ;
在HttpServletRequest接口里面有一个方法,此方法可以判断出当前的请求模式:
· 取得请求模式:public String getMethod();
范例:解决post请求编码
<%@ page pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8") ;
String str = request.getParameter("msg") ;
%>
<h1>输入内容:<%=str%></h1>
总结:关于POST与GET请求的区别?
· POST请求主要用在表单上,处理路径只是提交路径不会改变;
· 只要是用户直接进行页面访问,那么请求类型一定就是GET请求,表单上也可以使用
GET请求,但是GET请求有一个问题,它会将所有的请求参数都附加到表单访问路径上,
所以不能够传递过多的内容,一般只能够传递4K ~ 5K。
JSP&Servlet