总结
Server是运行在Server容器中的Java类,他能处理Web客户的HTTP请求,并产生相应的HTTP相应。
简单地扩展GenericServlet并实现其Service()方法就可以编写一个基本的Servlet,但若要实现一个在Web中处理HTTP的Servlet,则需要继承HttpServlet类。
附录一:
1、数据库设计:
-- ---------------------------- -- Table structure for TB_USER
-- ---------------------------- DROP TABLE "QZX"."TB_USER"; CREATE TABLE "QZX"."TB_USER" (
"USERID" NUMBER ,
"USERNAME" VARCHAR2(30 BYTE) , "PASSWORD" VARCHAR2(30 BYTE) , "IMAGEPATH" VARCHAR2(100 BYTE) )
TABLESPACE "Qust_JavaWeb1" LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
;
TB_USER:2、连接数据库:
通过数据库连接类,在本地用thin方式连接Oracle数据库:
通过DriverManager获取数据库连接利用反射加载好数据库的驱动程序然后再调用其中的getConnection()方法完成数据库的连接。
import java.sql.Connection;
import java.sql.DriverManager;
import com.lock.util.DbUtil;
public class DbUtil {
String dburl = "jdbc:oracle:thin:@localhost:1521:orcl";
String dbDriverName = "oracle.jdbc.OracleDriver";
String dbName = "qzx";
String dbpassword = "154876";
public Connection getCon() throws Exception{
Class.forName(dbDriverName);
Connection con=DriverManager.getConnection(dburl,dbName,dbpassword);
return con;
}
public void closeCon(Connection con) throws Exception{
if(con!=null) {
con.close();
}
}
public static void main(String[] args) {
DbUtil dbUtil=new DbUtil();
try {
dbUtil.getCon();
System.out.println("Database connection success ");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Database connection failure ");
}
}
}
建立实体类存储和管理信息映射数据库表public class User {
private Integer userId;
private String passWord;
private String userName;
private String imagePath;
public User() {
super();
}
public User(String userName, String password) { super();
this.userName = userName;
this.password = password;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
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;
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class User_Dao {
public User login(Connection con,User user) throws SQLException{
String sql = "select * from tb_user where userName=? and password=?";
User resultUser = null;
PreparedStatement pstmt =con.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassword());
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
resultUser = new User();
resultUser.setUserId(rs.getInt("userId"));
resultUser.setUserName(rs.getString("userName"));
resultUser.setPassword(rs.getString("password"));
resultUser.setImagePath(rs.getString("ImagePath"));
}
return resultUser;
}
public boolean isNotExist(Connection con,String userName) throws SQLException { String sql = "select * from tb_user where userName=?";
PreparedStatement pstmt =con.prepareStatement(sql);
pstmt.setString(1, userName);
if(pstmt.executeQuery().next()) {
return false;
}
return true;
}
}
用户界面用CSS和JS布局完成
用户输入信息为空或用户名/密码错误时弹出提示:
登陆成功时跳转到欢迎页面mainTemp.jsp
获取当前登录的用户名:
User currentUser =(User)request.getSession().getAttribute("currentUser"); 输出:
welcome! <%=currentUser.getUserName()%>
5、Servlet控制层
服务层配置:
import java.io.IOException;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Landing extends HttpServlet{
private static final long serialVersionUID = 1L;
private DbUtil dbUtil = new DbUtil();
private UserDao userDao= new UserDao();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = request.getParameter("userName");
String password = request.getParameter("passWord");
User user = new User(userName,password);
Connection con = null;
try {
con = dbUtil.getCon();
User currentUser = userDao.login(con, user);
if(currentUser!=null) {
HttpSession session = request.getSession();
session.setAttribute("currentUser
response.sendRedirect("mainTemp.jsp");
}else {
request.setAttribute("errorInfo
request.setAttribute("user
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();}
}
}
用户登陆时,通过login.jsp页面的登陆表单提交请求到LoginServlet.java,进行登陆验证,当验证成功时,把信息存入session,并跳转到mainTemp.jsp,当验证不通过时,返回login.jsp页面。