本人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>
密码: <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取值有关问题 下一篇:返回列表