strusts经典笔记之韩顺平文档格式.docx
- 文档编号:21438518
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:16
- 大小:23.48KB
strusts经典笔记之韩顺平文档格式.docx
《strusts经典笔记之韩顺平文档格式.docx》由会员分享,可在线阅读,更多相关《strusts经典笔记之韩顺平文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
<
url-pattern>
/*<
/url-pattern>
/filter-mapping>
上面这次比较浪费资源每次都要去实例化但是下面这种过滤器不太彻底,往数据库里插入数据时还是会经常出现乱码
privateStringencoding;
//arg0.setCharacterEncoding("
//arg1.setCharacterEncoding("
arg0.setCharacterEncoding(encoding);
publicvoidinit(FilterConfigarg0)throwsServletException{
encoding=arg0.getInitParameter("
encoding"
}
然后在web.xml中加入
init-param>
param-name>
encoding<
/param-name>
param-value>
GB2312<
/param-value>
/init-param>
配置struts-config.xml
?
xmlversion="
1.0"
encoding="
UTF-8"
>
web-appversion="
2.5"
xmlns="
xmlns:
xsi="
http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
servlet>
servlet-name>
action<
/servlet-name>
servlet-class>
org.apache.struts.action.ActionServlet<
/servlet-class>
config<
/WEB-INF/struts-config.xml<
debug<
2<
detail<
load-on-startup>
/load-on-startup>
/servlet>
servlet-mapping>
*.action<
/servlet-mapping>
写一个关于安全性的过滤器,用于过滤一些用户注册使用的关键字
privateStringkeywords[];
Stringusername=arg0.getParameter("
username"
System.out.println("
thisissafefilter!
"
System.out.println(username);
if(username!
=null){
for(Stringkey:
keywords){
if(key.equals(username)){
arg0.setAttribute("
err"
username+"
被第二个管理安全的过滤器拦截了"
arg0.getRequestDispatcher("
/WEB-INF/tishi.jsp"
).forward(arg0,arg1);
return;
}
}
}
}
publicvoidinit(FilterConfigarg0)throwsServletException{
keywords=arg0.getInitParameter("
keywords"
).split("
;
然后在web.xml配置过滤器还有设置要过滤的关键字
keywords<
xiaomao;
xiaoxiao<
每个action是单态的,包括actionserver,对网站并发性有影响若要证明的话在***action.java中声明一个静态变量,每次访问自加
什么是单态:
单态是指在整个运行过程中,始终是一个对象;
struts-config.xml默认放在WEB-INF目录下,也可以放到其他地方,只需要在web.xml中的
有多个struts-config.xml只需用"
"
号隔开
java中插入数据库的语句需要注意标点st.executeUpdate("
insertintouser(username,password)values("
+"
'
+u.getUsername()+"
+u.getPassword()+"
)"
jstl(jspstartandtagliblary)jsp标准标签库:
可以提高开发速度,代码简洁
升级jsp页面<
!
DOCTYPEHTMLPUBLIC"
-//W3C//DTDXHTML1.0Transitional//EN"
//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
替换8.5myeclipse:
D:
\Program\Files\Myeclipse\Common\plugins\com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar\templates\jsp\jsp.vtl的
6.5myeclipse:
\ProgramFiles\MyEclipse6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.wizards_6.5.0.zmyeclipse650200806\templates\jsp
-//W3C//DTDHTML4.01Transitional//EN"
这样比较符合现在的开发潮流
各个jstl标签
c:
out>
:
outvalue="
helloworld"
/c:
${username}"
default="
没有值"
escapeXml="
false"
>
等同于request.getAttribute("
user"
).toString();
escapeXml表示是否安装html样式显示默认是true:
表示以文本显示
如何输出request,session,application,pageContext域对象的数据
%
request.setAttribute("
hello"
request你好!
session.setAttribute("
session你好!
application.setAttribute("
application你好"
pageContext.setAttribute("
pageContext你们<
ahref='
XX<
/a>
%>
这里有个优先级的问题,pageContext>
request>
session>
application
${hello}"
如果是在同一个页面,那么这段代码输出pageContext你们好XX
%
Useru=newUser();
u.setUsername("
admin"
u.setPassword("
u);
${user.username}"
||<
${user.password}"
相当于(User)request.setAttribute("
).getUsername();
set>
setvar="
abc"
value="
中国,北京"
scope="
request"
${abc}"
/>
removevar="
移除之后中国北京将不再显示
catch>
catchvar="
%inti=3/0;
${err.message}"
iftest="
${2<
30?
true:
false}"
ok<
if>
a"
age"
22"
判断字符串:
${a=='
hello'
}"
hello
判断数值
${age>
12andage<
30orage==22}"
年龄大于12小于30${age}
ArrayList<
User>
al=newArrayList<
();
Useru1=newUser();
u1.setUsername("
陈超"
u1.setPassword("
tiger"
Useru2=newUser();
u2.setUsername("
system"
u2.setPassword("
manager"
al.add(u1);
al.add(u2);
request.setAttribute("
alluser"
al);
forEachitems="
${alluser}"
var="
u"
${u.username}
${u.password}<
br/>
forEach>
第一种迭代
forEachvar="
i"
begin="
1"
end="
10"
${i}&
nbsp;
&
第二种迭代
step="
3"
br/>
用于分隔字符:
forTokensitems="
11;
33;
44;
52;
delims="
temp"
${temp}<
forTokens>
什么时候用$符,什么时候不用$
如果是从某个域对象中取出值,取的是一个变量就要用$,取的是一个固定的值就不要$
第一种:
Window.open();
这种方式比较慢
第二种:
window.location.href=”/web应用名/goManager?
pageNow=”+pageNow
${pageNow>
1}"
前一页:
ahref=”/web应用名/goManager?
pageNow=${pageNow-1}”>
当前页:
ahref="
/web应用名/gotoManage?
pageNow=${i}"
[${i}]<
${pageNow<
pageCount}"
后一页:
pageNow=${pageNow+1}”>
当前页${pageNow}/总页数${pageCount}跳转到<
inputtype="
button"
id="
pageNow"
name="
跳"
Mapmap=newHashMap();
//map.put("
aa"
//map.put("
bb"
scott"
xiaoming"
map.put("
u1"
u1);
u2"
u2);
person"
map);
${person}"
per"
key:
${per.key}值name:
${per.value.username}值password:
${per.value.password}<
Setset=newHashSet();
Useru3=newUser();
u3.setUsername("
u3.setPassword("
set.add(u3);
setuser"
set);
${setuser}"
myusers"
值name:
${myusers.username}值password:
${myusers.password}<
${!
emptysetuser}"
有人<
重定向:
redirecturl="
import标签:
importurl="
a.jsp"
paramname="
name"
import>
Strtus标签:
html:
baseref="
#"
goto<
如果没有给超链接设置则默认跳到XX(如上)
imagesrc="
images/chadu.png"
/html:
image>
这是一个图片按钮
imgsrc="
这是真真正正的一i张图片
bean标签:
用于输出信息
Useru1=newUser();
u1.setUsername("
u1.setPassword("
bean:
writename="
property="
/bean:
write>
另外还有两种创建bean的方法,但是用的不多
defineid="
define>
jsp:
useBeanid="
class="
com.chao98.forms.User"
/jsp:
useBean>
setPropertyname="
chenchao"
Logic标签:
logic标签使用
ac"
ab"
al.add(u3);
users"
logic:
iterateid="
password"
/logic:
iterate>
emptyname="
ee"
属性不存在
empty>
notEmptyname="
users属性存在
notEmpty>
greaterThanvalue="
20"
年龄大于二十
greaterThan>
标签的选择:
通常会选择el表达式$
opStruts第23讲:
开发struts的用户管理系统
Createtableusers(
Idintprimarykey,
Namevarchar(20)notnull,
Pwdvarchar(30
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- strusts 经典 笔记 顺平