JSP通过tomcat编译后的java和class文件在Tomcat/work/Catalina/localhost/项目名称/org/apache/jsp
一、
JSP+MySql实现。
录取新生→报道分班→财务交费→宿舍分配
首先业务需求分析,需要设计表,学生表(Student)、用户表(adminuser)、班级表(ClassTa)、专业表(Speciality)和宿舍表(Bedchamber)。
学生的ID是学生表主键,每个学生有班级号(外键)、专业号(外键)、宿舍号(外键)等。属于一对多的关系,如一个宿舍号对应六个学生。
应用主外键关联法
班级表A:班级ID (A表主键) 学生表B:学生ID(B表主键)
其他 班级ID(外键)
其他
在数据库中创建用户表,并添加系统管理员和普通管理员,系统管理员权限最大,普通管理员可以管理系统的部分功能。
index.jsp是主界面
1 <%if(session.getAttribute("adminusername")==null||session.getAttribute("adminusername").toString().length()==0) 2 response.sendRedirect("login.jsp"); %>
在界面开头插入session判断,是否登录,没有登录跳转到login.jsp页面。
1 <%Connection conn=JDBCMysql.getConnection();%> 2 <% 3 String adminusername=request.getParameter("adminusername"); 4 String adminuserpassword=request.getParameter("adminuserpassword"); 5 String action=request.getParameter("action"); 6 String errormsg=new String(); 7 if("login".equals(action)){ 8 String sql="select * from adminusername where adminname=? and adminpassword=?"; 9 PreparedStatement state=conn.prepareStatement(sql); 10 state.setString(1,adminusername); 11 state.setString(2,adminuserpassword); 12 ResultSet rs=state.executeQuery(); 13 if(rs.next()){ 14 session.setAttribute("adminusername", adminusername); 15 session.setAttribute("adminuserrole",rs.getString("adminuserole")); 16 response.sendRedirect("index.jsp"); 17 } 18 else{ 19 errormsg="用户名或密码输入错误"; 20 } 21 } 22 %>
在JSP中,<%%>之间的代码在服务器端执行。现数据库用户表中已经添加了两个用户,用户名和password查找符合才登录成功。sql=select * from adminusername where adminname=? and adminpassword=?是带参数的SQL语句,state.setString(1,adminusername)是在第一个?处,放入参数adminusername。
关于配置:
安装Tomcat,讲tomcat部署到Myeclipse中,安装MySql,使用SQLyog可视化界面操作MySql,建表,添加元组等。下载MySql的JDBC驱动,讲其放在项目下的JAR包文件库中(Java EE libraries和WebRoot-WEB-INF-lib下都放入,在WEB-INF-lib出现无法复制jar包到目录的情况,需要ctrl+c在硬盘目录下的jar包,再ctrl+v),在项目src下添加jdbc包,创建一个java类,此类连接mysql数据库并返回一个数据库连接对象,用此对象对mysql进行操作。
1 package jdbc; 2 3 import java.sql.*; 4 5 public class JDBCMysql { 6 7 public static Connection getConnection() throws SQLException, 8 java.lang.ClassNotFoundException 9 { 10 11 Class.forName("com.mysql.jdbc.Driver"); 12 String url = "jdbc:mysql://localhost:3306/test1"; 13 String username = "root123"; 14 String password = "123456"; 15 16 Connection con = DriverManager.getConnection(url, username, password); 17 return con; 18 } 19 20 public static void closeConn(Connection con){ 21 try{ 22 con.close(); 23 }catch(Exception e){ 24 e.printStackTrace();} 25 } 26 } 27
其他文件中需要使用数据库,调用此类即可。
在Myeclipse中编写jsp代码,放在Webroot下。编写好后,讲项目部署在Tomcat服务器,启动tomcat服务器。
点击左边第一个图标部署项目。
服务器启动后,浏览器本地打开项目,myeclipse界面下方console窗口有一些提示,如stacktrack可以排查错误。
二、
从index.jsp跳转到specialityadmin的专业管理界面。
注意编码问题:
在添加专业,输入中文,request.getParameter("specialityname");使用request.getParameter得到中文,对其进行specialityname=new String(specialityname.getBytes("ISO-8859-1"));
问题分析如图:
添加专业时,专业ID是主键,不可为空,如果专业ID是学生ID的外键,在删除此专业ID的专业时,若此专业ID存在于学生表中,那么删除会出现问题(数据库的安全性)。