一、日志配件
jeecms的日志中间件采用的是logback,一个江湖传闻性能优于log4j的家伙,因为我并没有针对这个问题进行过测试,其程序中的日志方法支持参数化到是蛮方便的。
jeecms中的logback配置文件是logback.xml,在classes包中。为了方便二次开发调试方便,重点位置我以红色标出,修改如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="e:/workspace/ibscms" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{HH:mm:ss.SSS} %-5level %logger{80} - %msg%n</Pattern>
</encoder>
</appender>
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/logs/mylog.txt</file>
<!-- <file>./logs/mylog.txt</file> -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_HOME}/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log</fileNamePattern>
<!-- <fileNamePattern>./logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log</fileNamePattern> -->
<maxHistory>5</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n</pattern>
</encoder>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="STDOUT" />
<appender-ref ref="ROLLING" />
</root>
</configuration>
二、数据源更换
配置application-context.xml文件关于数据源的描述即可,并打开druid内置监控界面,如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="filters" value="stat" />
</bean>
web.xml
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
三、后台地址更换
web.xml
<servlet-mapping>
<servlet-name>JeeCmsAdmin</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
jeecms-servlet-admin.xml
<bean id="adminContextInterceptor" class="com.jeecms.cms.web.AdminContextInterceptor">
<!--<property name="adminId" value="1"/> -->
<property name="auth" value="true" />
<property name="loginUrl" value="/admin/login.do" />
<property name="returnUrl" value="/admin/index.do" />
<property name="excludeUrls">
<list>
<value>/login.do</value>
<value>/logout.do</value>
</list>
</property>
</bean>
<!--在FCK编辑器中需要用到appBase,以确定connector路径。 -->
<entry key="appBase" value="/admin" />
AdminContextInterceptor.java
/**
* 获得第三个路径分隔符的位置
*
* @param request
* @throws IllegalStateException
* 访问路径错误,没有三(四)个'/'
*/
private static String getURI(HttpServletRequest request) throws IllegalStateException {
UrlPathHelper helper = new UrlPathHelper();
String uri = helper.getOriginatingRequestUri(request);
String ctxPath = helper.getOriginatingContextPath(request);
int start = 0, i = 0, count = 1;
// int start = 0, i = 0, count = 2;
if (!StringUtils.isBlank(ctxPath)) {
count++;
}
while (i < count && start != -1) {
start = uri.indexOf('/', start + 1);
i++;
}
if (start <= 0) {
throw new IllegalStateException("admin access path not like '/admin/...' pattern: "
+ uri);
// throw new
// IllegalStateException("admin access path not like '/jeeadmin/jspgou/...' pattern: "+
// uri);
}
return uri.substring(start);
}
CmsLoginAct.java
@RequestMapping(value = "/login.do", method = RequestMethod.POST)
public String submit(String username,
String password,
String captcha,
String processUrl,
String returnUrl,
String message,
HttpServletRequest request,
HttpServletResponse response,
ModelMap model) {
Integer errorRemaining = unifiedUserMng.errorRemaining(username);
WebErrors errors = validateSubmit(username,
password,
captcha,
errorRemaining,
request,
response);
if (!errors.hasErrors()) {
try {
String ip = RequestUtils.getIpAddr(request);
Authentication auth = authMng.login(username,
password,
ip,
request,
response,
session);
// 是否需要在这里加上登录次数的更新?按正常的方式,应该在process里面处理的,不过这里处理也没大问题。
cmsUserMng.updateLoginInfo(auth.getUid(), ip);
CmsUser user = cmsUserMng.findById(auth.getUid());
if (user.getDisabled()) {
// 如果已经禁用,则退出登录。
authMng.deleteById(auth.getId());
session.logout(request, response);
throw new DisabledException("user disabled");
}
removeCookieErrorRemaining(request, response);
String view = getView(processUrl, returnUrl, auth.getId());
cmsLogMng.loginSuccess(request, user, "login.log.loginSuccess");
if (view != null) {
return view;
} else {
return "redirect:index.do";
// return "redirect:login.jspx";
}
}
catch (UsernameNotFoundException e) {
errors.addErrorString(e.getMessage());
cmsLogMng.loginFailure(request, "login.log.loginFailure", "username="
+ username
+ ";password="
+ password);
}
catch (BadCredentialsException e) {
errors.addErrorString(e.getMessage());
cmsLogMng.loginFailure(request, "login.log.loginFailure", "username="
+ username
+ ";password="
+ password);
}
catch (DisabledException e) {
errors.addErrorString(e.getMessage());
cmsLogMng.loginFailure(request, "login.log.loginFailure", "username="
+ username
+ ";password="
+ password);
}
}
// 登录失败
writeCookieErrorRemaining(errorRemaining, request, response, model);
errors.toModel(model);
if (!StringUtils.isBlank(processUrl)) {
model.addAttribute(PROCESS_URL, processUrl);
}
if (!StringUtils.isBlank(returnUrl)) {
model.addAttribute(RETURN_URL, returnUrl);
}
if (!StringUtils.isBlank(message)) {
model.addAttribute(MESSAGE, message);
}
return "login";
}
四、采集功能体验
内容地址集、内容地址是内容索引页,标题和内容就是具体的内容页面了。
分享到:
相关推荐
在这个特定的"JEECMS V6后台地址修改懒人包"中,主要关注的是如何安全地更改系统的后台管理入口,以增加系统的安全性。 在默认情况下,JEECMS的后台管理URL通常是 `/admin`,这种设定容易被潜在的攻击者探测到,...
jeecms v9.3 正式版 源码包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日...
### JEECMS 2012 系统使用手册...以上总结了JEECMS 2012系统使用手册的关键知识点,涵盖了从系统特性到后台管理、标签说明等多个方面。对于初次接触JEECMS的用户而言,这些信息有助于快速理解和掌握该系统的使用方法。
- **JEECMS**:是一款基于Java EE技术构建的网站管理系统,它利用Java的强大特性,如稳定性、安全性、高效性和跨平台性,为用户提供了一个强大且灵活的建站工具。 - **技术架构**:采用了当时主流的技术栈,包括...
JEECMS是一款基于Java技术构建的内容管理系统(Content Management System, CMS),适用于多种网站应用场景,包括但不限于新闻资讯、企业门户等。本文档针对JEECMS V7版本的数据字典进行详细解读,帮助开发人员和维护...
详细介绍 – [ jeecms X1.4.1 正式版 源码包 ] jeecms X1.4.1 正式版 源码包 更新日志 1、修复了一些已知问题 JEECMS简介 JEECMS 是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。...
2. **运行错误**:查看系统日志,定位错误原因,如数据库连接问题、类路径问题等。 3. **性能瓶颈**:分析系统性能瓶颈,可能涉及数据库优化、服务器配置调整等。 以上是JEECMS V6系统的基本使用指南,通过熟悉这些...
- **用户体验改善**:对后台管理界面进行了优化,提高操作便捷性和易用性。 ### 3. Jeecms源码分析 压缩包中的`jeecms9.2-src`文件包含了Jeecms V9.2的源代码,这对于开发者来说是宝贵的资源。通过阅读和研究源码...