Servlet学习进度
闲聊:今晚整理下思路,总结下最新的Servle进度,发现写博客是个好习惯,既可以总结整理知识,以后忘记了还可以回过头来迅速学习,事半功倍!
今晚先整理有一个 ,明天再来一个 一:简单的报表数据提交。//二:请求的转发。
废话不多说:问题一:简单的报表提交
思路:
一:建立JavaWeb项目,我这里偷懒,直接在netbeans建立项目
二:在web.xml配置文件中设置报表为默认启动页面,这里的报表我用servlet编写,用html或者jsp编写也是可以的啦。
三:编写处理报表数据的Servlet,记得在web.xml中要配置,还有个报表的action要和Servlet的url一模一样,除了"/"这个符号!
步骤一:编写报表
报表首先要有报表嘛,在这里我用简单的登录信息报表,也就是说只有用户名,密码,用servlet类编写的一张报表,简单粗暴点,直接贴代码
package hjr;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author hjr
*/
public class Login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter pw = response.getWriter();
pw.println("
");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
步骤二:编写Servlet类
老规矩,直接上代码
package hjr;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author hjr
*/
public class myServlet extends HttpServlet {
private String Welcome;
@Override
public void init() {
Welcome = this.getInitParameter("welcome");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gb2312");
String username = request.getParameter("username");
String password = request.getParameter("password");
String welcome = Welcome;
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println("");
out.println("Servlet Test ");
out.println("");
out.println("");
if (username.equals("huangjinrong") && password.equals("dabai_cai")) {
out.println("" + Welcome + username + "
");
} else {
out.println("" + username + "你不是用户
");
}
out.println("");
out.println("");
out.close();
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
@Override
public String getServletInfo() {
return "hello servlet";
}
}
这里说一下,我又偷懒了,doGet,doPost我只写了一个,报表的用得是post.默认是get,但get有数据大小的限制,而且传递的数据会暴露在浏览器的url栏,
仔细观察就可以发现,而理论上post数据可以无限大小,而且数据不会暴露在url栏,安全性高。
步骤三:配置文件的编写
还是看代码!!!!!!!!!!!!!!!!!!!!!!!!
contextConfigLocation
/WEB-INF/applicationContext.xml
org.springframework.web.context.ContextLoaderListener
dispatcher
org.springframework.web.servlet.DispatcherServlet
2
Login
hjr.Login
Login
/login
myServlet
hjr.myServlet
welcome
welcome to myWebServlet dear:
myServlet
/myServlet
30
login
注意点: 第一:首页是login
第二:login的报表的action和myServlet的url一样,除了"/"号
第三:servlet有包名要加上去,补全
最后整理几句,方便以后看:
WEB-INF目录对客户端是不可见的
Init()方法中,本质是调用getServletConfig()来获取ServletConfig对象,然后再调用各个初始化方法
servlet容器用反射调用servlet的默认构造方法,即无参构造方法,所以我们在写servlet类时,不能写带参
的构造方法
servlet何时destory??,需要释放内存或者容器关闭时,还有该servlet抛出异常,表示永久不可用时。
每个WebApplication只有一个ServletContext,保存着App的上下文信息,所有App里面的servlet都可以访问
好困........明天继续整理!!!!!!!!!!!!