本人JavaEE菜鸟,之前也没有学过Java,最近小弟我在学校开了一门JavaEE的课,诶,完全没有基础,也得硬着头皮上。现在已经快结课了,在做实验的时候遇到一些

   阅读
本人JavaEE初学者,之前也没有学过Java,最近我在学校开了一门JavaEE的课,诶,完全没有基础,也得硬着头皮上。现在已经快结课了,在做实验的时候遇到一些
[align=center]实验二  JSP网站设计
一、实验目的
掌握JSP+DAO的网站开发步骤;
理解JSP+DAO网站模式的优缺点。
二、实验环境
PC系列微机,CPU2G以上,内存1G以上, NetBeas IDE8.0.2 GlassFish 4.1 Centos7
三、实验步骤
1、编写POJO User类       
2、编写或使用原来的DBConnection类获得数据库连接
3、创建数据访问抽象层接口UserDAO       
4、创建数据访问实现类UserDAOImpl     
5、创建登录需要的JSP页面[/align]

[size=40px]下面是我写的代码[/size]
DBConnection类

//DBConnection类
package com.conn;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author shane
 */
public class DBConnection {
    
    public static Connection getConnection()
    {
        String url="jdbc:mysql://localhost/user";
        String username="root";
        String password="shanechiu";
        Connection conn=null;
        try
        {
            conn=DriverManager.getConnection(url, username, password);
        }
        catch(SQLException e){
            
        }
        return conn;
    }
    
    
}
    

POJO User类

package com.model;

/**
 *
 * @author shane
 */
public class User {
    
    
    
    private  static int id;
    private  static String name;
    private  static String password;
    
    
    
    public static int getId(){
        return id;
    }
    public void setId(int id){
        this.id=id;
    
    }
    
     public static String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    
    }
    public static String getPassword(){
        return password;
    }
    public void setPassword(String password){
        this.password=password;
        
    }
    
}


数据访问抽象层接口UserDAO  

package com.dao;

import com.conn.DBConnection;
import com.model.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author shane
 */
public class UserDAO {
    
    
    
    DBConnection dbCon=null;
    public UserDAO(){
        dbCon=new DBConnection();
    }
    
    public int add(User user){
        int userId=0;
        String sqlStr="insert into member(name,password) valuses(?,?)";
        Connection con=dbCon.getConnection();
        try{
            //创建一个默认 PrepareStatement 对象,该对象能获取自动生成的键
            PreparedStatement pst=con.prepareStatement(sqlStr,Statement.RETURN_GENERATED_KEYS);
            pst.setString(1,User.getName());    //设置sql语句的第一个参数值
            pst.setString(2,User.getPassword());//设置sql语句的第二个参数值
            pst.executeUpdate();
            ResultSet rs=pst.getGeneratedKeys();
            
            
            if(rs.next()){
                userId=rs.getInt(1);
            }
            rs.close();
            pst.close();
        }catch(SQLException ex ){
            
            
        
        }
        finally{
            //关闭数据库连接
            if(con!=null){
                try {
                    con.close();;
                }catch(SQLException ex)
                {
                
                }
            }
        }
        return userId;
    }
    
    
    public User chenckuser (String uname,String upassword)
    {
        User user=null;
        String sqlStr="select * from member where name=@uname and password=@upassword";
        Connection con=dbCon.getConnection();
        try{
        
            PreparedStatement pst=con.prepareCall(sqlStr);
            pst.setString(1, uname);
            pst.setString(2, upassword);
            ResultSet rs=pst.executeQuery();
            if(rs.next())
            {
                //将查询到的用户信息封装
                
                user=new User();
                user.setName(rs.getString("name"));
                
                
            }
            rs.close();
            pst.close();
            
        }catch(SQLException ex){
           
        }
        finally{
            if(con!=null){
                try{
                    con.close();
                }catch(SQLException ex){}
            }
        }
        return user;
    }
    
}


实现类UserDAOImpl

package com.dao;

import com.conn.DBConnection;
import com.model.User;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author shane
 */
public class UserDaoImpl extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        UserDAO userdao=new UserDAO();
        String username=request.getParameter("uname");  //login
        String userpassword=request.getParameter("upass");  //login
        String user=request.getParameter("username");   //register
        String userPassword=request.getParameter("password");   //register
        Connection con=DBConnection.getConnection();
        PrintWriter out = response.getWriter();
        //登录
        User usern=userdao.chenckuser(username, userpassword);
        if(usern!=null){
            RequestDispatcher dis=request.getRequestDispatcher("admin");
            dis.forward(request, response);
        }
        else
        {
            RequestDispatcher dis=request.getRequestDispatcher("fail");
            dis.forward(request, response);
        }  
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}


login.jsp

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>登录</title>
    </head>
    <body>
        <form name="sub" method="post" action="UserDAOImpl" >
            <div style="width:400px;margin-left: auto;margin-right: auto;text-align: center; ">
                <h1>欢迎使用javaee</h1>
                <div style="text-align: center;">  
                    <p>
                        用户名:<input type="text" name="uname" value="">
                    </p>
                    <p>
                        密码:&nbsp;&nbsp;&nbsp;<input type="password" name="11111111111111111111111111111111111111111111111111111111111111111111"  value="">
                    </p>
                    <p style=" margin-left: 30px;text-align: center;">
                        <input type="submit" name="login" value="登录"  style="width: 80px;height: 50px;"/>
                        <input type="submit" name="register" value="注册" style="width: 80px;height: 50px;" />
                    </p>
                <div>
            </div>
        </form>
  
    </body>
</html>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>UserDaoImpl</servlet-name>
        <servlet-class>com.dao.UserDaoImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>UserDaoImpl</servlet-name>
        <url-pattern>/UserDaoImpl</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>



 当我点击运行login.jsp时,出现如下错误











------解决思路----------------------
<servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
你的这个servlet什么作用呢?
<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping> 这个通配符想拦截哪些请求呢

去掉这一个servlet的配置试试看
------解决思路----------------------
找不到页面,那就是访问路劲不对,看看你的 配置
------解决思路----------------------
404错误就是找不到路径啊,肯定是你的相对路径写的有问题。
------解决思路----------------------
你在doGet()方法和doPost()方法中调用this.processRequest();试试
------解决思路----------------------
配置文件的问题。把faces去掉试试
阅读
上一篇:java nio取值有关问题 下一篇:返回列表