目录
一、如何解决JSP中的中文乱码问题
将charset和pageEncoding都改为UTF-8编码格式即可
二、在JSP页面中如何使用JavaBean
1.首先创建一个JavaBean
package jspdemo;
public class demo {
private String name;
private String word;
public demo() {
// TODO Auto-generated constructor stub
}
public demo(String name,String word) {
this.name=name;
this.word=word;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
}
这里根据JavaBean的规范,写了一个demo类
JavaBean的规范:
1)JavaBean必须是一个公有类,如上述代码,都是public...
2)JavaBean中应该有一个空的构造函数。如上述代码 public demo(){}
3)不应该有公有变量,类变量都为Private私有变量
4)属性应该由一组读写方法来操作,getXxx()和setXxx()
2.我们有两种方法来获取这个JavaBean对象的同时给其属性赋值。
(1)通过<%@page import>指令来导入一个包下的所有类,然后再<%%>中new一个对象,并对该对象赋值。如下述代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="jspdemo.*"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
demo people=new demo();
people.setName("马某人");
people.setWord("mj666666");
%>
<h2>姓名:<%=people.getName() %></h2>
<h2>密码:<%=people.getWord() %></h2>
</body>
</html>
运行下代码,得到如图所示界面
我们成功在JSP页面使用了JavaBean的代码且对new的demo对象的属性进行了操作,并在JSP页面显示。
(2)我们还可以使用<jsp:useBean>标签来完成调用,对于<jsp:useBean>标签:
id属性:用于指定JavaBean对象的引用名称和其存储于属性名
class属性:指定权限名,也就是要给出这个JavaBean的路径
scope属性:用于指定JavaBean对象的存储域范围,其取值范围只能是page,request,session,和application域中的一个,默认为page。
对于这四个域,这里简单提一下它们的作用范围:
page域:变量只在当前页面起作用,也就是一个JSP页面可用
request域:从http请求到服务器处理结束,返回响应的整个过程。在这个过程中跳转多个JSP页面,都可以用此变量。
session域:有效范围当前会话,从浏览器打开到关闭。
application域:有效范围从服务器启动到服务器关闭都是可以在整个应用中使用的。
我们可以根据以上JavaBean构建如下代码:
<%@ 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>
<jsp:useBean id="p" scope="page" class="jspdemo.demo"/>
<%
p.setName("马某人(2)");
p.setWord("mj666666");
%>
<h2>姓名:<%=p.getName() %></h2>
<h2>密码:<%=p.getWord() %></h2>
</body>
</html>
我们可以得到以下页面
也是成功调用了JavaBean的对象,并对其属性进行了set和get操作,在页面上显示了出来。
3.我们可以用<jsp:setProperty>标签来设置JavaBean对象的属性,相当于调用set方法。
<jsp:setProperty>标签中
name属性:用于指定JavaBean对象的名称,和<jsp:useBean>标签中的id详细
property属性:用于指定JavaBean对象的属性。也就是你要设置的属性的名字
value属性:用于给你property指定的JavaBean对象的属性赋值,可以是字符串,也可以是表达式,它将自动转化为和所要设置的对象的类型。
param属性:用于将一个请求参数的值赋给JavaBean对象的某个属性,类型也是自动转化,但是不能和value同时使用。
那么我们根据我们的JavaBean构建一下代码
<%@ 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>
<jsp:useBean id="p" scope="page" class="jspdemo.demo"/>
<jsp:setProperty name="p" property="name" value="马某人(3)"/>
<jsp:setProperty name="p" property="word" value="mj666666"/>
<h2>姓名:<%=p.getName() %></h2>
<h2>密码:<%=p.getWord() %></h2>
</body>
</html>
我们通过<jsp:setProperty>标签设置了JavaBean属性的值,简化了代码
4.通过<jsp:getProperty>标签的到JavaBean对象属性的值
这个标签和<jsp:setProperty>标签就大同小异了,不多做叙述,但还是放一下代码和运行截图吧
<%@ 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>
<jsp:useBean id="p" scope="page" class="jspdemo.demo"/>
<jsp:setProperty name="p" property="name" value="马某人(4)"/>
<jsp:setProperty name="p" property="word" value="mj666666"/>
<h2>姓名:<jsp:getProperty name="p" property="name"/></h2>
<h2>密码:<jsp:getProperty name="p" property="word"/></h2>
</body>
</html>
JSP中JavaBean的使用大概就归纳这么多,希望大家有所收获。
三、JSP页面如何实现转发和包含
1.转发
在JSP页面中实现转发功能,从一个页面跳转到另一个页面,这里总结四种方法
(1)第一种是使用href超链接的方法来进行页面跳转。
如下述代码
<%@ 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>
<h1>这是href超链接跳转页面的测试</h1>
<h1><a href="getBean.jsp">点击跳转到getBean的页面</a></h1>
</body>
</html>
如上述代码运行结果所示,我们在jsp中通过超链接定位了getBean.jsp的位置,通过<a href=""></a>标签来实现了页面的跳转。
(2)第二种是使用提交表单的方式来进行跳转
这里就用一个简单的用户登录来测试一下,代码如下:
login页面代码
<%@ 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>
<h1>这是form表单跳转JSP页面的测试</h1>
<p>下面是你需要输入的账号密码</p>
<p>账号请输入majie</p>
<p>密码请输入mj666666</p>
<form method="post" action="login_result.jsp">
<p>用户名:<input type="text" name="username" value=""/></p>
<p>密码:<input type="password" name="word" value=""/></p>
<p>提交<input type="submit" name="login" value=""/></p>
</form>
</body>
</html>
login_result页面代码
<%@ 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>
<%
String name=request.getParameter("username");
String word=request.getParameter("word");
if(name.equals("majie")&&word.equals("mj666666")){
%>
<p>欢迎您,至高无上的管理员majie</p>
<%
}else{
%>
<p>账号或者密码错误,请重新登录</p>
<p><a href="login.jsp">点击此处重新返回登录</a></p>
<%
}
%>
</body>
</html>
运行截图:
登录成功界面
账号或密码错误界面
(3)第三种就是使用response对象重定向
通过response来进行重定向其实和在servlet中使用相差不大,代码如下
<%@ 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>
<%System.out.println("页面通过Response重定向开始"); %>
<%response.sendRedirect("login.jsp");%>
<%System.out.println("页面通过Response重定向结束,成功到达login.jsp页面"); %>
</body>
</html>
通过插旗,我们可以确定,login.jsp页面是通过response重定向转发过去的。
(4)第四种就是JSP自带的<jsp:forward>转发标签
<%@ 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>
<%System.out.println("forward转发页面开始"); %>
<jsp:forward page="login.jsp"/>
<%System.out.println("forward转发页面结束"); %>
</body>
</html>
不同于response重定向,使用<jsp:forward>标签进行页面跳转,跳转完成后,不会再回到之前的页面,而通过response重定向则还要返回,因为我们给了请求,那么响应必然还要返回。
2.包含
<%@ 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>
<h1>这是一个jsp的包含页面测试</h1>
<p>下面是包含进来的登录页面</p>
<%@include file="login.jsp" %>
</body>
</html>
关于jsp页面的包含,就是在需要的位置加一个<%@include file="jsp路径"%>即可