1.Javabean简介:
符合某种特定规范的Java类,
使用的好处:解决代码重复编写,功能区分明确,提高代码维护性。
2.Javabean设计原则:
- 公有类
- 无参公有构造方法
- 私有属性
- getter和setter方法
3.Jsp动作元素
为请求处理阶段提供信息。
动作元素遵循XML元素语法,有一个元素名开始标签,可有属性,可选内容,与开始标签匹配的结束标签。
第一类:存取Javabean有关的:
<jsp:useBean> <jsp:setProperty> <jsp:getProperty>
4.JSP页面使用Javabeans 两种方法:
1.像使用普通Java类一样,创建Javabean实例。
Users.java
package com.pa;
public class Users {
private String username;
private String password;
public Users(){
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
index.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@ page import="com.pa.Users" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<%
Users user= new Users();
user.setUsername("abc");
user.setPassword("123456");
%>
普通方法应用Javabeans<br>
用户名 <%= user.getUsername() %>
密 码 <%= user.getPassword() %>
</body>
</html>
2.Jsp页面通过jsp动作标签使用javabean
<jsp:useBeans>
作用: 在JSP页面实例化或在指定范围内使用javabean:
<jsp:useBean id="标识符" class="Java类名" scope="作用范围" />
<jsp:setProperty>
作用:给已经实例化的javabean对象属性赋值, 共四种形式
跟表单自动匹配所有属性
<jsp:setProperty name="Userjavabeanss" property="*" />
跟表单自动匹配指定属性
<jsp:setProperty name="Userjavabeanss" property="username" />
跟表单无关,通过手工赋值 给属性
<jsp:setProperty property="username" name="Userjavabeanss" value="石头"/>
<jsp:setProperty property="password" name="Userjavabeanss" value="1234"/>
跟表单无关,通过URL传参数赋值 给属性
//表单<form action="dologin.jsp?urldizhi=888888" />
<jsp:setProperty property="password" name="Userjavabeanss" param="urldizhi" />
<jsp:getProperty>
作用:获取指定javabean对象的属性。
<jsp:getProperty property="属性名" name="JavaBean实例名"/>
3.javabean的四个作用域范围
说明:使用useBeans的scope属性可以用来指定javabean的作用范围。
page //仅在当前页面有效
request //可通过HttpRequest.getAttribute()方法获取javabean对象。
session //可通过HttpSession.getAttribute()方法获取javabean对象。
application //可通过application.getAttribute()方法获取javabean对象。
4.阶段案例:使用JSP+javabean完成用户登录功能
Users.java
package com.po;
public class Users {
private String username;
private String password;
public Users() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserDao.java
package com.dao;
import com.po.Users;
public class UserDao {
public boolean usersLogin(Users u){
if("admin".equals(u.getUsername())&&"123".equals(u.getPassword())){
return true;
}else
{
return false;
}
}
}
login.jsp
<h2>登录界面</h2>
<form action="dologin.jsp" method="post">
<label>用户名</label>
<input type="text" name="username"><br>
<label>密  码</label>
<input type="password" name="password" ><br>
<input type="submit" value="登录">
</form>
dologin.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" %>
<jsp:useBean id="juser" class="com.po.Users" scope="page"/>
<jsp:useBean id="UserDao" class="com.dao.UserDao" scope="page"/>
<jsp:setProperty property="*" name="juser"/>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
if(UserDao.usersLogin(juser)){
session.setAttribute("zhuanusername", juser.getUsername()) ;
request.getRequestDispatcher("login_success.jsp").forward(request, response);
}else{
response.sendRedirect("login_failure.jsp");
}
%>
粗心:
把表单的用户名属性名没有和 Javabeans中的用户名属性一致,导致一直登录失败!
来源:oschina
链接:https://my.oschina.net/u/2606138/blog/751394