其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用,当然说那些使超级无敌变态并不是说他们很变态,是他们的思想太强大了。
言归正传,这次使用的拦截器是struts2框架的核心之处,希望学习struts2框架的小伙伴重视起来哦。一起共勉。
1:第一步依旧是导包哦,使用别人的框架,第一步,就记住导入自己使用的核心包即可。
2:配置web.xml过滤器,这些都是死东西,记住会写即可。
1
2
3 struts2_login20170307
4
5 index.html
6 index.htm
7 index.jsp
8 default.html
9 default.htm
10 default.jsp
11
12
13
14
15
16 struts2
17
18 class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterclass>
19
20
21
22 struts2
23
24 /*
25
26
3:第三步,想要登陆就必须设计号数据表,当然你首先要设计好数据库。字段如下所示:

4:设计好数据表之后就可以创建实体类User.java,源码如下所示:
1 package com.bie.po;
2
3 import java.io.Serializable;
4
5 /**
6 * @author BieHongLi
7 * @version 创建时间:2017年3月5日 上午9:40:09
8 *
9 */
10 public class User implements Serializable{
11
12 private static final long serialVersionUID = 1L;
13 private Integer id;
14 private String name;
15 private String password;
16 private String email;
17 private String phone;
18 public Integer getId() {
19 return id;
20 }
21 public void setId(Integer id) {
22 this.id = id;
23 }
24 public String getName() {
25 return name;
26 }
27 public void setName(String name) {
28 this.name = name;
29 }
30 public String getPassword() {
31 return password;
32 }
33 public void setPassword(String password) {
34 this.password = password;
35 }
36 public String getEmail() {
37 return email;
38 }
39 public void setEmail(String email) {
40 this.email = email;
41 }
42 public String getPhone() {
43 return phone;
44 }
45 public void setPhone(String phone) {
46 this.phone = phone;
47 }
48 @Override
49 public String toString() {
50 return "User [, name=" + name + ", password=" + password + ", email=" + email + ", phone=" + phone
51 + "]";
52 }
53
54
55 }
5:完成了实体类,就可以如以前学习的那样,写dao层,service层,当然servlet层被action层替换了。这里先写dao层吧,首先创建工具类BaseDao.java,源码如下所示:
package com.bie.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
/**
* @author BieHongLi
* @version 创建时间:2017年3月5日 上午9:32:14
* 数据交互层dao层
*/
public class BaseDao {
private static String driver="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql:///test";
private static String user="root";
private static String password="123456";
/***
* 连接数据库的方法
* @return
* @throws ClassNotFoundException
* @throws SQLException
*/
public static Connection getCon() throws ClassNotFoundException, SQLException{
Class.forName(driver);//加载数据库驱动
System.out.println("测试加载数据库成功");
Connection con=DriverManager.getConnection(url, user, password);
System.out.println("测试数据库链接成功");
return con;
}
/***
* 关闭数据库的方法
* @param con
* @param ps
* @param rs
*/
public static void close(Connection con,PreparedStatement ps,ResultSet rs){
if(rs!=null){//关闭资源,避免出现异常
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/***
* 同意增删改的方法
* @param sql
* @param arr
* @return
*/
public static boolean addUpdateDelete(String sql,Object[] arr){
Connection con=null;
PreparedStatement ps=null;
try {
con=BaseDao.getCon();//第一步 :连接数据库的操作
ps=con.prepareStatement(sql);//第二步:预编译
//第三步:设置值
if(arr!=null && arr.length!=0){
for(int i=0;i){
ps.setObject(i+1, arr[i]);
}
}
int count=ps.executeUpdate();//第四步:执行sql语句
if(count>0){
return true;
}else{
return false;
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
try {
BaseDao.getCon();
System.out.println("测试数据库链接成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
6:建议再创建一个工具类,过滤编码的UTFFilter.java
1 package com.bie.dao;
2
3 import java.io.IOException;
4
5 import javax.servlet.Filter;
6 import javax.servlet.FilterChain;
7 import javax.servlet.FilterConfig;
8 import javax.servlet.ServletException;
9 import javax.servlet.ServletRequest;
10 import javax.servlet.ServletResponse;
11 import javax.servlet.annotation.WebFilter;
12 import javax.servlet.http.HttpServletRequest;
13
14 /**
15 * @author BieHongLi
16 * @version 创建时间:2017年2月21日 上午11:08:49
17 *
18 */
19 @WebFilter("/*")
20 public class UTFFilter implements Filter{
21
22 @Override
23 public void destroy() {
24 // TODO Auto-generated method stub
25
26 }
27
28 @Override
29 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
30 FilterChain filterChain)throws IOException, ServletException {
31 //将servletRequest转发为HttpServletRequest
32 HttpServletRequest request=(HttpServletRequest)servletRequest;
33 request.setCharacterEncoding("utf-8");
34 filterChain.doFilter(servletRequest, servletResponse);
35 }
36
37 @Override
38 public void init(FilterConfig arg0) throws ServletException {
39 // TODO Auto-generated method stub
40
41 }
42
43
44 }
7:接着写service层的接口和实现类;
1 package com.bie.dao;
2
3 import java.util.List;
4
5 import com.bie.po.User;
6
7 /**
8 * @author BieHongLi
9 * @version 创建时间:2017年3月5日 上午9:39:21
10 *
11 */
12 public interface UserDao {
13
14 /***
15 * 登陆的方法
16 * @param user
17 * @return
18 */
19 public User selectLogin(User user);
20
21 /***
22 * 用户查询的方法
23 * @param sql
24 * @param arr
25 * @return
26 */
27 public List selectUser(String sql,Object[] arr);
28 }
1 package com.bie.dao.impl;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.util.ArrayList;
8 import java.util.List;
9
10 import com.bie.dao.BaseDao;
11 import com.bie.dao.UserDao;
12 import com.bie.po.User;
13
14 /**
15 * @author BieHongLi
16 * @version 创建时间:2017年3月5日 上午9:39:35
17 *
18 */
19 public class UserDaoImpl implements UserDao{
20
21 @Override
22 public User selectLogin(User user) {
23 Connection con=null;
24 PreparedStatement ps=null;
25 ResultSet rs=null;
26 try {
27 con=BaseDao.getCon();//1:获取数据库的连接
28 //2:书写sql语句
29 String sql="select * from user where name=? and password=? ";
30 ps=con.prepareStatement(sql);//3:预编译
31 //4:设置值
32 ps.setString(1, user.getName());
33 ps.setString(2, user.getPassword());
34 rs=ps.executeQuery();//5:执行sql语句
35 User users;
36 if(rs.next()){
37 users=new User();
38 //从数据库中获取值设置到实体类的setter方法中
39 users.setId(rs.getInt("id"));
40 users.setName(rs.getString("name"));
41 users.setPassword(rs.getString("password"));
42 users.setEmail(rs.getString("email"));
43 users.setPhone(rs.getString("phone"));
44 //user.setIsAdmin(rs.getString("isAdmin"));
45
46 //return user;
47 }
48 } catch (ClassNotFoundException e) {
49 e.printStackTrace();
50 } catch (SQLException e) {
51 e.printStackTrace();
52 }finally{
53 //关闭资源,避免出现异常
54 BaseDao.close(con, ps, rs);
55 }
56 return user;
57 }
58
59 @Override
60 public List selectUser(String sql, Object[] arr) {
61 Connection con=null;
62 PreparedStatement ps=null;
63 ResultSet rs=null;
64 try {
65 con=BaseDao.getCon();//第一步连接数据库
66 ps=con.prepareStatement(sql);//第二步:预编译
67 if(arr!=null){
68 for(int i=0;i){
69 ps.setObject(i+1, arr[i]);
70 }
71 }
72 //第四步执行sql
73 rs=ps.executeQuery();
74 List list=new ArrayList();
75 while(rs.next()){
76 User user=new User();
77 user.setId(rs.getInt("id"));
78 user.setName(rs.getString("name"));
79 user.setPassword(rs.getString("password"));
80 user.setEmail(rs.getString("email"));
81 user.setPhone(rs.getString("phone"));
82
83 //System.out.println(user);//测试数据
84 list.add(user);
85 }
86 return list;
87 } catch (ClassNotFoundException e) {
88 e.printStackTrace();
89 } catch (SQLException e) {
90 e.printStackTrace();
91 }finally{
92 //关闭资源,避免出现异常
93 BaseDao.close(con, ps, rs);
94 }
95
96 return null;
97 }
98
99
100 }
8:接着写service层的接口和实现类,接口UserService.java和实现类UserServiceImpl.java;
1 package com.bie.service;
2
3 import java.util.List;
4
5 import com.bie.po.User;
6
7 /**
8 * @author BieHongLi
9 * @version 创建时间:2017年2月23日 下午1:58:59
10 *
11 */
12 public interface UserService {
13
14 /***
15 * 用户查询的信息
16 * @param user
17 * @return
18 */
19 public List selectUser(User user);
20
21 /***
22 * 用户登陆的功能
23 * @param user
24 * @return
25 */
26 public User login(User user);
27 }
1 package com.bie.service.impl;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.bie.dao.UserDao;
7 import com.bie.dao.impl.UserDaoImpl;
8 import com.bie.po.User;
9 import com.bie.service.UserService;
10
11 /**
12 * @author BieHongLi
13 * @version 创建时间:2017年2月23日 下午1:59:36
14 *
15 */
16 public class UserServiceImpl implements UserService{
17
18 private UserDao dao=new UserDaoImpl();
19
20 @Override
21 public List selectUser(User user) {
22 //sql语句
23 //String sql="select * from user ";
24 StringBuilder sql=new StringBuilder("select * from user where 1=1 ");
25 List