eclipse jsp mysql_Eclipse+Servlet+jsp+MySql

一、JSP和Servlet的简单介绍:

Java开发Web应用程序时用到的技术主要有两种,即Servlet和JSP,Servlet是在服务器端执行的Java程序,一个被称为Servlet容器的程序(其实就是服务器) 负责执行Java程序,而JSP(Java Server Page)则是一个页面, 由JSP容器负责执行。

Servlet以Java程序为主, 输出HTML代码时需要使用out.println函数,也就是说Java中内嵌HTML; 而JSP则以HTML页面为主,需要写Java代码时则在页面中直接插入Java代码, 即HTML中内嵌Java。

MVC模型

MVC模型就是将数据、逻辑处理、用户界面分离的一种方法。

1)、M(Model, 模型):用于数据处理、逻辑处理

2)、V(View,视图):用于显示用户界面

3)、C(Controller,控制器):根据客户端的请求控制逻辑走向和画面

而在Java中,MVC这三个部分则分别对应于 JavaBeans、JSP和Servlet

1)、M = JavaBeans:用于传递数据,拥有与数据相关的逻辑处理

2)、V = JSP:从Model接收数据并生成HTML

3)、C = Servlet:接收HTTP请求并控制Model和View

web的运行机制:

数据首先在jsp上被展示出来,用户看到页面后触发一些事件,并可能传递数据,这些数据和请求被控制器接收到,然后开始处理(往往会需要有一些数据库的操作(查询,修改数据库数据)),当这些处理结束后,我们就需要将数据反馈到JSP上显示给用户看,完成一次完整的交互过程。

下面描述这个例子, 用的Tomcat7.0, mysql用的是5.17版本,下面是工程结构:

117b36b9d2224eb19299c36586dc0344.png

Util---DBUtil.java用来连接JDBC数据库

user---User用来定义用户数据类型

servlet---用来处理用户业务求情和逻辑控制

dao---UserDao用来处理与数据库相关的操作,例如添加用户、查找用户等

大家看一下运行效果:

08a12c246a9ecd8c6b8cfb3098fa3caa.png

下面描述详细code:

User.Java

1 packageuser;2

3 public classUser {4 privateInteger id;5 privateString name;6 privateString password;7 private introle;8 /**

9 *@returnthe id10 */

11 publicInteger getId() {12 returnid;13 }14 /**

15 *@paramid the id to set16 */

17 public voidsetId(Integer id) {18 this.id =id;19 }20 /**

21 *@returnthe name22 */

23 publicString getName() {24 returnname;25 }26 /**

27 *@paramname the name to set28 */

29 public voidsetName(String name) {30 this.name =name;31 }32 /**

33 *@returnthe password34 */

35 publicString getPassword() {36 returnpassword;37 }38 /**

39 *@parampassword the password to set40 */

41 public voidsetPassword(String password) {42 this.password =password;43 }44 /**

45 *@returnthe role46 */

47 public intgetRole() {48 returnrole;49 }50 /**

51 *@paramrole the role to set52 */

53 public void setRole(introle) {54 this.role =role;55 }56

57

58 }

DBUtil.java  连接数据库

1 packageutil;2

3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.Driver;6 importjava.sql.SQLException;7 importjava.sql.Statement;8

9 public classDBUtil {10

11 public static final String driver="com.mysql.jdbc.Driver";12 public static final String url="jdbc:mysql://localhost:3306/user?characterEncoding=utf8&useSSL=true";13 public static final String username="root";14 public static final String password="root";15 public static Connection con=null;16

17

18 static{19 try{20 Class.forName(driver);//得到DriverManager,在下面建立连接时使用

21 } catch(ClassNotFoundException e) {22 e.printStackTrace();23 }24 }25

26 public staticConnection getCon(){27

28 if(con == null){29 try{30 con =DriverManager.getConnection(url, username, password);31 } catch(SQLException e) {32 e.printStackTrace();33 }34 }35 returncon;36 }37

38 //关闭的方法

39 public static voidclose(Statement statement,Connection conn){40 if(statement !=null){41 try{42 statement.close();43 } catch(SQLException e) {44 //TODO Auto-generated catch block

45 e.printStackTrace();46 }47 }48

49 if(conn !=null){50 try{51 conn.close();52 } catch(SQLException e) {53 //TODO Auto-generated catch block

54 e.printStackTrace();55 }56 }57 }58

59 public static voidmain(String args[]){60 newDBUtil().getCon();61 }62 }

dao---UserDao.java   处理数据库相关操作

1 packagedao;2

3 importjava.sql.Connection;4 importjava.sql.PreparedStatement;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7

