韩顺平servlet笔记(完整代码) - 图文 下载本文

解决方法:

改写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(\