初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面

1:JSP

JSP的基本语法:
指令标识page,include,taglib;
page指令标识常用的属性包含Language用来定义要使用的脚本语言;contentType定义JSP字符的编码和页面响应的MIME类型;pageEncoding:jsp页面的字符编码;

include指令<%@ include file="path"%>
静态包含,先包含,后编译处理;

<jsp:include page="要包含的文件">  动态包含,先编译处理,后包含;

脚本标识包含:jsp表达式,声明标识,脚本程序
jsp表达式<%= %>在里面输出一个变量或者一个具体的内容
声明标识<%! %>在里面定义全局变量,方法,类
脚本程序<% %>在里面定义局部变量,编写语句

jsp的注释
<!--  -->html注释,客户端可见
<%-- --%>jsp注释 客户端不可见
//java单行注释
/* */java多行注释

动作标识:
<jsp:include page="要包含的文件">  动态包含,先编译处理,后包含;

jsp跳转指令
<jsp:forward>
    <jsp:param value="" name="">
</jsp:forward>
服务器内部跳转,可带参数。

jap的九大内置对象,pageContext,request,response,session,application,config,out,page,exception;前五个熟练掌握
jsp四种数据保存范围
page:只在一个页面中保存数据
request:只在一个请求中保存数据
session:在一次会话范围内保存数据,仅供单个用户使用
application:在整个服务器上保存数据,所有用户共享

response对象
response内置对象用于响应客户请求,向客户端输出信息
功能1自动刷新应用
功能2页面重定向应用,客户端跳转
功能3操作cookie应用
功能4cookie信息是存在客户端的,session信息是存在服务器的。

2: Javabean 组件引入
JavaBean 是使用 Java 语言开发的一个可重用的组件,在 JSP 开发中可以使用 JavaBean 减少重复代码,使整个 JSP 代码的开发更简洁。

jsp:useBean 创建 javabean
<jsp:useBeanid="实例化对象名称"scope="保存范围"class="类完整名称"/> Scope,一共有 page,request,session 和 application4 个属性范围,默认是 page;

jsp:setProperty 设置 javabean 属性值
<jsp:setPropertyproperty="属性名称"name="实例化对象的名称"value="属性值"param="参数名称"/> Property=”*” 自动匹配所有

jsp:getProperty 获取 javabean 属性值
<jsp:getPropertyproperty="属性名称"name="实例化对象的名称"/>

javabean 的保存范围
Javabean 的保存范围有 page,request,session.application,默认是 page;

javabean 删除
Page 范围:pageContext.removeAttribute(“javaBeanName”);

request 范围:request.removeAttribute(“javaBeanName”);

session 范围:session.removeAttribute(“javaBeanName”);

application 范围:application.removeAttribute(“javaBeanName”);

3:servlet 引入
1,在 Servlet 中获取 session,application
2,客户端跳转 response.sendRedirect("目标地址");
3,服务器跳转:RequestDispatcher  rd=request.getRequestDispatcher("目标地址"); rd.forward(request,response);



第一首先创建数据库和数据表,我在这里使用了sqlyog图形化界面创建数据库和数据表。如下图所示

 

需要注意的就是数据库的名称和数据表的名称后面需要用,以及id设置为了自增。

第二开始开发,采用mvc的设计模式,分开进行设计;

首先package com.ningmeng.model;对User类进行封装数据。为了后面方便使用;注意是在不同的包中的

 1 package com.ningmeng.model;
 2
 3 public class User {
 4
 5     private int id;
 6     private String username;
 7     private String password;
 8
 9
10     public User() {
11         super();
12     }
13     public User(String username, String password) {
14         super();
15         this.username = username;
16         this.password = password;
17     }
18     public int getId() {
19         return id;
20     }
21     public void setId(int id) {
22         this.id = id;
23     }
24     public String getUsername() {
25         return username;
26     }
27     public void setUsername(String username) {
28         this.username = username;
29     }
30     public String getPassword() {
31         return password;
32     }
33     public void setPassword(String password) {
34         this.password = password;
35     }
36
37
38 }    

其次对连接数据库进行封装,方便后面调用连接数据库,这里封装好数据库并进行测试是否连接成功;注意是在不同的包中的;

 1 package com.ningmeng.util;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.SQLException;
 6
 7 public class DbUtil {
 8
 9     private String url="jdbc:mysql://localhost:3306/db_jsp";
10     private String user="root";
11     private String password="123456";
12     private String driver="com.mysql.jdbc.Driver";
13
14     public Connection getCon() throws Exception{
15         Class.forName(driver);
16         Connection con=DriverManager.getConnection(url, user, password);
17         return con;
18     }
19
20     public static void getClose(Connection con) throws SQLException{
21         if(con!=null){
22             con.close();
23         }
24     }
25
26     /*public static void main(String[] args) {
27         DbUtil db=new DbUtil();
28         try {
29             db.getCon();
30             System.out.println("测试连接数据库,连接成功");
31         } catch (Exception e) {
32             // TODO Auto-generated catch block
33             e.printStackTrace();
34             System.out.println("测试连接数据库,连接失败");
35         }
36
37     }*/
38 }