8 importuser.User;9 importutil.DBUtil;10

11 public classUserDao {12

13 //数据库连接对象

14 publicUser login(String username,String password) {15 User u=null;16 Connection connection =null;17 PreparedStatement pstmt=null;18 ResultSet resultSet=null;19

20 //赋值

21 try{22 connection=DBUtil.getCon();23 //静态sql语句

24 String sql = "select * from user where name=? and password=?";25 pstmt =(PreparedStatement) connection.prepareStatement(sql);26 pstmt.setString(1, username);27 pstmt.setString(2, password);28 resultSet =pstmt.executeQuery();29 if(resultSet.next()){30 u=newUser();31 u.setName(resultSet.getString("name"));32 u.setPassword(resultSet.getString("password"));33 System.out.println("登录成功!");34 }else{35 System.out.println("用户名或者密码错误!");36 }37 } catch(SQLException e) {38 e.printStackTrace();39 }finally{40 //DBUtil.close(pstmt, connection);

41 }42 returnu;43

44 }45

46 public booleanaddUser(User user) {47 Connection connection = null;48 PreparedStatement psmt = null;49 try{50 connection =DBUtil.getCon();51

52 String sql ="insert into user(id,name,password,role)values(?,?,?,?);";53

54 psmt =(PreparedStatement) connection.prepareStatement(sql);55

56 //运用实体对象进行参数赋值

57 psmt.setInt(1, user.getId());58 psmt.setString(2, user.getName());59 psmt.setString(3,user.getPassword());60 psmt.setInt(4, user.getRole());61 psmt.executeUpdate();62 } catch(SQLException e) {63 e.printStackTrace();64 return false;65 }finally{66 //DBUtil.close(psmt, connection);

67 }68 return true;69 }70 }

Servlet---处理相关用户业务逻辑  LoginServlet和RegisterServlet.java

1 packageservlet;2

3 importjava.io.IOException;4

5 importjavax.servlet.ServletException;6 importjavax.servlet.annotation.WebServlet;7 importjavax.servlet.http.HttpServlet;8 importjavax.servlet.http.HttpServletRequest;9 importjavax.servlet.http.HttpServletResponse;10 importjavax.servlet.http.HttpSession;11

12 importdao.UserDao;13 importuser.User;14

15 /**

16 * Servlet implementation class LoginServlet17 */

18 @WebServlet("/LoginServlet")19 public class LoginServlet extendsHttpServlet {20 private static final long serialVersionUID = 1L;21

22 /**

23 *@seeHttpServlet#HttpServlet()24 */

25 publicLoginServlet() {26 super();27 //TODO Auto-generated constructor stub

28 }29

30 /**

31 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)32 */

33 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {34 //TODO Auto-generated method stub

35 response.getWriter().append("Served at: ").append(request.getContextPath());36 }37

38 /**

39 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)40 */

41 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {42 //TODO Auto-generated method stub

43 request.setCharacterEncoding("utf-8");44 response.setContentType("text/html;charset=utf-8");45 HttpSession sessionzxl =request.getSession();46 String username = request.getParameter("username");47 String password = request.getParameter("password");48 UserDao userDAO=newUserDao();49 User user=userDAO.login(username, password);50 if(user!=null){51 sessionzxl.setAttribute("user", user);52 request.getRequestDispatcher("success.jsp").forward(request, response);;53 }else{54 request.getRequestDispatcher("error.jsp").forward(request, response);55 }56 }57

58 }

1 packageservlet;2

3 importjava.io.IOException;4

5 importjavax.servlet.ServletException;6 importjavax.servlet.annotation.WebServlet;7 importjavax.servlet.http.HttpServlet;8 importjavax.servlet.http.HttpServletRequest;9 importjavax.servlet.http.HttpServletResponse;10 importjavax.servlet.http.HttpSession;11

12 importdao.UserDao;13 importuser.User;14

15 /**

16 * Servlet implementation class RegisterServlet17 */

