以登陆实现理解servlet+jsp+javabean开发

时间:2021-03-30 19:06:32

学过servlet的都知道,书本上一直说servlet一直作为控制器使用,它不实现view层,也不做具体的事务处理,那servlet到底是干什么的哪?怎么合理的用它呐??

1:首先我们先写一个登陆界面(源码下方有链接,这里谈谈效果)

1 <form class="login-from" action="${pageContext.request.contextPath }/user" id="loginfrom" method="post">
2 <input type="hidden" name="method" value="login">
3 。。。。。。
4 </form>

  提交的表单要注意,为了将整个表单的数据往一个servlet提交,这里我采用一个隐藏字段,添加method为login的方法

2:我们新建servlet并在web.xml中进行配置:通过配置表单由

<url-pattern>/user</url-pattern>----><servlet-name>UserServlet</servlet-name>----><servlet-name>UserServlet</servlet-name>---->
<servlet-class>com.xqc.chatroom.action.UserServlet</servlet-class>被传给了UserServlet
1   <servlet>
2 <servlet-name>UserServlet</servlet-name>
3 <servlet-class>com.xqc.chatroom.action.UserServlet</servlet-class>
4 </servlet>
5
6 <servlet-mapping>
7 <servlet-name>UserServlet</servlet-name>
8 <url-pattern>/user</url-pattern>
9 </servlet-mapping>

在新建的Userservlet中

看代码:Userservlet为了甩锅,说“这些小事我不能干啊,我是控制器,那UserService你来干吧!”然后顺利甩锅给Service

我们打开Service

1 public class UserService {
2
3 public User login(User user) {
4 UserDao dao = new UserDaoImple();
5 return dao.login(user);
6 }
7 }

Service一看,“妈呀这要访问数据库啊!我干不了,我也得找个人干这事!”于是Service来到了dao层找到UserDao

1 public interface UserDao {
2
3 public User login(User user);
4
5 }

UserDao听到说“我就是个空架子,你有事去找‘实现’去!”所以UserService就new UserDaoImple()

 1     public User login(User user) {
2 QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());
3 String sql = "select * from user where username = ? and password = ?";
4 User existUser;
5 try {
6 existUser = queryRunner.query(sql, new BeanHandler<User>(User.class), user.getUsername(),user.getPassword());
7 } catch (SQLException e) {
8 e.printStackTrace();
9 throw new RuntimeException("用户登录失败!");
10 }
11 return existUser;
12
13 }

于是UserDaoImpl就联合JDBCUtils和老朋友c3p0实现了和数据库的交互然后把结果返回Service,Service也直接就把拿到的结果直接返回给servlet,然后servlet拿到结果,说“我明白了!控制就交给我吧!是有效的用户我就让他去main.jsp,不是我就让他滚蛋!”这次终于办了点正事不甩锅了!

1111