




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、前序工作2二、Classes文件写一个Hello.java2写java文件2配置web.xml文件3上网验证4三、写登陆界面4写java文件5配置web.xml文件7上网验证7四、同一用户的不同页面共享数据8用sendRedirct()方法实现8用隐藏表单实现11Session11五、Servlet链接数据库13建数据库的表13写java文件13放jar包16Sql注入漏洞16六、Servlet中显示图片18七、分页技术19八、cookie24使用cookie保存用户名,密码,在一定时间不用重复登陆24删除cookie29九、网站框架30十、ServletContext38网站计数器39优化40用户ip地址42十一、界面美化42十二、tomcat配置59如何修改tomcat端口59如何设置虚拟目录60如何给tomcat的管理员设置密码61如何设置数据源和连接池62附录63Jcreator不能导入javax.servlet包问题63本文数据库数据库64本文Web.xml文件配置64一、前序工作Tomcat安装好后再webapps文件夹下新建mywebsite,里面包括WEB-INF,在里面是classes,lib和web.xml文件。Jcreator配置好jdk路径后servlet也需要导入,configureoptionsjdkprofile,选中jdk vension,点editaddadd achieve,选择tomcat里lib下的servlet-api,就ok了。详细看附录。二、Classes文件写一个Hello.java写java文件有三种方法:/*使用实现servlet接口的方式开发(不全)package com.tsinghua; /一个自定义的包import javax.servlet.*;import java.io.*;import java.io.IoException;public class Hello implements Servlet /该函数用于初始化servlet(类似与构造函数) /该函数只会被调用一次 public void init(ServletConfig parml) throws ServletException System.out.println(init it); public ServletConfig getServletConfig() return null; /这个函数用于处理业务逻辑 /程序员应该把业务逻辑代码写这里 /这个函数当用户每访问servlet时,都会被调用 /req:用于获得客户端(浏览器)信息 res:用于向客户端(浏览器)返回信息 public void service(ServletRequest req,ServletResponse res)throws ServletException System.out.println(service it); /从res中得到printWriter PrintWriter pw=res.getWriter(); pw.println(hello,world); public void destroy() /方法二,继承GenericServlet(不全)package com.tsinghua;import javax.servlet.GenericServlet;import javax.servlet.*;import java.io.*;public class HelloGenen extends GenericServlet /重写service方法 public void service(ServletRequest req,ServletResponse res) /返回hello,world try PrintWriter pw=res.getWriter(); pw.println(hello,world,generc); catch (Exception ex) ex.printStackTrace(); */ /方法三,继承HttpServlet开发package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class Hello extends HttpServlet/处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res)/业务逻辑try PrintWriter pw = res.getWriter(); pw.println(hello http);catch (Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res);配置web.xml文件这个web.xml文件可以从旁边文件夹里拷来,主要改写的部分如下 hello com.tsinghua.Hello hello /hello 上网验证先打开apache-tomcat-8.5.8bin下的startup.bat,然后登陆下面地址,看manager里有没有mywebsite,若runing是true则ok再登陆下面地址看看是否成功显示了hello,成功了三、写登陆界面Login.java登陆界面Welcome欢迎界面LoginCl验证用户写java文件登陆界面包含三个java文件,用sendRedirect进行跳转,其中还包括了html语言,表单知识,详细看下面Login.java/* * (#)Login.java * * * author * version 1.00 2017/2/10 */登陆界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class Login extends HttpServlet public Login() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 try /中文乱码解决方法 res.setContentType(text/html;charset=gbk); PrintWriter pw = res.getWriter(); /返回登陆界面 pw.println(); pw.println(); pw.println(登陆界面); pw.println(); pw.println(用户名:); pw.println(密码:); pw.println(); pw.println(); pw.println(); pw.println(); catch (Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); LoginCl.java/* * (#)Login.java * * * author * version 1.00 2017/2/10 */验证(登陆处理)package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class LoginCl extends HttpServlet public LoginCl() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 try /接受用户名和密码 String u=req.getParameter(usrname); String p=req.getParameter(passwd); /验证 if(u.equals(sp)&p.equals(123) /合法 /跳转(welcome) res.sendRedirect(welcome); else /不合法 /跳转(回原界面) res.sendRedirect(login);/写url catch (Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); Welcome.java/* * (#)Welcome.java * * * author * version 1.00 2017/2/10 */欢迎界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class Welcome extends HttpServlet public Welcome() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 try /输出weclcome PrintWriter pw=res.getWriter(); pw.println(welcome); catch (Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); 配置web.xml文件再之前的web.xml文件里增加如下 login com.tsinghua.Login login /login logincl com.tsinghua.LoginCl logincl /logincl welcome com.tsinghua.Welcome welcome /welcome 上网验证登陆下面地址,看manager里有没有mywebsite,若runing是true则ok四、同一用户的不同页面共享数据用sendRedirct()方法实现实现在welcome界面显示登录用户的姓名以上三个java文件中LoginCl和Welcome文件进行修改LoginCl.javaWelcome实现在welcome界面显示登录用户的姓名和密码以上三个java文件中LoginCl和Welcome文件进行修改LoginClWelcome结果图:隐藏数据:、用隐藏表单实现SessionSession:浏览器访问服务器时,服务器内存为浏览器分配的空间。Session名字String值Object用session防止用户非法登陆到某个页面,这里防止直接登陆欢迎界面以上三个java文件中LoginCl和Welcome文件进行修改LoginClWelcome网页:输入welcome重新跳回登入界面正确输入后:五、Servlet链接数据库建数据库的表写java文件Login/* * (#)Login.java * * * author * version 1.00 2017/2/10 */登陆界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class Login extends HttpServlet public Login() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 try /中文乱码解决方法 res.setContentType(text/html;charset=gbk); PrintWriter pw = res.getWriter(); /返回登陆界面 pw.println(); pw.println(); pw.println(登陆界面); pw.println(); pw.println(用户名:); pw.println(密码:); pw.println(); pw.println(); pw.println(); pw.println(); catch (Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); LoginCl/* * (#)Login.java * * * author * version 1.00 2017/2/10 */验证(登陆处理)package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class LoginCl extends HttpServlet public LoginCl() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 Connection ct=null; Statement sm=null; ResultSet rs=null; try /接受用户名和密码 String u=req.getParameter(usrname); String p=req.getParameter(password); /链接数据库,加载驱动 Class.forName(com.mysql.jdbc.Driver); /得到链接 ct=DriverManager.getConnection(jdbc:mysql:/localhost:3306/xcdb?useUnicode=true&characterEncoding=gbk,root,gu123); /创建Statement sm=ct.createStatement(); rs=sm.executeQuery(select * from user where username=+u+ and password=+p+); /验证 if(rs.next() /合法 /将验证成功的信息,写入session /1表示得到session HttpSession hs=req.getSession(true); /修改session 的存在时间,设为20秒 hs.setMaxInactiveInterval(20); /把信息放session hs.setAttribute(pass,ok); /跳转(welcome) res.sendRedirect(welcome?uname=+u+&upassword=+p); else /不合法 /跳转(回原界面) res.sendRedirect(login);/写url catch (Exception ex) ex.printStackTrace(); finally try if(rs!=null) rs.close(); if(sm!=null) sm.close(); if(ct!=null) ct.close(); catch(Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); Welcome/* * (#)Welcome.java * * * author * version 1.00 2017/2/10 */欢迎界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;public class Welcome extends HttpServlet public Welcome() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 try /得到session HttpSession hs=req.getSession(true); String val=(String)hs.getAttribute(pass); /判断是否非法登陆 if(val=null) try /非法登陆 res.sendRedirect(login); catch (Exception ex) ex.printStackTrace(); else /得到从Logincl传递的用户名 String un=req.getParameter(uname); /得到从LoginCl中传递的密码 String up=req.getParameter(upassword); /输出weclcome PrintWriter pw=res.getWriter(); pw.println(welcome name=+un+ password=+up); catch (Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); 放jar包将mysql-connector-java-5.1.39-bin放到mywebsite里的WEB-INF下的lib文件夹里结果展示:Sql注入漏洞当密码输入bnb or 1=1类型时无论什么用户都可以登陆解决方法:改写LoginCl文件/* * (#)Login.java * * * author * version 1.00 2017/2/10 */验证(登陆处理)package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class LoginCl extends HttpServlet public LoginCl() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 Connection ct=null; Statement sm=null; ResultSet rs=null; try /接受用户名和密码 String u=req.getParameter(usrname); String p=req.getParameter(password); /链接数据库,加载驱动 Class.forName(com.mysql.jdbc.Driver); /得到链接 ct=DriverManager.getConnection(jdbc:mysql:/localhost:3306/xcdb?useUnicode=true&characterEncoding=gbk,root,gu123); /创建Statement sm=ct.createStatement(); rs=sm.executeQuery(select password from user where username=+u+); if(rs.next() /说明用户存在 String dbPassword=rs.getString(1); if(dbPassword.equals(p) /真的合法 /将验证成功的信息,写入session /1表示得到session HttpSession hs=req.getSession(true); /修改session 的存在时间,设为20秒 hs.setMaxInactiveInterval(20); /把信息放session hs.setAttribute(pass,ok); /跳转(welcome) res.sendRedirect(welcome?uname=+u+&upassword=+p); else /说明用户不合法 /跳转 res.sendRedirect(login); else /说明用户不存在 /跳转 res.sendRedirect(login); catch (Exception ex) ex.printStackTrace(); finally try if(rs!=null) rs.close(); if(sm!=null) sm.close(); if(ct!=null) ct.close(); catch(Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); 这样就可以防止sql注入漏洞了六、Servlet中显示图片Mywebsite下建一个文件夹imgs放图片在welcome.java下增加图片的html语句即可七、分页技术知识点很多,特别是跳转方面主要更改的是Welcome文件/* * (#)Welcome.java * * * author * version 1.00 2017/2/10 */欢迎界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class Welcome extends HttpServlet public Welcome() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 Connection ct=null; PreparedStatement ps=null; ResultSet rs=null; /业务逻辑 try /得到session HttpSession hs=req.getSession(true); String val=(String)hs.getAttribute(pass); /判断是否非法登陆 if(val=null) try /非法登陆 res.sendRedirect(login); catch (Exception ex) ex.printStackTrace(); else /得到从Logincl传递的用户名 String un=req.getParameter(uname); /得到从LoginCl中传递的密码 String up=req.getParameter(upassword); /输出weclcome /中文乱码解决方法 res.setContentType(text/html;charset=gbk); PrintWriter pw=res.getWriter(); pw.println(welcome name=+un+ password=+up); /=分页= int pageSize=3;/一页显示多少记录 int pageNow=1;/希望显示第几页,即页码 int rowCount=0;/共有几条记录(查表) int pageCount=0;/共有几页(计算出来的) int start=0;/开始第几条 /动态接受pageNow String sPageNow=req.getParameter(pageNow); if (sPageNow=null) /用户第一次进入wel else pageNow=Integer.parseInt(sPageNow); /首先得到rowCount /链接数据库,加载驱动 Class.forName(com.mysql.jdbc.Driver); /得到链接 ct=DriverManager.getConnection(jdbc:mysql:/localhost:3306/xcdb?useUnicode=true&characterEncoding=gbk,root,gu123); ps=ct.prepareStatement(select count(*) from user); rs=ps.executeQuery(); if(rs.next() rowCount=rs.getInt(1); /计算pageCount if(rowCount%pageSize=0) pageCount=rowCount/pageSize; else pageCount=rowCount/pageSize+1; / ps=ct.prepareStatement(select * from user limit 3,3); start=(pageNow-1)*pageSize; ps=ct.prepareStatement(select * from user limit +start+,+pageSize+); rs=ps.executeQuery(); pw.println(start=+start); /表头 pw.println(table border=1); pw.println(idnamepasswordmailgrade); while(rs.next() pw.println(); pw.println(+rs.getInt(1)+); pw.println(+rs.getString(2)+); pw.println(+rs.getString(3)+); pw.println(+rs.getString(4)+); pw.println(+rs.getInt(5)+); pw.println(); pw.println(); /显示超链接 for(int i=1;i=pageCount;i+) pw.println(+i+); /在servlet中显示图片 pw.println(); catch (Exception ex) ex.printStackTrace(); public void doPost(HttpServletRequest req,HttpServletResponse res) this.doGet(req,res); 增加上一页下一页/* * (#)Welcome.java * * * author * version 1.00 2017/2/10 */欢迎界面package com.tsinghua;import javax.servlet.http.*;import java.io.*;import java.sql.*;public class Welcome extends HttpServlet public Welcome() /处理get请求 public void doGet(HttpServletRequest req,HttpServletResponse res) /业务逻辑 Connection ct=null; PreparedStatement ps=null; ResultSet rs=nu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB23-T 3561-2023 城市桥梁自复位拉索减震支座技术规程
- 年产7350吨农用摇臂轴项目可行性研究报告
- 汽车水性抗紫外涂料项目可行性研究报告
- 防汛知识培训课件医院
- AbMole小课堂丨Staurosporine(星孢菌素):广谱激酶抑制剂的作用 机制及其在肿瘤、神经生物学上的研究应用
- DB65T 4100-2018 羊肺丝虫病的诊断与治疗规程
- 防意外伤害自救知识培训课件
- 建材买卖合同2篇
- 2025年信托合同2篇
- 部队军事体能训练教学课件
- 2025至2030全球及中国专用交换机(PBX)行业产业运行态势及投资规划深度研究报告
- 家政产康培训
- 22J403-1楼梯栏杆栏板
- 项目整体回购方案模板(3篇)
- 2025秋部编版(2024)八年级上册语文上课课件 第三单元 阅读综合实践
- 老年人多重用药管理
- 公园的欢乐时光记叙文(10篇)
- 人防机房管理制度
- 2025年乡村教育发展研究课题结题报告
- 2025年轴流冷却风扇行业深度研究分析报告
- 自动生成的文档-202504081202-98
评论
0/150
提交评论