实验6 综合实验Word格式文档下载.docx
- 文档编号:15044944
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:13
- 大小:21.71KB
实验6 综合实验Word格式文档下载.docx
《实验6 综合实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验6 综合实验Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
在MyEclipse中新建一个Web项目,并在src目录下新建以下Java包:
com.phoenix.bo:
用于存放系统中用到的实体类,即持久化的类,和数据库中的某个表相对应;
mon:
用于存放系统中各层都需要的类,
com.phoenix.servlet:
用于存放系统中的所有的Servlet,相应于控制层;
com.phoenix.util:
用于存放系统中的所有的业务处理接口(类),相应于业务逻辑层。
2权限验证
权限验证的思想是:
将请求页面中设置的角色与登录时用户的角色进行对比,若二者匹配或者是登录的角色是管理员(本例中是教师),则允许用户进行本次操作,否则将用户导向登录页面,重新进行登录。
(1)由于在系统中有不同的角色,各角色具有的权限不同,所以要进行权限控制,这个功能由Filter过滤器进行。
在mon包下新建AuthenticateFilter,并实现Filter接口,并输入以下代码:
publicvoiddestroy(){
//TODOAuto-generatedmethodstub
}
publicvoiddoFilter(ServletRequestreq,ServletResponseresp,
FilterChainchain)throwsIOException,ServletException{
if(reqinstanceofHttpServletRequest){//http请求
HttpServletRequestrequest=(HttpServletRequest)req;
Stringlogin=request.getParameter(“login”);
StringroleName=request.getParameter(“roleName”);
if(null==login||“”.equals(login)){//非登录请求
HttpSessionsession=request.getSession();
Stringsername=(String)session.getAttribute(“sername”);
StringsessionRoleName=(String)session.getAttribute(“roleName”);
if(null!
=sername&
&
!
””.equals(sername)&
(sessionRoleName.equals(roleName)||sessionRoleName.equals(“教师”))){
chain.doFilter(request,resp);
}else{
request.setAttribute(“opTip”,“你还没有登录,请登录后继续访问!
”);
request.getRequestDispatcher(“/index.jsp”).forward(request,resp);
}
}else{//登录请求
chain.doFilter(request,resp);
}
}else{//其他请求
chain.doFilter(req,resp);
}
}
publicvoidinit(FilterConfigarg0)throwsServletException{
请你在输入代码的同时,理解该段代码实现的业务逻辑是怎么样的?
(2)在web.xml中添加如下代码,将你的Filter部署到项目中。
<
filter>
<
filter-name>
authenFilter<
/filter-name>
filter-class>
mon.AuthenticateFilter<
/filter-class>
<
/filter>
filter-mapping>
url-pattern>
/*<
/url-pattern>
/filter-mapping>
3登录功能
首先要将student.sql文件导入MySQL数据库中。
3.1获得数据库连接
在mon包中新建GetConnection类,输入以下代码。
试回顾一下,Java连接数据库的内容。
Importjava.sql.*;
publicclassGetConnection{
publicstaticfinalStringCLASSNAME=“com.mysql.jdbc.Driver”;
publicstaticfinalStringURL=“jdbc:
mysql:
//localhost:
3306/student”;
publicstaticfinalStringUSER=“root”;
publicstaticfinalStringPASSWORD=“789456”;
publicstaticConnectionconn;
publicstaticConnectiongetConnection(){
try{
if(null==conn){
Class.forName(CLASSNAME);
conn=DriverManager.getConnection(URL,USER,PASSWORD);
}catch(ClassNotFoundExceptione){
System.out.println(“系统找不到指定类”);
}catch(SQLExceptione){
System.out.println(“数据库连接出现异常”);
returnconn;
3.2编写登录页面
需要收集用户的ID、姓名和密码。
新建index.jsp文件,输入以下内容。
formaction=”loginServlet”>
inputtype=”hidden”name=”login”value=”login”/>
%=request.getAttribute(“opTip”)%>
table>
tr>
<
th>
用户ID<
/th>
td>
inputtype=”text”name=”roleId”/>
/td>
/tr>
用户名<
inputtype=”text”name=”sername”/>
密&
nbsp;
码<
inputtype=”password”name=”password”/>
tdcolspan=”2”>
<
inputtype=”submit”value=”提交”/>
inputtype=”reset”value=”重置”/>
/table>
/form>
3.3编写登录Servlet
在com.phoenix.servlet包下新建LoginServlet,输入以下代码。
并在com.phoenix.bo包下按照Student数据库中的role数据库表新建一JavaRole类。
Connectionconn=null;
Statementst=null;
ResultSetrs=null;
@Override
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
doPost(req,resp);
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
Stringsername=req.getParameter(“sername”);
Stringpassword=req.getParameter(“password”);
StringroleId=req.getParameter(“roleId”);
conn=GetConnection.getConnection();
Stringsql=“select*fromrolewhereroleId=”+roleId+””;
try{
st=conn.createStatement();
rs=st.executeQuery(sql);
Rolerole=null;
while(rs.next()){
role=Table2Object.role2Role(rs);
Stringtarget=null;
if(null!
=role){
if(role.getUserName().equals(sername)&
role.getPassword().equals(password)){
req.getSession().setAttribute(“sername”,sername);
req.getSession().setAttribute(“roleName”,role.getRoleName());
target=“jsp/Main.jsp”;
}else{
req.setAttribute(“opTip”,“密码输入错误,请重新输入”);
target=“/index.jsp”;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验6 综合实验 实验 综合
![提示](https://static.bdocx.com/images/bang_tan.gif)