zoukankan      html  css  js  c++  java
  • 初识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>
    复制代码

    登陆页面

    登录成功页面:

    登录失败页面:

    包的分类以及封装设计;

     https://www.cnblogs.com/biehongli/p/6078740.html

  • 相关阅读:
    Codeforces 451A Game With Sticks
    POJ 3624 Charm Bracelet
    POJ 2127 Greatest Common Increasing Subsequence
    POJ 1458 Common Subsequence
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1698
    HDU 1754
    POJ 1724
    POJ 1201
    CSUOJ 1256
  • 原文地址:https://www.cnblogs.com/sjqq/p/10061092.html
Copyright © 2011-2022 走看看