javaWeb
¶🐴在前面
算是第一次从头到底的做完项目吧,虽然有视频参考但是其中有很多东西都是一点点试出来的,做一个记录,也算是一种总结?很多部分是为了实现而实现,强拉硬凑,但过程确实不易…
而距离项目完成已经过去了将近4个月,能想到多少就写多少吧
项目名称就是耳熟能详的选课系统,即便如此,身上也是满是bug…
¶环境
tomcat8.0,jave EE,json
¶基础配置
通过web.xml对servlet进行映射的配置,
¶页面
¶登录
基本就是从输入框获取值,同数据库里表的值进行配对,然后页面通过选择的用户类型跳转到相应的用户界面
/*
* 登录
*/
public class Loginservlet extends HttpServlet{
/**
*
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException {
//request.setAttribute("flag", "word");
doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动 (先导入sqljdbc4.jar到WEB-INF/lib中?
//点击project/properties/java build path 点击add jars 导入后 apply and close
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
System.out.println("驱动错误");
e1.printStackTrace();
}
//链接数据库的url
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=javaWeb";//1433 为TCP端口 DatabaseName所需访问数据库名
//数据库用户
String user = "server01";
//数据库密码/在这里输入数据库密码
String password = "123";
//从前台读取到的用户名,密码,登录类型
String user_type = request.getParameter("log_type");
String user_id = request.getParameter("username"); // 括号中的“username”和前台属性标签中的name值相对应
// session 传递用户密码和用户名
HttpSession session = request.getSession();
session.setAttribute("user_id", user_id);
session.setAttribute("user_type", user_type);
// 从前台读取到的密码
String user_pwd = request.getParameter("password");
// System.out.println("id "+user_id+"pwd: "+user_pwd);
// 数据库链接成功时返回的实例
Connection conn = null;
// 查询成功时返回的记录集
ResultSet rs = null;
String account_type = user_type;// 根据登录类型选择相应的数据库:stu,teacher,manage
try {
// 获取链接
conn = (Connection) DriverManager.getConnection(url, user, password);
// 准备sql查询
String sql = "select * from " + account_type + " where id=? and key_word=?";// 问号为待定“参数值”
// 使用PreparedStatement,可以防止sql注入
PreparedStatement ps = conn.prepareStatement(sql);
// 填入“参数”值
ps.setString(1, user_id);
ps.setString(2, user_pwd);
// 执行查询,返回记录集
rs = ps.executeQuery();
// 游标遍历 如果查询到用户名和密码,则允许用户登录
// request.setAttribute("flag", "word");
if (user_id.equals("") || user_pwd.equals("")) {
PrintWriter out = response.getWriter();
out.flush();
out.println("<script>");
out.println("alert('输入不能为空');");
out.println("history.back();");
out.println("</script>");
out.close();
}
if (rs.next()) {
// System.out.println("login ok!!");
// response.sendRedirect("LoginActionServlet");
if (user_type.length() > 0) {
sendMsg(user_type, request, response);
} else if (user_type == null) {
PrintWriter out = response.getWriter();
out.flush();
out.println("<script>");
out.println("alert('请选择登录类型');");
out.println("</script>");
out.close();
}
// response.sendRedirect("manage.jsp");
// request.getRequestDispatcher("manage.jsp").forward(request, response);
} else {
PrintWriter out = response.getWriter();
out.flush();
out.println("<script>");
out.println("alert('很遗憾,用户名或密码错误');");
out.println("history.back();");
out.println("</script>");
out.close();
}
// 关闭PreparedStatement
ps.close();
}catch(Exception e){
e.printStackTrace();
}finally{
//最后一定要关闭链接
if (conn != null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return;
}
private void sendMsg(String user_type,HttpServletRequest request, HttpServletResponse response) throws IOException, Exception {
//request.getRequestDispatcher("Loginservlet").forward(request, response);
//String selected=request.getParameter("info_select");
//response.setContentType("application/json;character=utf-8");
response.setContentType("charset=utf-8");
//PrintWriter out =response.getWriter();
PrintWriter out=response.getWriter();
out.print(user_type);
out.close();
//request.setAttribute("stuList", list);
}
}
¶管理员
就选一个对学生用户的管理来
/**
* Servlet implementation class Systemservlet
*/
@WebServlet("/Systemservlet")
public class Manservlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request,response);
}
//
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest req, HttpServletResponse rep) throws ServletException, IOException {
// TODO Auto-generated method stub
//req.getRequestDispatcher("manage.jsp").forward(req, rep); jsp2jsp跳转页面,不能在servlet跳转
rep.setCharacterEncoding("UTF-8");
rep.setContentType("application/json;charset=utf-8" );
req.setCharacterEncoding("utf-8");
String method = req.getParameter("method");
String type=req.getParameter("type");
//System.out.print(method);
if("stu".equals(method)) {
stu_info(req,rep,type);
}
}
private void stu_info(HttpServletRequest req,HttpServletResponse rep,String type) throws IOException {
PrintWriter send=rep.getWriter();
if(type.equals("select")) {
find_stu(send);
}
else if(type.equals("up")) {
String sql = man_up_stu(req);
doing_sql(send,sql);
}
else if(type.equals("del")) {
String sno=req.getParameter("sno");
System.out.println(sno);
String sql="delete from Student where Sno="+sno;
doing_sql(send,sql);
}
else if(type.equals("add")) {
String sql = man_add_stu(req);
System.out.println(sql);
doing_sql(send,sql);
}
//
}