【用户注册与登录模块】【一】

最近用servlet和jsp写一注册与登录模块:代码下载,猛戳这里

梗概如下:

将表单中的用户数据插入到数据库,插入之前,要查询用户名是否存在,如果存在,则跳转到注册页面,提示用户名已经存在,重新输入,注册成功,则跳转到登录页面。

涉及知识:mysql,jdbc,servlet和jsp,以及mvc分层思想。

步骤一:使用mysql数据库建表

create database jd;
  create table t_user(
     id bigint primary key auto_increment,
     username varchar(50) unique,
     name varchar(50),
     pwd varchar(20),
     gendar char(1)
     );
步骤二:创建一个web工程:

a,User实体类

b,dao类

c,regist.jsp,login.jsp

e.uti工具类

d.web类,包括AddUserServlet.java,ListUserServlet.java,LoadUserServlet,ModifyUserServlet,DelUserServlet,等servlet类。

步骤三:导入mysql驱动,配置web.xml等

该模块我还没有写我完,目前碰到一下主要异常,解决方式记录一下,以备后查:

1,

java.lang.IllegalArgumentException: Invalid <url-pattern> other in servlet mapping
原因web.xml配置错误,在错误的地方加了注释<!-- -->,导致错误

2,jsp向servlet中传值时出现异常。

jsp文件内容为:

<form action="login" method="post"> 
   		用户名:<input type="text" name="username2"> <br/>
   		密    码:<input type="password" name="pwd2">
   			<br/> <input type="submit" value="登陆">
   	</form>
servlet中的内容为:

conn=DBUtil.getConnection();
			//该语句获取jsp中传来的username2
			String username=request.getParameter("username2");
			//获取jsp中传来的pwd2
			String pwd=request.getParameter("pwd2");
			PreparedStatement prep = 
					conn.prepareStatement("select username,pwd from " +
							"t_user where username=?");			
			prep.setString(1, username);	
			//执行查询结果
			ResultSet rs=prep.executeQuery();
			//String str1=rs.getString("username");
			if(rs.next()){
				String str2=rs.getString("pwd");}
如果省略了if(rs.next())语句则会出现如下错误。

 java.sql.SQLException: Before start of result set 

3,请求的资源不被允许。

type:Statusreport
message:HTTPmethodGETisnotsupportedbythisURL
description:ThespecifiedHTTPmethodisnotallowedfortherequestedresource(HTTP
methodGETisnotsupportedbythisURL).
原因如下:
1,继承自HttpServlet的Servlet没有重写对于请求和响应的处理方法:doGet或doPost等方法;默认调用父类的doGet或doPost等方法;
2,父类HttpServlet的doGet或doPost等方法覆盖了你重写的doGet或doPost等方法;
不管是1或2,父类HttpServlet的doGet或doPost等方法的默认实现是返回状态代码为405的HTTP错误表示,对于指定资源的请求方法不被允许。
解决方法:
1,子类重写doGet或doPost等方法;
2,在你扩展的Servlert中重写doGet或doPost等方法来处理请求和响应时不要调用父类HttpServlet的doGet或doPost等方法,
即去掉super.doGet(request, response)和super.doPost(request, response);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值