学习笔记1:Struts 2框架的搭建
来源:互联网 发布:广电网络多少钱一年 编辑:程序博客网 时间:2024/06/05 05:13
技术这个东西就是一个积累的过程,从现在其我要通过点滴的学习和积累,努力从IT小菜鸟成长为一个合格的计算机技术人员。
废话不多说,前几天学习了Struts,Spring和Spring JDBC搭建框架,在这里进行记录,为需要的人还有自己提供一点方便。
Struts 是第一步,可以通过web.xml,struts.xml等文件的配置,完成网站的框架的配置,和网页之间在不同条件下的切换。其实,在框架中,配置文件才是核心,也是比较容易出问题的。
我建立的文件目录和导入的包:
先看下web.xml,也是打开一个网站时,后台服务器首先查看的配置文件。
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>struts-cleanup</filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>Login.jsp</welcome-file> </welcome-file-list> </web-app>
如果需要配置其他信息的话,可以在网上查找web.xml的详细配置方式,但是请注意web.xml对于各种配置的顺序是有要求的。
通过web.xml文件中,welcome-file-list的配置,我们看到,打开网站首先看到的是Login.jsp网页。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s" %> <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'Login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>用户登录:</h1> <form action="example2/login.action" method="post"> <I><font face="楷体_GB2312" color="#FF0000"><s:fielderror /> </font> </I> <!-- 读取显示提示信息 --> <table align="left"> <tr> <td> 用户名: </td> <td><input type="text" name="login.userName"></td> </tr> <tr> <td> 密码:</td> <td><input type="password" name="login.password"></td> </tr> <tr> <s:submit value="注册"></s:submit> </tr> <tr> 还没有账号,现在<a href="javascript:deleteUser('${list.userid }')">注册</a> : </tr> </table> </form> </body></html>
另外一个网页是Register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s" %> <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'Register.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>用户注册:</h1> <form action="example/register.action" method="post"> <I><font face="楷体_GB2312" color="#FF0000"><s:fielderror /> </font> </I> <!-- 读取显示提示信息 --> <table> <tr> <td> ID: </td> <td><input type="text" name="user.id"></td> </tr> <tr> <td> 用户名: </td> <td><input type="text" name="user.userName"></td> </tr> <tr> <td> 密码:</td> <td><input type="password" name="user.password"></td> </tr> <tr> <td> 确认密码:</td> <td><input type="password" name="user.rePassword"> </td> </tr> <tr> <td colspan="2"> <s:submit value="注册"></s:submit> </td> </tr> </table> </form> </body></html>
还有两个网页作为返回的结果。
Congratulation.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'Congratulation.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> congratulations!${user.userName} <br> Your id is ${user.id}<br><br> </body></html>
Welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'Welcome.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> congratulations!${user.userName} <br> </body></html>
Struts 2框架中,另外一个核心的配置文件就是struts.xml文件,这类文件可以只是一个文件,也可以是一系列文件,一定注意文件名的书写,不要出错。
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.multipart.maxSize" value="10000000000" /> <constant name="struts.multipart.saveDir" value="/tmp" /> <!-- 登陆 --> <include file="struts-example.xml"/> <include file="struts-example2.xml"/></struts>
struts-example.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="example" namespace="/example" extends="struts-default"> <action name="register" class="org.kingtoon.action.RegisterAction" method="examplEexecute"> <result name="success">/Congratulation.jsp</result> <result name="input">/Register.jsp</result> </action> </package></struts>
struts-example2.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="example2" namespace="/example2" extends="struts-default"> <action name="login" class="org.kingtoon.action.LoginAction" method="examplEexecute"> <result name="success">/Welcome.jsp</result> <result name="input">/Login.jsp</result> </action> </package></struts>
从这些文件中,定义了两个action,通过jsp文件中的标签链接,将jsp文件的表单提交给action文件和action-validation文件
LoginAction.java
package org.kingtoon.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.kingtoon.bean.User; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private User user; public String examplEexecute() throws Exception { if(!user.getUserName().endsWith("root")&&!user.getPassword().endsWith("1234567890")){ this.addActionMessage("鐧诲綍澶辫触锛岀敤鎴峰悕鎴栧瘑鐮侀敊璇紒"); return "input"; } else{ HttpServletRequest request = ServletActionContext.getRequest (); request.setAttribute("user", user); return SUCCESS; } } }
RegisterAction.jsp
package org.kingtoon.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.kingtoon.bean.User; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport { private User user; public String examplEexecute() throws Exception { if(!(user.getPassword().equals(user.getRePassword()))){ this.addFieldError("password", "两次输入的密码不同 "); return "input"; } else{ HttpServletRequest request = ServletActionContext.getRequest (); request.setAttribute("user", user); return SUCCESS; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
两个action类里,对前台的操作进行一起判断和操作。action是对jsp最先进行操作的,如果有validation文件,先在这个文件中,进行验证,一般是对格式等进行检验。也可以不写这个文件,这些验证可以放到action类里。
LoginAction-validation.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="user.userName"> <!-- 验证字符串不能为空 --> <field-validator type="requiredstring"> <!-- 去空格 --> <param name="trim">true</param> <!-- 错误提示信息 --> <message>未输入用户名!</message> </field-validator> <!-- 验证字符串长度 --> <field-validator type="stringlength"> <param name="minLength">2</param> <param name="maxLength">20</param> <message>用户名格式错误!</message> </field-validator> </field> <field name="user.password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>未输入密码!</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">18</param> <message>密码格式错误!</message> </field-validator> </field> </validators>
RegisterAction-validation.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <validators> <field name="user.userName"> <!-- 验证字符串不能为空 --> <field-validator type="requiredstring"> <!-- 去空格 --> <param name="trim">true</param> <!-- 错误提示信息 --> <message>用户名不能为空</message> </field-validator> <!-- 验证字符串长度 --> <field-validator type="stringlength"> <param name="minLength">2</param> <param name="maxLength">20</param> <message>用户名长度应在2到18个字符间</message> </field-validator> </field> <field name="user.password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>密码不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">18</param> <message>密码长度应在6到18个字符之间</message> </field-validator> </field> </validators>
差点忘记Java最核心的一个类User.java
package org.kingtoon.bean; import java.text.DateFormat;import java.util.Date; public class User { private int id; private String userName; private String password; private String rePassword; private String CreateTime; public int getid() { return id; } public void setid(int id) { this.id= id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRePassword() { return rePassword; } public void setRePassword(String rePassword) { this.rePassword = rePassword; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName=userName; } public String getCreateTime(){ return CreateTime; } public void setCreateTime(){ Date now = new Date(); DateFormat d1 = DateFormat.getDateInstance(); CreateTime = d1.format(now); }}
原创日志,请勿转载。
- 学习笔记1:Struts 2框架的搭建
- struts框架的搭建
- Struts框架学习笔记
- Struts学习总结(一)---搭建Struts框架
- struts 2框架项目的搭建
- Struts 1 Validator框架学习笔记
- struts学习笔记-----环境搭建
- struts的学习笔记-1
- 关于struts 2框架的个人笔记
- 【J2EE】struts 2框架搭建
- struts学习——框架搭建
- 1、Struts框架学习
- Struts框架学习1
- struts 2 学习笔记 1
- Struts 2 学习笔记1
- Java学习笔记(六)之―搭建Spring、Struts、Hibernate框架
- ssh学习笔记一:struts框架学习
- struts+spring+hibernate基本项目框架的搭建(2)
- eclipse log过滤
- IOS开发相关链接
- QListWidget用法小结
- 网络安全资料
- Android 线程的C++封装,使用
- 学习笔记1:Struts 2框架的搭建
- python爬虫实战(关于工作中遇到的问题)
- No enclosing instance of type Demo06 is accessible.
- 迷信的原因之我见
- 启动Tomcat报错java.lang.IllegalArgumentException
- 欢迎使用CSDN-markdown编辑器
- clearfix的用法
- 自定义NSSearchField光标颜色
- 使用ThinkPHP框架快速搭建网站