Struts2学习(三)---Struts2.5使用通配符完成登录注册
2017-03-13 10:32
549 查看
先说说Struts2.5版本之后吧,Struts2可能觉得安全不够,要提高安全强度,然后现在的struts.xml里面你必须要加一个
-1,先看web.xml,配置过滤器的时候在2.5跟前面的不一样,最好还是用Ctrl+shift+t来寻找
0.我用的maven,先看看pom.xml,搭建自己的骨架可以看看我另一个博客http://blog.csdn.net/shouldnotappearcalm/article/details/52353712
1.现在来看看struts.xml文件
你也可以像我一样
*这里使用通配符,user_ method=”{1}” {1}这里是通配符
如果是user_login 会调用login方法
如果是user_*_* method=”{1}_{1}”
如果是user_test1_test2 会调用test1_test2方法**
2.现在来看UserAction
3.接下来看看数据库连接工具,你们链接自己的
4.接下来就看看Dao层,没什么好解释的,很简单
5.这里还没用Spring,还是new吧。接下来是service层的代码
6.UserService写的是接口,现在写实现类
7.Mode层的User
8.数据库建表的就不说了,很简单的,但是接的id列我设置了auto_increment.
9.下面是几个页面
login.jsp
register.jsp
index.jsp
以上就是全部的代码了,基本还是很简单的,记得使用通配符,真的好用,还有就是struts2.5版本记得配置allow-methods,低于2.5的就不用管了,还有就是昨晚写了会电脑就没电了(人傻钱多戴),eclipse还是有点问题的,刚开始写的我用tomcat编译感觉没有真的便宜,一直找不到方法,今早重启电脑看到报了两个错,但是昨晚没报错,真的坑。
有问题的下方留言。
<allow-methods>,
-1,先看web.xml,配置过滤器的时候在2.5跟前面的不一样,最好还是用Ctrl+shift+t来寻找
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> </web-app>
0.我用的maven,先看看pom.xml,搭建自己的骨架可以看看我另一个博客http://blog.csdn.net/shouldnotappearcalm/article/details/52353712
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.nsu</groupId> <artifactId>ClassStudyStruts2_01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.5</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.struts.xwork/xwork-core --> <dependency> <groupId>org.apache.struts.xwork</groupId> <artifactId>xwork-core</artifactId> <version>2.3.32</version> </dependency> <!-- https://mvnrepository.com/artifact/ognl/ognl --> <dependency> <groupId>ognl</groupId> <artifactId>ognl</artifactId> <version>3.1.14</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <!-- https://mvnrepository.com/artifact/jstl/jstl --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> </dependencies> </project>
1.现在来看看struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="gzr" namespace="/" extends="struts-default"> <global-allowed-methods>regex:.*</global-allowed-methods> <action name="user_*" class="com.nsu.edu.action.UserAction" method="{1}"> <result name="loginSuccess">/index.jsp</result> <result name="loginFail">/login.jsp</result> <result name="edit">/edit.jsp</result> <result name="registerSuccess">/login.jsp</result> <result name="registerFail">/register.jsp</result> </action> </package> </struts>
你也可以像我一样
<global-allowed-methods>regex:.*</global-allowed-methods>这里使用regex:.*亲测有效.struts2.5dtd这个还是在struts-core.jar里面找到struts-default.xml里面拷出来。
*这里使用通配符,user_ method=”{1}” {1}这里是通配符
如果是user_login 会调用login方法
如果是user_*_* method=”{1}_{1}”
如果是user_test1_test2 会调用test1_test2方法**
2.现在来看UserAction
package com.nsu.edu.action; import java.util.List; import com.nsu.edu.model.User; import com.nsu.edu.service.UserService; import com.nsu.edu.service.impl.UserServiceImpl; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven<User>{ User user=new User(); UserService userService=new UserServiceImpl(); private String errorMessage; /** * 业务组件 * @return */ public String login(){ System.out.println(user.getName()+","+user.getPassword()); List<User> selectUserList=userService.login(user); if(selectUserList.size()==1){ return "loginSuccess"; } else{ errorMessage="用户名密码错了"; return "loginFail"; } } public String register(){ System.out.println(user.getName()+","+user.getPassword()); int count=userService.regist(user); if(count>0){ return "registerSuccess"; }else{ return "registerFail"; } } public String edit(){ return "edit"; } public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } @Override public User getModel() { // TODO Auto-generated method stub return user; } }
3.接下来看看数据库连接工具,你们链接自己的
package com.nsu.edu.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBHelper { private static final String DBDRIVER = "com.mysql.jdbc.Driver"; private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/javaweb"; private static final String USERNAME = "root"; private static final String PASSWORD = "123"; private Connection conn; public DBHelper() { try { Class.forName(DBDRIVER); conn = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public Connection getConnection(){ return this.conn; } public void close(){ if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
4.接下来就看看Dao层,没什么好解释的,很简单
package com.nsu.edu.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.nsu.edu.model.User; import com.nsu.edu.util.DBHelper; public class UserDao { private DBHelper dbHelper; private Connection connection; public UserDao() { dbHelper=new DBHelper(); // TODO Auto-generated constructor stub } /** * @param user * @return */ public List<User> selectUserByNameAndPassword(User user){ List<User> selectList=new ArrayList<User>(); String sql="select * from user where name=? and password=?"; try { connection=dbHelper.getConnection(); PreparedStatement preparedStatement=connection.prepareStatement(sql); preparedStatement.setString(1, user.getName()); preparedStatement.setString(2, user.getPassword()); ResultSet resultSet=preparedStatement.executeQuery(); while(resultSet.next()){ User selectUser=new User(resultSet.getInt("id"),resultSet.getString("name"),resultSet.getString("password")); selectList.add(selectUser); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally { closeConnection(); } return selectList; } public int addUser(User user){ String sql="insert into user(name,password) values(?,?)"; int count=0; try { connection=dbHelper.getConnection(); PreparedStatement preparedStatement=connection.prepareStatement(sql); preparedStatement.setString(1, user.getName()); preparedStatement.setString(2, user.getPassword()); count=preparedStatement.executeUpdate(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally { closeConnection(); } return count; } public void closeConnection() { if (connection != null) { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
5.这里还没用Spring,还是new吧。接下来是service层的代码
package com.nsu.edu.service; import java.util.List; import com.nsu.edu.model.User; public interface UserService { public List<User> login(User user); public int regist(User user); }
6.UserService写的是接口,现在写实现类
package com.nsu.edu.service.impl; import java.util.List; import com.nsu.edu.dao.UserDao; import com.nsu.edu.model.User; import com.nsu.edu.service.UserService; public class UserServiceImpl implements UserService{ private UserDao userDao; public UserServiceImpl() { userDao=new UserDao(); } @Override public List<User> login(User user) { // TODO Auto-generated method stub return userDao.selectUserByNameAndPassword(user); } @Override public int regist(User user) { // TODO Auto-generated method stub return userDao.addUser(user); } }
7.Mode层的User
package com.nsu.edu.model; public class User { private Integer id; private String name; private String password; public User() { super(); // TODO Auto-generated constructor stub } public User(Integer id, String name, String password) { this(); this.id = id; this.name = name; this.password = password; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
8.数据库建表的就不说了,很简单的,但是接的id列我设置了auto_increment.
9.下面是几个页面
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <c:if test="${errorMessage !=null}">${errorMessage }</c:if> <form action="user_login.action"> <input type="text" name="name" value="" /> <input type="password" name="password" value="" /> <button type="submit">登陆</button> </form> </body> </html>
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="user_register.action" method="post"> 姓名:<input type="text" name="name" /> 密码:<input type="password" name="password" /> <input type="submit" value="注册"/> </form> </body> </html>
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> index ${name } </body> </html>
以上就是全部的代码了,基本还是很简单的,记得使用通配符,真的好用,还有就是struts2.5版本记得配置allow-methods,低于2.5的就不用管了,还有就是昨晚写了会电脑就没电了(人傻钱多戴),eclipse还是有点问题的,刚开始写的我用tomcat编译感觉没有真的便宜,一直找不到方法,今早重启电脑看到报了两个错,但是昨晚没报错,真的坑。
有问题的下方留言。
相关文章推荐
- 【Struts2学习笔记】struts2.5使用通配符配置action跳转
- [Struts2 框架学习] Struts2.5 通配符动态方法调用问题
- 学习struts2建bbs总结五:使用jquery+ajax验证用户名是否存在以及struts效验信息不断重复的问题
- java struts2入门学习实例--用户注册和用户登录整合
- 基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验
- struts2--使用域模型完成注册的简单实例
- 【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录
- Struts2使用通配符完成方法和action的调用
- [struts2学习笔记] 第四节 学着使用struts 2的tag标签
- 三大框架学习之----struts2 通配符的使用(二)
- 【Struts2+Hibernate3+Spring3】利用SSH整合,完成打印用户表,用户登录、注册、修改密码系统
- 使用Struts2搭建登录注册示例
- java struts2入门学习实例--使用struts进行验证
- 达内学习日志Day50:使用SpringMVC完成登录操作
- 使用通配符完成struts2和spring多配置文件_悄悄俏俏
- struts学习:传统方法完成struts注册表单校验与回显数据
- [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤
- [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤
- Struts2.5版本方法无法使用通配符问题
- struts2学习笔记--------动态方法调用和使用通配符定义action