对数据封装好,对连接数据库封装好,接下来封装对数据库的操作;注意是在不同的包中的;

 1 package com.ningmeng.dao;
 2
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7
 8 import com.ningmeng.model.User;
 9
10 public class UserDao {
11
12     public User login(Connection con,User user) throws SQLException{
13         User resultUser=null;
14         String sql="select * from user where username=? and password=?";
15         PreparedStatement ps=con.prepareStatement(sql);//
16         ps.setString(1, user.getUsername());
17         ps.setString(2, user.getPassword());
18         ResultSet rs=ps.executeQuery();
19         if(rs.next()){
20             resultUser=new User();
21             resultUser.setUsername(rs.getString("username"));
22             resultUser.setPassword(rs.getString("password"));
23         }
24         return resultUser;
25     }
26 }

封装好上面的接下来就进行主要代码的开发,使用Servlet对数据进行处理和操作;注意在不同的包中

 1 package com.ningmeng.web;
 2
 3 import java.io.IOException;
 4 import java.sql.Connection;
 5
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 import javax.servlet.http.HttpSession;
11
12 import com.ningmeng.dao.UserDao;
13 import com.ningmeng.model.User;
14 import com.ningmeng.util.DbUtil;
15
16 public class LoginServlet extends HttpServlet{
17
18     DbUtil db=new DbUtil();
19     UserDao userDao=new UserDao();
20     /**
21      *
22      */
23     private static final long serialVersionUID = 1L;
24
25     @Override
26     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
27         this.doPost(request, response);
28     }
29
30     @Override
31     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
32         String username=request.getParameter("username");
33         String password=request.getParameter("password");
34         Connection con=null;
35         try {
36             User user=new User(username,password);
37             con=db.getCon();
38             User currentUser=userDao.login(con, user);
39             if(currentUser==null){
40                 //System.out.println("no");
41                 request.setAttribute("error", "用户名或者密码错误");
42                 request.setAttribute("username", username);
43                 request.setAttribute("password", password);
44                 request.getRequestDispatcher("login.jsp").forward(request, response);
45             }else{
46                 //System.out.println("yes");
47                 HttpSession session=request.getSession();
48                 session.setAttribute("currentUser",currentUser);
49                 response.sendRedirect("main.jsp");
50             }
51         } catch (Exception e) {
52             // TODO Auto-generated catch block
53             e.printStackTrace();
54         }
55
56     }
57
58
59 }

设置好Servlet的类文件后需要配置xml,代码如下。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>web04</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12
13   <servlet>
14       <servlet-name>LoginServlet</servlet-name>
15       <servlet-class>com.ningmeng.web.LoginServlet</servlet-class>
16   </servlet>
17   <servlet-mapping>
18       <servlet-name>LoginServlet</servlet-name>
19       <url-pattern>/login</url-pattern>
20   </servlet-mapping>
21 </web-app>

最后进行主页面的开发,创建jsp页面。需要注意的是action的值是xml的<url-pattern>/login</url-pattern>中/login的值,这点需要注意;

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <form action="login" method="post">
11     <table>
12         <tr>
13             <th colspan="2">登录界面</th>
14         </tr>
15         <tr>
16             <td>账号</td>
17             <td><input type="text" id="username" name="username" value="${username}"></td>
18         </tr>
19         <tr>
20             <td>密码:</td>
21             <td><input type="text" id="password" name="password" value="${password}"></td>
22         </tr>
23         <tr>
24             <td><input type="submit" value="提交"></td>
25             <td><font color="red">${error}</font></td>
26         </tr>
27     </table>
28 </form>
29 </body>
30 </html>

最后一个为了优化,更好的可视化,一个登录成功的验证页面,如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <p>登录成功</p>
11 当前用户:${currentUser.username}<br/>
12 当前密码:${currentUser.password}<br/>
13 </body>
14 </html>

登陆页面

登录成功页面:

登录失败页面:

包的分类以及封装设计;

 

时间: 2024-09-12 16:34:47

初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面的相关文章

JSP使用Servlet作为控制器实现MVC模式实例详解_JSP编程

