用时:五小时
看代码看的有点晕晕的 先重新看了下代码中用到的对象和运用方法
throws关键字:提醒该段代码可能会有异常,需进行相关处理
response对象:对客户端响应,将jsp处理过的对象重新传回客户端
doGet方法提交表单,会在url后边显示提交的内容(所以不安全,运用doPost更好,该方法还没有字符数限制)
PrintWriter方法可以直接调用write()或print()方法,把字符串作为参数写入,使客户端接受数据
在学习之前先抄了一套表单提交代码先行理解
@WebServlet(description = "我的第一个servlet", urlPatterns = { "/TestServlet" })
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public TestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String sex = request.getParameter("sex");
String age = request.getParameter("age");
String str = "{\"name\":\"" + name + "\",\"sex\":\"" + sex + "\",\"age\":" + age + "}";
response.getWriter().write(str);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String account = request.getParameter("account");
String psd = request.getParameter("psd");
if(account.equals("admin") && psd.equals("123456")) {
request.getRequestDispatcher("test1.jsp").forward(request, response);
}else if(account.equals("admin") && !psd.equals("123456")) {
request.setAttribute("psdErrorString", "password is error");
request.getRequestDispatcher("test.jsp").forward(request, response);
}else if(!account.equals("admin") && psd.equals("123456")) {
request.setAttribute("accountErrorString", "account is error");
request.getRequestDispatcher("test.jsp").forward(request, response);
}else {
request.setAttribute("errorString", "login error");
request.getRequestDispatcher("test.jsp").forward(request, response);
}
}
}
src目录中TestServlet.java 中的代码
输入admin和123456显示登录成功
遇到问题:web.xml不会自动创建/已创建项目未显示
解决:选中已经存在的项目名字,右键选择Java EE Tools ,选中Generate Deployment Descriptor Stub;还未创建的在next之后勾选Generate Deployment Descriptor Stub
之前还能好好运行,再运行莫名其秒就404了,不知道是误点了哪里,想通过映射进行查看访问路径,但是运行后又提示404,再次尝试直接运行TestServlet后结果又显示出来了,天啊都不知道自己做了什么,结果没了,结果又出来了
但是还是重新尝试了下映射,有错误提示如下
在删除/servlet之后的显示结果
问题看下来猜是端口被霸占了 决定重启程序试一下
然后又404了 决定不再纠结了 总之成功显示结果了
附上web.xml中的部分源代码
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.qcby.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/servlet/TestServlet</url-pattern>
</servlet-mapping>
回答:声明HelloServlet类下的名字为HelloServlet的servlet,并设置其访问路径为/hello
下一个学习目标是过滤器
创建filter类
在web.xml编写代码运用过滤器