servlet的一个小项目(三)
用的是韩顺平老师的代码:
//主界面
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class Main extends HttpServlet {
//处理get请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//这个main没什么可说的,跳转过来,直接显示就行了。
pw.println("<html>");
pw.println("<body bgcolor=#CED3FF>");
pw.println("<img src=imgs/1.GIF><hr><center>");
pw.println("<h1>主界面</h1>");
//下面这个是跳转到欢迎界面。后面那几个界面没有写,所以现在弄的是问号。
//添加了对应的界面之后,用对应的名字替换就行了。
pw.println("<a href=wel>管理用户</a><br>");
pw.println("<a href=???>添加用户</a><br>");
pw.println("<a href=???>查找用户</a><br>");
pw.println("<a href=???>安全退出</a><br>");
pw.println("</center><hr><img src=imgs/mylogo.gif>");
pw.println("</body>");
pw.println("</html>");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
//操作成功界面,可以复用
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class Ok extends HttpServlet {
//处理get请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//返回登录界面
pw.println("<html>");
pw.println("<body bgcolor=#CED3FF>");
pw.println("<img src=imgs/1.GIF><hr><center>");
pw.println("<h1>恭喜你,操作成功!</h1>");
pw.println("<a href=Main>返回主界面</a> <a href=wel>继续删除用户</a>");
pw.println("</center><hr><img src=imgs/mylogo.gif>");
pw.println("</body>");
pw.println("</html>");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
servletcontext
servletcontext存在于服务器,多个用户均可以访问。
//向servlet context中添加属性
package com.tsinghua;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class ServletContextTest1 extends HttpServlet {
//处理get请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//1得到servletcontext
//得到是不是就是在服务器的内存获取了一块空间呢?
ServletContext sc=this.getServletContext();
//2添加属性
//是不是也可以看做是一个表?
sc.setAttribute("myInfo","我是蜗牛");
//比较session
//下面的是获取session,准备往进放。
HttpSession hs=req.getSession(true);
hs.setAttribute("test","中国人");
hs.setMaxInactiveInterval(60*3);
pw.println("向session中添加一个test属性 他的值是 中国人<br>");
//===当然也可以在servletcontext中放入一个对象
// Cat myCat=new Cat("小明",30);
//
// sc.setAttribute("cat1",myCat);
//
//
// pw.println ("给sevlet context中添加一个属性 cat1 该属性对应的值是一个猫对象<br>");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
class Cat{
private String name;
private int age;
public Cat(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
测试这个页面放入的servletcontext内容:
//从servlet context中得到属性
package com.tsinghua;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class ServletContextTest2 extends HttpServlet {
//处理get请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//1得到servlet context
ServletContext sc=this.getServletContext();
//2得到属性和它对应的值
//和之前的获取的方式是一样的,一般的用法是一张表,但是也能放入对象。
String info=(String)sc.getAttribute("myInfo");
pw.println ("从servlet context中得到属性 myinfo 它对应的值是"+info+"<br>");
//比较session
HttpSession hs=req.getSession(true);
String val=(String)hs.getAttribute("test");
pw.println("session 中的 test="+val+"<br>");
//看到没有,获取的方式也是一样的。
//得到另外一个属性
//获取对象也是按照对象的名字取出来。
// Cat myCat=(Cat)sc.getAttribute("cat1");
// //新建一个对象去接收。
// pw.println ("从servlet context中得到属性 cat1 他的名字是"+
// myCat.getName()+" 他的年龄是"+myCat.getAge()+"<br>");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
servletFile用servlet操作文件:
//演示如何在serlvet中操作文件
//演示如何读取文件的内容
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class ServletFileTest1 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//创建一个FileReader
//就这么简单的做法啊。其实想想原理也就这样,
//你在执行这个程序的时候,向服务器申请了一块空间,
//这个程序在服务器的内存中,也是一个编译过的class文件吧
//然后就可以操作服务器硬盘的文件了吧。
FileReader f=new FileReader("f:\\myCounter.txt");
BufferedReader bw=new BufferedReader(f);
//读出一行数据
String numVal=bw.readLine();
//一定要关闭文件流
bw.close();
pw.println("从文件中读取的数据是:"+numVal);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
//演示如何在serlvet中操作文件
//演示如何在文件中写入数据
package com.tsinghua;
import java.io.*;
import javax.servlet.http.*;
public class ServletFileTest2 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try {
//中文乱码
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//创建一个FileWriter 看内存数据 -> 磁盘文件(写入,输出)
//看内存数据 <- 磁盘文件(读入,输入)
//和普通的java文件没有区别。
FileWriter f=new FileWriter("f:\\myCounter.txt");
BufferedWriter bw=new BufferedWriter(f);
//在文件中写入数据
bw.write("1");
//关闭文件流
bw.close();
pw.println("在文件中写入了数据");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}