JSP(java server page)
JSP=html+css+javascript+java
基本组成:
工程 里面主要能用到的:
src文件夹,存放JAVA代码
web文件夹,存放网页等
——————————————————————————————————————————
Java:
dao包: 接口以及接口的实现类 接口实现各种数据库操作。
Domain包:存放各种针对对象(例如用户,帖子)的实体类 或者 其他
Filter包:存放过滤器
Servlet包:服务器端程序
SQL包:存放连接数据库的Connect.java以及JdbcTemplate.java sql语句处理类
test包:存放测试类
——————————————————————————————————————————
HTML:
这个不用多说
————————————————————————————————————
流程:
1.连接数据库。
SQL包 Connect.java
package SQL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Connect {
private static final String Driver="oracle.jdbc.driver.OracleDriver";
private static final String Url="jdbc:oracle:thin:@localhost:1521:KNOVE";
private static final String User="knove";
private static final String password="123456";
private static Connection conn=null;
public static Connection getConnection(){
try {
Class.forName(Driver).newInstance();
conn = DriverManager.getConnection(Url, User, password);
} catch (Exception e) {
System.out.println("连接失败,错误信息:" + e);
}
return conn;
}
public void close() {
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
System.out.println("关闭失败,错误信息:" + e);
}
}
}
}
2 接口 UserDao 处理关于用户的功能的接口
Dao包的UserDao.java
package dao;
import Domain.UserInfo;
import java.util.List;
public interface UserDao {
public boolean login(String userName,String password);
public List getAllUsers();
public boolean register(String userName,String password,String skill,String city,String email);
}
3.实现UserDao接口的实现类:
Dao包的UserJdbcDaoImpl.java
public class UserJdbcDaoImpl implements UserDao {
@Override
public boolean login(String userName,String password){
boolean flag=false;
String sql="select count(*) from Users WHERE Username=? and password =?";
int rowNum=JdbcTemplate.queryForCount(sql, new Object[]{userName,password});
if(rowNum==1){
flag=true;
}
return flag;
}
@Override
public boolean register(String userName,String password,String skill,String city,String email){
String sql="insert into Users(Username,password,Skill,city,Email)values(?,?,?,?,?)";
boolean flag=JdbcTemplate.insertInto(sql, new Object[]{userName,password,skill,city,email});
return flag;
}
@Override
public List getAllUsers() {
String sql="select * from users";
List list=JdbcTemplate.query(sql,new ResultSetHandler>(){
@Override
public List handler(ResultSet rs) {
List list0=new ArrayList();
try {
while(rs.next()){
UserInfo user=new UserInfo(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5));
list0.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list0;
}
}, new Object[]{});
return list;
}
}
4.SQL包的JdbcTemplate.java 处理SQL语句并执行类
package SQL;
import java.sql.*;
public class JdbcTemplate {
public static int queryForCount(String sql,Object...param){
int count=0;
Connection connection = Connect.getConnection();
try {
PreparedStatement psmt=connection.prepareStatement(sql);
ParameterMetaData pmd=psmt.getParameterMetaData();
if(param.length!=0&&pmd.getParameterCount()!=0&¶m.length==pmd.getParameterCount()){
for(int i=0,len=param.length;i T query(String sql,ResultSetHandler rsh,Object...param){
T t=null;
Connection connection=Connect.getConnection();
try {
PreparedStatement psmt=connection.prepareStatement(sql);
ParameterMetaData pmd=psmt.getParameterMetaData();
if(param.length!=0&&pmd.getParameterCount()!=0&¶m.length==pmd.getParameterCount()){
for(int i=0,len=param.length;i
5.测试类:
来测试是否可以成功实现:
test包的test.java
UserDao userDao=new UserJdbcDaoImpl();
System.out.println(userDao.login("Knove","123456"));
JAVA已经实现后,现在就是要让网页,也就是jsp页面来运行:
首先建立Servlet包,里面存放User.java,用来处理jsp页面的信息:
@WebServlet("/Users")
public class User extends HttpServlet {
private UserDao userDao=new UserJdbcDaoImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String param=request.getParameter("param");
if("login".equals(param)){
String userName=request.getParameter("username");
String passWord=request.getParameter("password");
try{
if(userDao.login(userName,passWord)){
//成功登录
HttpSession httpSession=request.getSession();
httpSession.setAttribute("name",userName);
request.getRequestDispatcher("views/main.jsp").forward(request, response);//成功登录转向
}
else{
//登录失败!
}
}
catch (Exception e){
System.out.println("Faied"+e);
}
}
}
}
@WebServlet("/Users")
这行代码即让页面可以以/Users 的URL访问
Login.jsp中的代码: 精简到form
值得注意的就是action="Users?param=login"
即可以实现 访问Oracle数据库登录