解决方法:
改写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(\ String p=req.getParameter(\ //链接数据库,加载驱动 Class.forName(\ //得到链接 ct=DriverManager.getConnection(\/xcdb?useUnicode=true&characterEncoding=gbk\
//创建Statement sm=ct.createStatement(); rs=sm.executeQuery(\ 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(\ //跳转(welcome)
res.sendRedirect(\ }else{ //说明用户不合法 //跳转 res.sendRedirect(\ } }else{ //说明用户不存在 //跳转 res.sendRedirect(\ } }
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(\
//判断是否非法登陆 if(val==null){ try{ //非法登陆 res.sendRedirect(\ }catch (Exception ex){ ex.printStackTrace(); } } else{ //得到从Logincl传递的用户名 String un=req.getParameter(\ //得到从LoginCl中传递的密码
String up=req.getParameter(\ //输出weclcome //中文乱码解决方法 res.setContentType(\ PrintWriter pw=res.getWriter(); pw.println(\ //===========分页============= int pageSize=3;//一页显示多少记录 int pageNow=1;//希望显示第几页,即页码 int rowCount=0;//共有几条记录(查表) int pageCount=0;//共有几页(计算出来的) int start=0;//开始第几条 //动态接受pageNow String sPageNow=req.getParameter(\ if (sPageNow==null){ //用户第一次进入wel }else{ pageNow=Integer.parseInt(sPageNow); } //首先得到rowCount //链接数据库,加载驱动 Class.forName(\ //得到链接 ct=DriverManager.getConnection(\/xcdb?useUnicode=true&characterEncoding=gbk\ ps=ct.prepareStatement(\ 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(\