18 @WebServlet("/RegisterServlet")19 public class RegisterServlet extendsHttpServlet {20 private static final long serialVersionUID = 1L;21

22 /**

23 *@seeHttpServlet#HttpServlet()24 */

25 publicRegisterServlet() {26 super();27 //TODO Auto-generated constructor stub

28 }29

30 /**

31 *@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)32 */

33 protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {34 //TODO Auto-generated method stub

35 response.getWriter().append("Served at: ").append(request.getContextPath());36 }37

38 /**

39 *@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)40 */

41 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {42 request.setCharacterEncoding("utf-8");43 response.setContentType("text/html;charset=utf-8");44 request.setCharacterEncoding("utf-8");45 int id=Integer.valueOf(request.getParameter("id"));46 String name=request.getParameter("name");47 String password=request.getParameter("password");48 int role=Integer.valueOf(request.getParameter("role"));49 User user=newUser();50 user.setId(id);51 user.setName(name);52 user.setPassword(password);53 user.setRole(role);54 UserDao userDAO=newUserDao();55 boolean result =userDAO.addUser(user);56 if(result){57 System.out.println("注册成功!");58 HttpSession session =request.getSession();59 session.setAttribute("user", user);60 String loginSuccess = "LoginSuccess.jsp";61 response.sendRedirect(loginSuccess);62 }else{63 System.out.println("注册失败!");64 String loginFail = "LoginFail.jsp";65 response.sendRedirect(loginFail);66 }67 //request.getRequestDispatcher("Login.jsp").forward(request, response);

68 }69 }

下面是jsp脚本控制:

首先看一下登录脚本Login.jsp

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7

登录界面

8

9 body{10 background-image:url(images/login.jpg);11 background-position:center;12 background-repeat:no-repeat;13 }14

15

16

17

18

19

诗远的主页

20

21

22 用户登录

23

24

登录名:

25

26

27

28

密码:

29

30

31

32

33

34

35

36 注册

37

38

39

注册页面Register.jsp

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7

注册界面

8

9 body{10 background-image:url(images/register.jpg);

11 background-position:center;12 background-repeat:no-repeat;13 }14

15

16

17

18

19

请注册

20

21

22

用户注册

23

24

ID:

25

26

27

28

登录名:

29

30

31

32

密码:

33

34

35

36

角色:

37

38

39

40

41

42

43

44 登录

45

46

47

登录成功界面,这个比较简单,是后面自己修改的success.jsp:

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7 String path =request.getContextPath();8 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";9 %>

10

11

12

13

14

15

My JSP 'success.jsp' starting page

16

17

18

19 "Congratulations! Login success!";

20 username:

21 password:

22 basePath:

23 path:

24

25

登录失败后的界面error.jsp:

1

2 pageEncoding="UTF-8"%>

3

4

5 String path =request.getContextPath();6 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";7 %>

8

9

10

11

12

13

My JSP 'fail.jsp' starting page

14

15

16 Login Failed!

17 basePath:

18 path:

19 请重新登录

20

21

注册成功后的界面LoginSuccess.jsp:

1

2 pageEncoding="UTF-8"%>

3

4

5

6

7 String path =request.getContextPath();8 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";9 %>

10

11

12

13

14

15

My JSP 'Loginsuccess.jsp' starting page

16

17

18

19 "Congratulations! Register success!";

20 username:

21 password:

22 basePath:

23 path:

24 点击登录

25

26

注册失败后的界面LoginFail.jsp

1

2 pageEncoding="UTF-8"%>

3

4

5 String path =request.getContextPath();6 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";7 %>

8

9

10

11

12

13

My JSP 'LoginFail.jsp' starting page

14

15

16 Register Failed!

17 basePath:

18 path:

19 重新注册

20

21

所有的jsp脚本到此结束。

下面看web.xml配置:如果是比较旧的tomcat版本,不支持WebServlet注解方式,就需要在web.xml里面配置servlet-mapping映射。

我用的是Tomcat7.0,Servlet是3.0, 支持servlet注解。所以不需要在web.xml里面配置servlet.你可以在Servlet的java文件里面看到这样自动生成的注解:

@WebServlet("/LoginServlet")

@WebServlet("/RegisterServlet")

但是在web.xml里面需要在webclme-file-list配置登录界面,如下:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 ServletWebDemo

4

5 Login.jsp

6

7

最后看一下数据库操作,我装的是Mysql5.7版本,装过最新的Mysql8.15版本,可是装不成功,所以直接装的5.7版本。然后还装了一个SQLyog软件来界面控制SQL。

从DBUtil里面可以看到,连接的数据库是user, 后面在UserDao操作的数据表是user。mysql登录用户名和密码是root和root。下面接了个Mysql的数据结构:

03025ea7f3e3fc5119120ac3142a4b38.png

在上面数据表定义中,把id声明为主键,下面是我注册过几次后数据表的结构,

fe92c8ac73cb5fa9034b70b4b15d5c80.png

注意一下,在上面工程中要导入两个包,一个是servlet-api.jar, 一个是mysql-connector-java-5.1.47.jar

背景图片放在:images下面。到此整个工程code介绍完了。按照上面code应该是能够运行起来。

主要参考博客有:

https://blog.csdn.net/yjx568135132/article/details/73896240

https://blog.csdn.net/blackplus28/article/details/80603863

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值