第四次 测试servlet 配置web.xml

用时:五小时

看代码看的有点晕晕的 先重新看了下代码中用到的对象和运用方法

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 中的代码

e1fa69796fd1439db4239eaa88ac8719.png

fddc416e7db441be96864e635de24cbc.png bbfedf01a6a74c2d89d3b084d7da47db.png

输入admin和123456显示登录成功


遇到问题:web.xml不会自动创建/已创建项目未显示

解决:选中已经存在的项目名字,右键选择Java EE Tools ,选中Generate Deployment Descriptor Stub;还未创建的在next之后勾选Generate Deployment Descriptor Stub


之前还能好好运行,再运行莫名其秒就404了,不知道是误点了哪里,想通过映射进行查看访问路径,但是运行后又提示404,再次尝试直接运行TestServlet后结果又显示出来了,天啊都不知道自己做了什么,结果没了,结果又出来了aa2ce7d6876c495ab190b30f7217b533.png


但是还是重新尝试了下映射,有错误提示如下

30dbec9d59474fdbb6500486797ee527.png

在删除/servlet之后的显示结果

524d1476121e49a28a49814dd56121aa.png 

问题看下来猜是端口被霸占了 决定重启程序试一下

94372d0441294ca68489266c19084d2a.png

 然后又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>

be28e909949c4959b8d19405f04b7725.png

回答:声明HelloServlet类下的名字为HelloServlet的servlet,并设置其访问路径为/hello


下一个学习目标是过滤器

 创建filter类

66bf46faca9f446f86ad079f6ff63408.png

 在web.xml编写代码运用过滤器c306dd42babd44129fb46f17731ff3f2.png

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值