本文实例讲述了JSP使用Servlet作为控制器实现MVC模式的方法.分享给大家供大家参考.具体如下: 一.目标: ① 初步理解MVC模式: ② 掌握Servlet的编写: ③ 使用MVC模式完成登录功能. 二.主要内容: ① 分析JSP+JavaBean模式存在的问题,并介绍JSP+JavaBean+Servlet模式,以及和MVC模式的关系: ② 通过简单实例介绍Servlet的编写.配置和运行: ③ 采用Servlet完成登录功能的控制. 1. JSP+JavaBean这种模式存在的问题?

JSP+JavaBean+Servlet工作原理实例讲解

JSP+JavaBean两层结构的开发应该是比较熟悉的,也比较好理解. 但是有一点必须要清楚就是用户通过浏览器来发送网页的请求,此请求到达服务器后在服务器端查找对应的网页,如果是首次请求(第二次就不用解释执行了),对于JSP来说要生成Servlet,然后通过Servlet引擎来执行Servlet,把调用JavaBean的结果嵌入到页面中返回给用户的浏览器. JSP+JavaBean+Servlet三层结构的实质是多了一个Controller:Servlet来分发客户端浏览器的请求.如果把起控制器

学习servlet,写一个简单的Helloword出现404错误

问题描述 学习servlet,写一个简单的Helloword出现404错误 解决方案 不需要 /servlet 解决方案二: 解决方案三: web.xml内容贴下来看看. 可以参考 我写的http://blog.csdn.net/evankaka/article/details/45151569 解决方案四: url里把[/Hello]改成[/HelloServlet] 和你Web.xml里配置的url-pattern一样. 解决方案五: 一个简单的Servlet 解决方案六: 采用servle

checkbox-刚学完JS和servlet,写一个简单的注册登录页面

问题描述 刚学完JS和servlet,写一个简单的注册登录页面 ,想把checkbox选中的的数据和下拉列表选中的的年月日组合成字符串发送给servlet,该怎么做,求大神指教 解决方案 username: password: 表单 action 对应的servlet method 提交方式,对应servlet的doPost和doGet方法 在servlet中写 req.getParameter("username"); req.getParameter("password&

Jsp+JavaBean+Servlet实现模拟银行账户存取款等功能的网站(实习第4-8天)

本来想学J2EE的3个经典框架(Spring + Struts +Hibernate),奈何负责实习的老师只讲了Jsp+JavaBean+Servlet,项目时间还蛮紧的,所以只用JJS实现了这个项目,后面寒假有时间的话再用SSH实现并完善这个网站吧.前几天抽时间学了点前端的东西,感觉还是有点麻烦的,前端做既漂亮又有良好的兼容性不是件太容易的事情,所幸现在觉得能够静下来学技术做开发是件挺幸福的事情.网站的源代码上传到了CSDN上的code仓库,以后有时间会慢慢把这个项目的前端和后台做的更完善.

1.请求安全-- 一个简单的 单设备登录 单点登录

一个简单的 SSO 单点登录 单设备登录 解决方案 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制.它是目前比较流行的企业业务整合的解决方案之一. 实现SSO的技术主要有: (1)基于cookies实现; (2) Broker-based(基于经纪人),例如Kerberos等: (3) Agent-based(基于代理人)在这种解决方案中例如S

wtl81-请大家帮我做一个用WTL开发的登录界面

问题描述 请大家帮我做一个用WTL开发的登录界面 有账号输入,账号输入框能想QQ一样,能记住输入的账号,能下拉,密码输入,和登录按钮就好了.谢谢

JSP MVC模式(JSP + JavaBean +Servlet)实现分页的源代码

问题描述 能够贴出来的更好,谢了 解决方案 解决方案二:<%@pagelanguage="java"contentType="text/html;charset=GB18030"import="java.util.*"pageEncoding="GB18030"%><%@pageimport="com.xlh.userDao.*"%><%@pageimport="co

采用JSP+JavaBean的方式进行简单的实现用户的网页登陆实例

我们都知道J2EE中的Model1开发模式,那么下面就让我们一起简单的进行一下回顾,其主要是体现了一个初步的分层的思想: jsp层,业务逻辑层,以及我们的数据库层,主要的作用分别为,jsp层负责与用户之间进行交互,业务逻辑层主要是我们的javabean,至于数据库层就是通过javaBean与后台的数据库进行数据交互,这样就可以省去很多的jsp层的逻辑判断,有助于我们开发出容易维护的代码. javaBean其实就是一种实现了某种标准的简单的java类罢了,不要将其想象的过于复杂.这个标准包含以下四